2011-12-13 21:23:17 +00:00
|
|
|
#pragma once
|
|
|
|
|
2009-04-15 14:03:31 +00:00
|
|
|
/*
|
|
|
|
* 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
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2012-08-25 08:44:51 +00:00
|
|
|
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();
|
|
|
|
|
|
|
|
/// 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);
|
|
|
|
};
|
|
|
|
|
2011-12-13 21:23:17 +00:00
|
|
|
class DLL_LINKAGE CGeneralTextHandler //Handles general texts
|
2009-01-10 22:08:18 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
class HeroTexts
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
std::string bonusName, shortBonus, longBonus; //for special abilities
|
|
|
|
std::string biography; //biography, of course
|
|
|
|
};
|
|
|
|
|
|
|
|
std::vector<HeroTexts> hTxts;
|
|
|
|
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;
|
2010-01-25 21:25:14 +00:00
|
|
|
std::vector<std::string> overview;//text for Kingdom Overview window
|
2010-02-01 17:07:46 +00:00
|
|
|
std::vector<std::string> colors; //names of player colors ("red",...)
|
|
|
|
std::vector<std::string> capColors; //names of player colors with first letter capitalized ("Red",...)
|
2011-01-28 02:33:26 +00:00
|
|
|
std::vector<std::string> turnDurations; //turn durations for pregame (1 Minute ... Unlimited)
|
2009-01-10 22:08:18 +00:00
|
|
|
|
|
|
|
//artifacts
|
|
|
|
std::vector<std::string> artifEvents;
|
|
|
|
std::vector<std::string> artifNames;
|
|
|
|
std::vector<std::string> artifDescriptions;
|
|
|
|
|
|
|
|
//towns
|
2009-12-23 01:46:15 +00:00
|
|
|
std::vector<std::string> tcommands, hcommands, fcommands; //texts for town screen, town hall screen and fort screen
|
2009-02-09 16:18:48 +00:00
|
|
|
std::vector<std::string> tavernInfo;
|
2009-01-10 22:08:18 +00:00
|
|
|
std::vector<std::vector<std::string> > townNames; //[type id] => vec of names of instances
|
|
|
|
std::vector<std::string> townTypes; //castle, rampart, tower, etc
|
|
|
|
std::map<int, std::map<int, std::pair<std::string, std::string> > > buildings; //map[town id][building id] => pair<name, description>
|
|
|
|
|
|
|
|
std::vector<std::pair<std::string,std::string> > zelp;
|
2012-08-25 08:44:51 +00:00
|
|
|
std::vector<std::string> lossCondtions;
|
|
|
|
std::vector<std::string> victoryConditions;
|
2009-01-06 18:42:20 +00:00
|
|
|
|
|
|
|
//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
|
2009-07-09 19:15:22 +00:00
|
|
|
std::vector<std::string> creGens4; //names of multiple creatures' generators
|
2009-01-06 18:42:20 +00:00
|
|
|
std::vector<std::string> advobtxt;
|
|
|
|
std::vector<std::string> xtrainfo;
|
2010-07-30 11:29:42 +00:00
|
|
|
std::vector<std::string> restypes; //names of resources
|
2009-10-22 02:09:14 +00:00
|
|
|
std::vector<std::string> terrainNames;
|
2009-03-19 14:17:19 +00:00
|
|
|
std::vector<std::string> randsign;
|
2009-01-10 22:08:18 +00:00
|
|
|
std::vector<std::pair<std::string,std::string> > mines; //first - name; second - event description
|
2010-01-26 19:43:15 +00:00
|
|
|
std::vector<std::string> seerEmpty;
|
2009-12-31 11:43:37 +00:00
|
|
|
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;
|
2012-07-08 16:36:20 +00:00
|
|
|
std::vector<std::string> tentColors;
|
2011-02-07 14:39:17 +00:00
|
|
|
std::vector<std::string> threat; //power rating for neutral stacks
|
2009-01-10 22:08:18 +00:00
|
|
|
|
2009-01-25 16:40:50 +00:00
|
|
|
//sec skills
|
|
|
|
std::vector <std::string> skillName;
|
|
|
|
std::vector <std::vector <std::string> > skillInfoTexts; //[id][level] : level 0 - basic; 2 - advanced
|
2009-01-10 22:08:18 +00:00
|
|
|
std::vector<std::string> levels;
|
2011-03-21 08:14:23 +00:00
|
|
|
std::vector<std::string> zcrexp; //more or less useful content of that file
|
2009-01-10 22:08:18 +00:00
|
|
|
|
2010-02-12 15:04:01 +00:00
|
|
|
//campaigns
|
|
|
|
std::vector <std::string> campaignMapNames;
|
|
|
|
std::vector < std::vector <std::string> > campaignRegionNames;
|
|
|
|
|
|
|
|
std::string getTitle(const std::string & text);
|
|
|
|
std::string getDescr(const std::string & text);
|
2009-01-10 22:08:18 +00:00
|
|
|
|
|
|
|
void load();
|
|
|
|
CGeneralTextHandler();
|
|
|
|
};
|