mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| /*
 | |
|  * CGeneralTextHandler.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 CInputStream;
 | |
| 
 | |
| /// Parser for any text files from H3
 | |
| class CLegacyConfigParser
 | |
| {
 | |
| 	std::unique_ptr<char[]> data;
 | |
| 	char * curr;
 | |
| 	char * end;
 | |
| 
 | |
| 	void init(const std::unique_ptr<CInputStream> & input);
 | |
| 
 | |
| 	/// extracts part of quoted string.
 | |
| 	std::string extractQuotedPart();
 | |
| 
 | |
| 	/// extracts quoted string. Any end of lines are ignored, double-quote is considered as "escaping"
 | |
| 	std::string extractQuotedString();
 | |
| 
 | |
| 	/// extracts non-quoted string
 | |
| 	std::string extractNormalString();
 | |
| 
 | |
| public:
 | |
| 	/// read one entry from current line. Return ""/0 if end of line reached
 | |
| 	std::string readString();
 | |
| 	float readNumber();
 | |
| 
 | |
| 	template <typename numeric>
 | |
| 	std::vector<numeric> readNumArray(size_t size)
 | |
| 	{
 | |
| 		std::vector<numeric> ret;
 | |
| 		ret.reserve(size);
 | |
| 		while (size--)
 | |
| 			ret.push_back(readNumber());
 | |
| 		return ret;
 | |
| 	}
 | |
| 
 | |
| 	/// returns true if next entry is empty
 | |
| 	bool isNextEntryEmpty();
 | |
| 
 | |
| 	/// end current line
 | |
| 	bool endLine();
 | |
| 
 | |
| 	CLegacyConfigParser(std::string URI);
 | |
| 	CLegacyConfigParser(const std::unique_ptr<CInputStream> & input);
 | |
| };
 | |
| 
 | |
| class DLL_LINKAGE CGeneralTextHandler //Handles general texts
 | |
| {
 | |
| public:
 | |
| 	std::vector<std::string> allTexts;
 | |
| 
 | |
| 	std::vector<std::string> arraytxt;
 | |
| 	std::vector<std::string> primarySkillNames;
 | |
| 	std::vector<std::string> jktexts;
 | |
| 	std::vector<std::string> heroscrn;
 | |
| 	std::vector<std::string> overview;//text for Kingdom Overview window
 | |
| 	std::vector<std::string> colors; //names of player colors ("red",...)
 | |
| 	std::vector<std::string> capColors; //names of player colors with first letter capitalized ("Red",...)
 | |
| 	std::vector<std::string> turnDurations; //turn durations for pregame (1 Minute ... Unlimited) 
 | |
| 
 | |
| 	//towns
 | |
| 	std::vector<std::string> tcommands, hcommands, fcommands; //texts for town screen, town hall screen and fort screen
 | |
| 	std::vector<std::string> tavernInfo;
 | |
| 
 | |
| 	std::vector<std::pair<std::string,std::string> > zelp;
 | |
| 	std::vector<std::string> lossCondtions;
 | |
| 	std::vector<std::string> victoryConditions;
 | |
| 
 | |
| 	//objects
 | |
| 	std::vector<std::string> names; //vector of objects; i-th object in vector has subnumber i
 | |
| 	std::vector<std::string> creGens; //names of creatures' generators
 | |
| 	std::vector<std::string> creGens4; //names of multiple creatures' generators
 | |
| 	std::vector<std::string> advobtxt;
 | |
| 	std::vector<std::string> xtrainfo;
 | |
| 	std::vector<std::string> restypes; //names of resources
 | |
| 	std::vector<std::string> terrainNames;
 | |
| 	std::vector<std::string> randsign;
 | |
| 	std::vector<std::pair<std::string,std::string> > mines; //first - name; second - event description
 | |
| 	std::vector<std::string> seerEmpty;
 | |
| 	std::vector <std::vector <std::vector <std::string> > >  quests; //[quest][type][index]
 | |
| 	//type: quest, progress, complete, rollover, log OR time limit //index: 0-2 seer hut, 3-5 border guard
 | |
| 	std::vector<std::string> seerNames;
 | |
| 	std::vector<std::string> tentColors;
 | |
| 	std::vector<std::string> threat; //power rating for neutral stacks
 | |
| 
 | |
| 	//sec skills
 | |
| 	std::vector <std::string>  skillName;
 | |
| 	std::vector <std::vector <std::string> > skillInfoTexts; //[id][level] : level 0 - basic; 2 - advanced
 | |
| 	std::vector<std::string> levels;
 | |
| 	std::vector<std::string> zcrexp; //more or less useful content of that file
 | |
| 
 | |
| 	//campaigns
 | |
| 	std::vector <std::string> campaignMapNames;
 | |
| 	std::vector < std::vector <std::string> > campaignRegionNames;
 | |
| 
 | |
| 	void readToVector(std::string sourceName, std::vector<std::string> & dest);
 | |
| 	void load();
 | |
| 	CGeneralTextHandler();
 | |
| };
 |