mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	- Removed duplicated checks for DD possibility - Moved most of spell-specific code from AdventureMapInterface to library code - AdventureSpellMechanics class now provides methods to check whether spellcast is possible, similarly to battle spells - If it is not possible to cast adventure map spell (e.g. no mana or no move points) game will show infowindow immediately on clicking spellbook instead of on cast attempt - If hero does not have movement points for a DD, game will show correct error message - Added game settings 'dimensionDoorFailureSpendsPoints' due to discovered H3 logic
		
			
				
	
	
		
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * GameSettings.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
 | |
|  *
 | |
|  */
 | |
| #pragma once
 | |
| 
 | |
| VCMI_LIB_NAMESPACE_BEGIN
 | |
| 
 | |
| class JsonNode;
 | |
| 
 | |
| enum class EGameSettings
 | |
| {
 | |
| 	BONUSES_GLOBAL,
 | |
| 	BONUSES_PER_HERO,
 | |
| 	COMBAT_ATTACK_POINT_DAMAGE_FACTOR,
 | |
| 	COMBAT_ATTACK_POINT_DAMAGE_FACTOR_CAP,
 | |
| 	COMBAT_BAD_LUCK_DICE,
 | |
| 	COMBAT_BAD_MORALE_DICE,
 | |
| 	COMBAT_DEFENSE_POINT_DAMAGE_FACTOR,
 | |
| 	COMBAT_DEFENSE_POINT_DAMAGE_FACTOR_CAP,
 | |
| 	COMBAT_GOOD_LUCK_DICE,
 | |
| 	COMBAT_GOOD_MORALE_DICE,
 | |
| 	CREATURES_ALLOW_ALL_FOR_DOUBLE_MONTH,
 | |
| 	CREATURES_ALLOW_RANDOM_SPECIAL_WEEKS,
 | |
| 	CREATURES_DAILY_STACK_EXPERIENCE,
 | |
| 	CREATURES_WEEKLY_GROWTH_CAP,
 | |
| 	CREATURES_WEEKLY_GROWTH_PERCENT,
 | |
| 	DWELLINGS_ACCUMULATE_WHEN_NEUTRAL,
 | |
| 	DWELLINGS_ACCUMULATE_WHEN_OWNED,
 | |
| 	DWELLINGS_MERGE_ON_RECRUIT,
 | |
| 	HEROES_PER_PLAYER_ON_MAP_CAP,
 | |
| 	HEROES_PER_PLAYER_TOTAL_CAP,
 | |
| 	HEROES_RETREAT_ON_WIN_WITHOUT_TROOPS,
 | |
| 	HEROES_STARTING_STACKS_CHANCES,
 | |
| 	HEROES_BACKPACK_CAP,
 | |
| 	HEROES_TAVERN_INVITE,
 | |
| 	MARKETS_BLACK_MARKET_RESTOCK_PERIOD,
 | |
| 	BANKS_SHOW_GUARDS_COMPOSITION,
 | |
| 	MODULE_COMMANDERS,
 | |
| 	MODULE_STACK_ARTIFACT,
 | |
| 	MODULE_STACK_EXPERIENCE,
 | |
| 	TEXTS_ARTIFACT,
 | |
| 	TEXTS_CREATURE,
 | |
| 	TEXTS_FACTION,
 | |
| 	TEXTS_HERO,
 | |
| 	TEXTS_HERO_CLASS,
 | |
| 	TEXTS_OBJECT,
 | |
| 	TEXTS_RIVER,
 | |
| 	TEXTS_ROAD,
 | |
| 	TEXTS_SPELL,
 | |
| 	TEXTS_TERRAIN,
 | |
| 	MAP_FORMAT_RESTORATION_OF_ERATHIA,
 | |
| 	MAP_FORMAT_ARMAGEDDONS_BLADE,
 | |
| 	MAP_FORMAT_SHADOW_OF_DEATH,
 | |
| 	MAP_FORMAT_HORN_OF_THE_ABYSS,
 | |
| 	MAP_FORMAT_JSON_VCMI,
 | |
| 	MAP_FORMAT_IN_THE_WAKE_OF_GODS,
 | |
| 	PATHFINDER_USE_BOAT,
 | |
| 	PATHFINDER_IGNORE_GUARDS,
 | |
| 	PATHFINDER_USE_MONOLITH_TWO_WAY,
 | |
| 	PATHFINDER_USE_MONOLITH_ONE_WAY_UNIQUE,
 | |
| 	PATHFINDER_USE_MONOLITH_ONE_WAY_RANDOM,
 | |
| 	PATHFINDER_USE_WHIRLPOOL,
 | |
| 	PATHFINDER_ORIGINAL_FLY_RULES,
 | |
| 	TOWNS_BUILDINGS_PER_TURN_CAP,
 | |
| 	TOWNS_STARTING_DWELLING_CHANCES,
 | |
| 	COMBAT_ONE_HEX_TRIGGERS_OBSTACLES,
 | |
| 	DIMENSION_DOOR_ONLY_TO_UNCOVERED_TILES,
 | |
| 	DIMENSION_DOOR_EXPOSES_TERRAIN_TYPE,
 | |
| 	DIMENSION_DOOR_FAILURE_SPENDS_POINTS,
 | |
| 	DIMENSION_DOOR_TRIGGERS_GUARDS,
 | |
| 	DIMENSION_DOOR_TOURNAMENT_RULES_LIMIT,
 | |
| 
 | |
| 	OPTIONS_COUNT
 | |
| };
 | |
| 
 | |
| class DLL_LINKAGE IGameSettings
 | |
| {
 | |
| public:
 | |
| 	virtual const JsonNode & getValue(EGameSettings option) const = 0;
 | |
| 	virtual ~IGameSettings() = default;
 | |
| 
 | |
| 	bool getBoolean(EGameSettings option) const;
 | |
| 	int64_t getInteger(EGameSettings option) const;
 | |
| 	double getDouble(EGameSettings option) const;
 | |
| 	std::vector<int> getVector(EGameSettings option) const;
 | |
| };
 | |
| 
 | |
| class DLL_LINKAGE GameSettings final : public IGameSettings, boost::noncopyable
 | |
| {
 | |
| 	std::vector<JsonNode> gameSettings;
 | |
| 
 | |
| public:
 | |
| 	GameSettings();
 | |
| 	~GameSettings();
 | |
| 
 | |
| 	void load(const JsonNode & input);
 | |
| 	const JsonNode & getValue(EGameSettings option) const override;
 | |
| 
 | |
| 	template<typename Handler>
 | |
| 	void serialize(Handler & h)
 | |
| 	{
 | |
| 		h & gameSettings;
 | |
| 	}
 | |
| };
 | |
| 
 | |
| VCMI_LIB_NAMESPACE_END
 |