| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * BattleFieldHandler.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
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <vcmi/EntityService.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-15 12:06:54 +04:00
										 |  |  | #include <vcmi/Entity.h>
 | 
					
						
							| 
									
										
										
										
											2023-05-01 20:29:53 +03:00
										 |  |  | #include "bonuses/Bonus.h"
 | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | #include "GameConstants.h"
 | 
					
						
							|  |  |  | #include "IHandlerBase.h"
 | 
					
						
							|  |  |  | #include "battle/BattleHex.h"
 | 
					
						
							| 
									
										
										
										
											2023-08-23 15:07:50 +03:00
										 |  |  | #include "filesystem/ResourcePath.h"
 | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-26 16:07:42 +03:00
										 |  |  | VCMI_LIB_NAMESPACE_BEGIN | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | class BattleFieldInfo : public EntityT<BattleField> | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	BattleField battlefield; | 
					
						
							|  |  |  | 	std::vector<std::shared_ptr<Bonus>> bonuses; | 
					
						
							|  |  |  | 	bool isSpecial; | 
					
						
							| 
									
										
										
										
											2023-08-23 15:07:50 +03:00
										 |  |  | 	ImagePath graphics; | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 	std::string name; | 
					
						
							| 
									
										
										
										
											2024-01-05 15:58:25 +02:00
										 |  |  | 	std::string modScope; | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 	std::string identifier; | 
					
						
							|  |  |  | 	std::string icon; | 
					
						
							|  |  |  | 	si32 iconIndex; | 
					
						
							|  |  |  | 	std::vector<BattleHex> impassableHexes; | 
					
						
							| 
									
										
										
										
											2024-07-15 21:46:23 +00:00
										 |  |  | 	AudioPath openingSoundFilename; | 
					
						
							|  |  |  | 	AudioPath musicFilename; | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	BattleFieldInfo()  | 
					
						
							|  |  |  | 		: BattleFieldInfo(BattleField::NONE, "") | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-18 00:11:16 +03:00
										 |  |  | 	BattleFieldInfo(BattleField battlefield, std::string identifier): | 
					
						
							|  |  |  | 		isSpecial(false), | 
					
						
							|  |  |  | 		battlefield(battlefield), | 
					
						
							|  |  |  | 		identifier(identifier), | 
					
						
							|  |  |  | 		iconIndex(battlefield.getNum()), | 
					
						
							|  |  |  | 		name(identifier) | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 	{ | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	int32_t getIndex() const override; | 
					
						
							|  |  |  | 	int32_t getIconIndex() const override; | 
					
						
							| 
									
										
										
										
											2023-01-18 23:56:01 +02:00
										 |  |  | 	std::string getJsonKey() const override; | 
					
						
							| 
									
										
										
										
											2024-08-10 16:08:04 +02:00
										 |  |  | 	std::string getModScope() const override; | 
					
						
							| 
									
										
										
										
											2023-01-18 23:56:01 +02:00
										 |  |  | 	std::string getNameTextID() const override; | 
					
						
							|  |  |  | 	std::string getNameTranslated() const override; | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 	void registerIcons(const IconRegistar & cb) const override; | 
					
						
							|  |  |  | 	BattleField getId() const override; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DLL_LINKAGE BattleFieldService : public EntityServiceT<BattleField, BattleFieldInfo> | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BattleFieldHandler : public CHandlerBase<BattleField, BattleFieldInfo, BattleFieldInfo, BattleFieldService> | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2024-05-16 22:05:51 +00:00
										 |  |  | 	std::shared_ptr<BattleFieldInfo> loadFromJson( | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | 		const std::string & scope, | 
					
						
							|  |  |  | 		const JsonNode & json, | 
					
						
							|  |  |  | 		const std::string & identifier, | 
					
						
							|  |  |  | 		size_t index) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-13 15:21:30 +01:00
										 |  |  | 	const std::vector<std::string> & getTypeNames() const override; | 
					
						
							|  |  |  | 	std::vector<JsonNode> loadLegacyData() override; | 
					
						
							| 
									
										
										
										
											2022-06-28 11:05:30 +03:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2022-07-26 16:07:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | VCMI_LIB_NAMESPACE_END |