#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 data; char * curr; char * end; void init(const std::unique_ptr & 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 std::vector readNumArray(size_t size) { std::vector 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 & input); }; class DLL_LINKAGE CGeneralTextHandler //Handles general texts { public: std::vector allTexts; std::vector arraytxt; std::vector primarySkillNames; std::vector jktexts; std::vector heroscrn; std::vector overview;//text for Kingdom Overview window std::vector colors; //names of player colors ("red",...) std::vector capColors; //names of player colors with first letter capitalized ("Red",...) std::vector turnDurations; //turn durations for pregame (1 Minute ... Unlimited) //towns std::vector tcommands, hcommands, fcommands; //texts for town screen, town hall screen and fort screen std::vector tavernInfo; std::vector > zelp; std::vector lossCondtions; std::vector victoryConditions; //objects std::vector names; //vector of objects; i-th object in vector has subnumber i std::vector creGens; //names of creatures' generators std::vector creGens4; //names of multiple creatures' generators std::vector advobtxt; std::vector xtrainfo; std::vector restypes; //names of resources std::vector terrainNames; std::vector randsign; std::vector > mines; //first - name; second - event description std::vector seerEmpty; std::vector > > quests; //[quest][type][index] //type: quest, progress, complete, rollover, log OR time limit //index: 0-2 seer hut, 3-5 border guard std::vector seerNames; std::vector tentColors; std::vector threat; //power rating for neutral stacks //sec skills std::vector skillName; std::vector > skillInfoTexts; //[id][level] : level 0 - basic; 2 - advanced std::vector levels; std::vector zcrexp; //more or less useful content of that file //campaigns std::vector campaignMapNames; std::vector < std::vector > campaignRegionNames; void readToVector(std::string sourceName, std::vector & dest); void load(); CGeneralTextHandler(); };