/** @file /ai/Strategizer/strategizer.h @brief Header modulu strategickeho planovace. Header modulu strategickeho planovace. @author PZ @version 0.1 */ #ifndef __PETR_ZITA_STRATEGIZER__ #define __PETR_ZITA_STRATEGIZER__ #pragma warning( disable : 4290 ) #include #include #include #include "ai/ai_makra.h" #include "ai/aiscriptcaller.h" #include "ai/Strategizer/planning.h" #include "ai/Strategizer/strategytypes.h" #include "ai/Strategizer/strategygraph.h" #include "ai/Strategizer/strategyserialization.h" #include "ai/Strategizer/attacks.h" #include "ai/Strategizer/expansion.h" #include "ai/Strategizer/strategytransciever.h" #include "ai/PathFind/pathenv.h" #include "common/Interface.h" #include "common/types.h" #include "world/useful.h" #include "world/plan/plan.h" #include "world/buildings/building.h" #include "world/units/unit.h" #include "world/players/player.h" namespace ai_ns { /** Prostor jmen obalujici modul Strategickeho planovace. */ namespace strategizer_ns { /** Trida Strategickeho planovace jenz poskytuje rozhrani a implementuje vysokourovnove operace planovani a tahu AI hrace. */ class CStrategizerEngine : public CStrategyTransciever { public: /** Konstruktor. */ CStrategizerEngine(); /** Destruktor. */ ~CStrategizerEngine(); /** Naplanuje a provede vsechny akce pro daneho AI hrace. @param playerID World ID AI hrace jenz bude hrat @param last_history_event_id ID posledni historicke udalosti na zasobniku historie modulu World @param ai_level obtiznost AI hrace, se kterou ma byt planovano */ virtual void AITurnForPlayer(int playerID,int last_history_event_id,PLAYER_TYPE ai_level); #ifdef _K_EDITOR_ public: #else private: #endif /** Sestavi z informaci na mape pro daneho hrace strategicky graf, z nehoz se pote da generovat obranny plan. @param playerID World ID AI hrace jenz bude hrat @param ai_level obtiznost AI hrace, se kterou ma byt planovano @return (CStrGraph*) ukazatel na dynamycky vytvoreny objekt strategickeho grafu */ CStrGraph* buildStrategyGraph(int playerID,PLAYER_TYPE ai_level); private: CStrategySerialization* StrategySerialization; ///< instance komponenty pro ukladani AI dat CStrategyAttackEngine* StrategyAttackEngine; ///< instance komponenty pro spravu utoku AI hrace CStrategyExpansionEngine* StrategyExpansionEngine; ///< instance komponenty pro expanzi AI hrace /** Sada ukazatelu zpristupnujici veskere struktury WORLDu. */ TPacket_AI_LetsGo* SIP; /** Metoda inicializujici Strategicky planovac predanim ukazatelu na struktury WORLDu. @param initPackage sada ukazatelu na struktury WORLDu (TPacket_AI_LetsGo*) */ virtual void initStrategy(TPacket_AI_LetsGo* initPackage); /** Metoda, jenz provadi validaci a aktualizaci nactenych AI dat ve srovnani s aktualnim stavem na mape. @param playerID World ID AI hrace pro nejz aktualizuji AI data */ void updateSerializationStructures(int playerID); }; } // end of namespace "strategizer_ns" } // end of namespace "ai_ns" #endif