/** @file /world/rules.h Trida obsahujici seznamy budov, jednotek a dalsich tabulek a koeficientu z pravidel, ktera se na pocatku hry nacitaji z XML pomoci ResourceManageru. @author PW */ #ifndef WORLD_RULES_H #define WORLD_RULES_H #include #include "common/Msg.h" #include "common/mm.h" #include "common/TCL/tcl_container.h" #include "common/TCL/tcl_script.h" #include "world/typedefs.h" namespace World { // vitezny pomer dobytych mest (obsazena/celkem) #define CONQUER_TOWN_RATIO 0.75 // vitezny pocet dobytych mest #define CONQUER_TOWN_COUNT 5 // vitezny pomer dobytych kralovstvi (obsazena/celkem) #define CONQUER_KINGDOM_RATIO 1.0 // vitezny pocet dobytych kralovstvi #define CONQUER_KINGDOM_COUNT 4 // zaruceny minimalni prijem hrace #define MIN_PLAYER_INCOME 600 // prijem za jedno policko vlastneneho mesta #define TOWN_INCOME 100 // prijem za vlastnictvi celeho kralovstvi #define KINGDOM_INCOME 200 // zvyhodneni jednotky utocici ve vlastnim meste #define ATTACK_BONUS_TOWN 1.2 // zvyhodneni jednotky napadene ve vlastnim meste #define DEFENSE_BONUS_TOWN 1.4 /// seznam typu budov typedef TTCL_Container TBuildingsContainer; /// iterator pres seznam typubudov typedef TBuildingsContainer::iterator TBuildingsIterator; /// seznam typu jednotek typedef TTCL_Container TUnitsContainer; /// iterator pres seznam typu jednotek typedef TUnitsContainer::iterator TUnitsIterator; /// seznam typu terenu typedef TTCL_Container TTerrainsContainer; /// iterator pres seznam typu terenu typedef TTerrainsContainer::iterator TTerrainsIterator; /// seznam typu bonusu typedef TTCL_Container TBonusesContainer; /// iterator pres seznam typu bonusu typedef TBonusesContainer::iterator TBonusesIterator; /// struktura pro ulozeni celociselne konstanty do prostredi TCL struct TCL_CONST { char * name; int value; }; /// struktura pro ulozeni desetinne konstanty do prostredi TCL struct TCL_DOUBLE_CONST { char * name; double value; }; /// data pevne dana pravidly. Typy jednotek, budov, jejich spolecne vlastnosti atd. class TRules { public: /// Seznam typu budov TBuildingsContainer building_types; /// Seznam typu jednotek TUnitsContainer unit_types; /// Seznam typu terenu TTerrainsContainer terrain_types; /// Seznam bonusu vlastnosti jednotek TBonusesContainer bonus_types; /// Seznam TCL skriptu std::map scripts; /// Konstruktor TRules(); /// Destruktor ~TRules(); /// Inicializace int init(); /// obnoveni int reload(); /// Uklid int shutdown(); /// Zapis pravidel do TCL interpretu void writeToTCL(TTCL_Interpreter & interpreter); }; } #endif /*****************************************************************************/