mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-29 23:07:48 +02:00
Large changeset, first part of editing H3 objects via mods feature. Changes:
- loading of all objects (including H3 objects) will be directed by mod handlers - common base for all handlers accessible from mod system (IHanderBase) - json format changes: use struct with string ID's instead of vector - fixed some gcc/clang errors and warnings - fixed several cases of memory leaks and invalid memory access (mostly related to usage of bonus system and/or identifiers resolution) Note that right now loading is much slower than before due to excessive json validation (or not fast enough validator)
This commit is contained in:
40
lib/IHandlerBase.h
Normal file
40
lib/IHandlerBase.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* IHandlerBase.h, part of VCMI engine
|
||||
*
|
||||
* Authors: listed in file AUTHORS in main folder
|
||||
*
|
||||
* License: GNU General Public License v2.0 or later
|
||||
* Full text of license available in license.txt file, in main folder
|
||||
*
|
||||
*/
|
||||
|
||||
class JsonNode;
|
||||
|
||||
/// base class for all handlers that can be accessed from mod system
|
||||
class DLL_LINKAGE IHandlerBase
|
||||
{
|
||||
// there also should be private member with such signature:
|
||||
// Object * loadFromJson(const JsonNode & json);
|
||||
// where Object is type of data loaded by handler
|
||||
// primary used in loadObject methods
|
||||
|
||||
public:
|
||||
/// loads all original game data in vector of json nodes
|
||||
/// dataSize - is number of items that must be loaded (normally - constant from GameConstants)
|
||||
virtual std::vector<JsonNode> loadLegacyData(size_t dataSize) = 0;
|
||||
|
||||
/// loads single object into game. Scope is namespace of this object, same as name of source mod
|
||||
virtual void loadObject(std::string scope, std::string name, const JsonNode & data) = 0;
|
||||
virtual void loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) = 0;
|
||||
|
||||
/**
|
||||
* Gets a list of objects that are allowed by default on maps
|
||||
*
|
||||
* @return a list of allowed objects, the index is the object id
|
||||
*/
|
||||
virtual std::vector<bool> getDefaultAllowed() const = 0;
|
||||
|
||||
virtual ~IHandlerBase(){}
|
||||
};
|
||||
Reference in New Issue
Block a user