/** ******************************************************************************* @file /common/Interface.h @brief interface, definice modulu a zprav @author Vsichni @version 0.1 ******************************************************************************/ #ifndef INTERFACE_H #define INTERFACE_H // +--------------------------------------------------------------------------+ // | | // | G L O B A L N I K O N S T A N T Y | // | | // +--------------------------------------------------------------------------+ #define K8_MAX_PATH_LEN 250 ///< Nejvetsi delka cesty #define K8_MAX_FILE_NAME_LEN 250 ///< Nejvetsi velikost jmena souboru #define K8_MAX_NAME_LEN 100 ///< Nejvetsi delka jmena // +--------------------------------------------------------------------------+ // | | // | I D E N T I F I K A T O R Y M O D U L U | // | | // +--------------------------------------------------------------------------+ #define MOD_MAPANALYZER 91 #define MOD_DIPLOMACY 92 #define MOD_STRATEGY 93 #define MOD_PATHFIND 94 #define MOD_NET 95 #define MOD_GUI 96 #define MOD_RM 98 #define MOD_GAME 99 /// id modulu World_Server #define MOD_WORLD_SERVER 100 /// id modulu World_Client #define MOD_WORLD_CLIENT 101 /// id modulu World_Handler #define MOD_WORLD_HANDLER 110 // +--------------------------------------------------------------------------+ // | | // | P R I O R I T Y M O D U L U | // | | // +--------------------------------------------------------------------------+ #define WORLD_CLIENT_PRIORITY 10 #define WORLD_SERVER_PRIORITY 20 #define WORLD_HANDLER_PRIORITY 30 // +--------------------------------------------------------------------------+ // | | // | I D E N T I F I K A T O R Y Z P R A V | // | | // +--------------------------------------------------------------------------+ // JE NUTNE NAPSAT KE KAZDE MSG KOMENTAR A HLAVNE KOMU BUDE CHODIT A CO BUDE POSILAT!!!!!!! /// Obecne zpravy #define MSG_NOMSG 0 ///< nulova zpava :-) #define MSG_SUBSYSTEMSINITIZED 8 ///< param = 0, prvni zprava, posila se tesne po tom co probehne inicializace modulu #define MSG_EXCEPTION_IN_THREAD 5 ///< Param = 0, informace o vyskytu vyjimky ve vlakne /// Zpravy modulu GUI #define MSG_MAPLOADING_PROGRESS 103 ///< stav nahravani, param = float(0,1) #define MSG_GUIMAP_READY 104 ///< param = 0, posila inicializace guimap, kdyz dokoncila nahravani, obrazovka prepne do kontextu GAMECONTEXT #define MSG_MAPLOADING_MSG 105 ///< zprava o nahravani, param = wchar_t* retezec, ktery bude videt v okne loading #define MSG_GUIMAP_HARAKIRI 106 ///< zprava pro zruseni mapy z jineho kontextu, param = NULL #define MSG_KILL_MAPLOADING 107 ///< zprava pro zabiti vlakna nahravani mapy pri nasilnem ukonceni programu, param = NULL /// Zpravy modulu World pouzivane pri komunikaci s ostatnimi moduly a klient - server komunikaci enum { /// vyber rezimu, ve kterem hra pobezi, @see PACKET_GAME_MODE /// GUI -> WORLD_HANDLER MSG_GAME_MODE = 400 /// zacatek hry, @see PACKET_GAME_START /// GUI -> WORLD_SERVER ,MSG_GAME_START ,MSG_GAME_PREPARE /// povel k pripojeni do hry, @see PACKET_JOIN_GAME /// po spusteni hry posila WORLD_SERVER klientum, aby se inicializovali a pripojili do hry /// WORLD_SERVER -> WORLD_HANDLER ,MSG_JOIN_GAME /// potvrzeno o pripojeni do hry, @see PACKET_JOIN_GAME /// WORLD_CLIENT -> WORLD_SERVER ,MSG_JOIN_CONFIRMATION /// oznameni, ze hra je pripravena k zahajeno, @see PACKET_LETS_GO /// WORLD_CLIENT -> GUI ,MSG_LETS_GO /// Oznameni, ze zacala hra, vsichni klienti jsou pripojeni a synchronizovani. /// Zprava se posila bez tela. /// WORLD_CLIENT -> GUI ,MSG_GAME_STARTED /// Zprava o ukonceni hry na popud GUI. /// @see PACKET_END_GAME_GUI ,MSG_END_GAME_GUI /// Sitova zprava o ukonceni hry ,MSG_NET_END_GAME_GUI /// zprava o ukonceni hry na popud WORLDu. /// @see TPacket_END_GAME ,MSG_END_GAME /// Zprava pro ukonceni hry na klientovi. /// Funguje jako reakce na "dobrovolne" odpojeni klienta ze sitove hry /// @see TPacket_END_GAME; ,MSG_END_CLIENT /// zprava o porazeni hrace /// @see TPacket_PLAYER_DEFEATED ,MSG_PLAYER_DEFETAED /// zadost o ulozeni hry /// @see PACKET_SAVE_GAME ,MSG_SAVE_GAME /// obecna zprava komunikace world_client <-> world_server, /// ktera svuj typ specifikuje podrobneji az v datove casti ,MSG_WORLD_CLIENT_SERVER /// obecna zprava komunikace world_client <-> GUI, /// ktera svuj typ specifikuje podrobneji az v datove casti ,MSG_WORLD_GUI /// obecna zprava komunikace world_client <-> AI, /// ktera svuj typ specifikuje podrobneji az v datove casti ,MSG_WORLD_AI /// obecna zprava komunikace world_client/world_serevr <-> TCL, /// ktera svuj typ a data specifikuje az v datove casti. /// @see PACKET_WORLD_TCL ,MSG_WORLD_TCL /// Zprava indikujici chybu serveru pri zpracovani pozadavku /// klienta. /// WORLD_CLIENT -> GUI ,MSG_RCT_ERROR /// prikaz k inicializace AI PathFind modulu ,MSG_PATHFIND_INIT /// synchronizace dat mezi klientem a serverem /// WORLD_SERVER -> WORLD_CLIENT ,MSG_SYNCHRO /// potvrzeni o prijeti synchronizacniho balicku, @see PACKET_SYNCHRO_CONFIRMATION /// WORLD_CLIENT -> WORLD_SERVER ,MSG_SYNCHRO_CONFIRMATION /// testovaci docasny paket pro pripojeni hrace po siti ,MSG_NET_CONNECTION /// ziskani mapy /// @see MAP, @see TPacket_RET_MAP /// vraci v TPacket_RET_MAP ukazatel na World::MAP /// AI -> WORLD_CLIENT ,MSG_GET_MAP /// ziskani hexu, @see HEX /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_HEX /// ziskani hexu podle ID, @see HEX /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_HEX_BY_ID /// ziskani informaci o jednotce, @see LIVING_UNIT /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_LIVING_UNIT /// ziskani informaci o budove, @see LIVING_BUILDING /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_LIVING_BUILDING /// ziskani aktualnich informaci o hraci, @see PLAYER /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_PLAYER /// ziskani seznamu hracu, @see PLAYER /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_PLAYERS /// ziskani seznamu jednotek /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_LIVING_UNITS /// ziskani seznamu jednotek /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_LIVING_BUILDINGS /// ziskani mesta. /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_TOWN /// Ziskani seznamu mest. /// Jako parametr je mozno zadat id kralovstvi. Seznam mest /// se pak omezi pouze na zvolene kralovstvi. /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_TOWNS /// ziskani kralovstvi /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_KINGDOM /// ziskani seznamu kralovstvi /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_KINGDOMS /// ziskani pocasi /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_WEATHER /// ziskani ID konkretniho sousedniho hexu /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_HEX_NEIGHBOUR /// ziskani seznamu okolnich hexu /// TCL -> WORLD_SERVER/WORLD_CLIENT ,MSG_GET_HEX_NEIGHBOURS /// zjisteni narocnosti (v bodech pohybu) pro prechod mezi sousednimi hexy konkretni jednotkou /// @see PACKET_GET_DISTANCE /// vraci v TPacketResult ukazatel na odpovidajici \c int hodnotu /// GUI, AI -> WORLD_CLIENT ,MSG_GET_DISTANCE /// Zadost o vypsani hexu, na ktere jednotka muze v danem kole vstoupit /// @see PACKET_GET_RANGE, @see TPacket_RET_RANGE /// GUI, AI -> WORLD_CLIENT ,MSG_GET_RANGE /// Zadost o vypsani hexu, na nichz stoji jednotky ci budovy, na ktere muze /// jednotka v danem kole zautocit. /// @see PACKET_GET_ATTACK_RANGE /// @see TPacket_RET_ATTACK_RANGE /// GUI -> WORLD_CLIENT ,MSG_GET_ATTACK_RANGE /// Zadost o vypsani hexu, ze kterych je mozno vybranou jednotkou /// zautocit na vybrany hex. /// @see TPACKET_GET_INVERSE_ATTACK_RANGE /// @see TPacket_RET_INVERSE_ATTACK_RANGE /// AI -> WORLD_SERVER ,MSG_GET_INVERSE_ATTACK_RANGE /// Zadost o nalezeni optimalni cesty mezi dvema hexy /// @see PACKET_PATHFIND_REQUEST /// vraci pointer na TPATH, nebo NULL pri chybe /// WORLD_SERVER -> AI ,MSG_PATHFIND_REQUEST /// Zadost o flood fill zaplavu od jednotky - kam dojde /// @see PACKET_FLOODFILL_REQUEST /// WORLD_SERVER -> AI ,MSG_FLOODFILL_REQUEST /// Ukonceni tahu /// GUI -> WORLD_CLIENT /// @see PACKET_WORLD_GUI ,MSG_ACT_NEXT_TURN /// Sitova zprava o ukonceni tahu ,MSG_NET_ACT_NEXT_TURN /// Sitova zprava o predani tahu /// @see PACKET_NET_RCT_NEXT_TURN ,MSG_NET_RCT_NEXT_TURN /// Zprava o zmene hrace na tahu /// @see TPacket_RCT_NEXT_TURN ,MSG_RCT_NEXT_TURN /// Kliknuti na jednotku. /// @see PACKET_ACT_UNIT_CLICK /// @see PACKET_RCT_UNIT_CLICK /// GUI -> WORLD_CLIENT ,MSG_ACT_UNIT_CLICK /// Kliknuti na budovu. /// @see PACKET_ACT_BUILDING_CLICK /// @see PACKET_RCT_BUILDING_CLICK /// GUI -> WORLD_CLIENT ,MSG_ACT_BUILDING_CLICK /// Zadost o sebezniceni jednotky /// @see PACKET_ACT_UNIT_SUICIDE ,MSG_ACT_UNIT_SUICIDE /// Sitova zadost o sebezniceni jednotky ,MSG_NET_ACT_UNIT_SUICIDE /// Sitove vyhodnoceni sebezniceni jednotky /// ,MSG_NET_RCT_UNIT_SUICIDE /// Zprava o sebezniceni jednotky /// @see TPacket_RCT_UNIT_SUICIDE ,MSG_RCT_UNIT_SUICIDE /// Zadost o sebezniceni budovy /// @see PACKET_ACT_BUILDING_SUICIDE ,MSG_ACT_BUILDING_SUICIDE /// Sitova zadost o sebezniceni budovy ,MSG_NET_ACT_BUILDING_SUICIDE /// Zprava o sebezniceni budovy /// @see TPacket_RCT_BUILDING_SUICIDE ,MSG_RCT_BUILDING_SUICIDE /// Zadost o zahajeni vyroby jednotky /// @see PACKET_ACT_BUILDING_RECRUIT_UNIT ,MSG_ACT_BUILDING_RECRUIT_UNIT /// Sitova zadost o zahajeni vyroby jednotky ,MSG_NET_ACT_BUILDING_RECRUIT_UNIT /// Sitove vyhodnoceni zahajeni vyroby jednotky /// ,MSG_NET_RCT_BUILDING_RECRUIT_UNIT /// Zprava o zahajeni vyroby jednotky /// @see TPacket_RCT_BUILDING_RECRUIT_UNIT ,MSG_RCT_BUILDING_RECRUIT_UNIT /// Pro konkretni jednotku a typ budovy vyhodnocuje /// seznam hexu, kde je budovu mozno postavit. /// @see PACKET_GET_BUILDING_RANGE /// @see TPacket_RET_BUILDING_RANGE ,MSG_GET_BUILDING_RANGE /// Pro konkretni jednotku vyhodnocuje seznam /// hexu, na kterych lze nejakou budovu opravovat /// @see PACKET_GET_REPAIR_RANGE /// @see TPacket_RET_REPAIR_RANGE ,MSG_GET_REPAIR_RANGE /// Zahajeni stavby. /// GUI -> WORLD_CLIENT /// @see PACKET_ACT_START_BUILDING ,MSG_ACT_START_BUILDING /// Sitovy prenos informace o zahajeni stavby ,MSG_NET_ACT_START_BUILDING /// Vyhodnoceni zahajeni stavby. /// WORLD_CLIENT -> GUI /// @see TPacket_RCT_START_BUILDING ,MSG_RCT_START_BUILDING /// Oprava budovy /// GUI -> WORLD_CLIENT /// @see PACKET_ACT_REPAIR_BUILDING ,MSG_ACT_REPAIR_BUILDING /// Sitovy prenos informace o oprave budovy /// WORLD_CLIENT -> WORLD_SERVER ,MSG_NET_ACT_REPAIR_BUILDING /// Vyhodnoceni opravy budovy /// WORLD_CLIENT -> GUI /// @see TPacket_RCT_REPAIR_BUILDING ,MSG_RCT_REPAIR_BUILDING /// Ukonceni stavby budovy /// GUI -> WORLD_CLIENT /// @see PACKET_ACT_STOP_BUILDING ,MSG_ACT_STOP_BUILDING /// Sitovy prenos ukonceni stavby /// WORLD_CLIENT -> WORLD_SERVER /// @see PACKET_NET_ACT_STOP_BUILDING ,MSG_NET_ACT_STOP_BUILDING /// Vyhodnoceni ukonceni stavby /// WORLD_CLIENT -> GUI /// @see TPacket_RCT_STOP_BUILDING ,MSG_RCT_STOP_BUILDING /// Prodej bonusu jednotce v budove /// GUI -> WORLD_CLIENT /// @see PACKET_SELL_BONUS ,MSG_ACT_SELL_BONUS /// Sitovy prenos prodeje bonusu jednotce v budove /// @see PACKET_NET_ACT_SELL_BONUS ,MSG_NET_ACT_SELL_BONUS /// Vyhodnoceni prodeje bonusu jednotce v budove /// WORLD_CLIENT -> GUI /// @see TPacket_RCT_SELL_BONUS ,MSG_RCT_SELL_BONUS /// Zadost o pohyb jednotky. /// @see PACKET_ACT_UNIT_MOVE /// GUI: @return TPacket_WaitForResult /// AI: @return TPacket_RCT_UNIT_MOVE /// GUI, AI -> WORLD_CLIENT ,MSG_ACT_UNIT_MOVE /// @see MSG_ACT_UNIT_MOVE ,MSG_NET_ACT_UNIT_MOVE /// Vysledek pohybu jednotky, @see TPacket_RCT_UNIT_MOVE /// WORLD_CLIENT -> GUI, AI ,MSG_RCT_UNIT_MOVE /// Leceni jednotky /// GUI, AI -> WORLD_CLIENT /// @see PACKET_ACT_UNIT_HEAL ,MSG_ACT_UNIT_HEAL /// Sitovy prenos zadosti o leceni jednotky /// WORLD_CLIENT -> WORLD_SERVER /// @see PACKET_NET_ACT_UNIT_HEAL ,MSG_NET_ACT_UNIT_HEAL /// Oznameni o leceni jednotky /// @see TPacket_RCT_UNIT_HEAL /// WORLD_CLIENT -> GUI ,MSG_RCT_UNIT_HEAL /// Doplneni jednotky (neelitni) /// GUI, AI -> WORLD_CLIENT /// @see PACKET_ACT_UNIT_RECRUIT ,MSG_ACT_UNIT_RECRUIT /// Sitovy prenos zadosti o doplneni jednotky (neelitni) /// WORLD_CLIENT -> WORLD_SERVER /// @see PACKET_NET_ACT_UNIT_RECRUIT ,MSG_NET_ACT_UNIT_RECRUIT /// Oznameni o doplneni jednotky (neelitni) /// WORLD_CLIENT -> GUI /// @see TPacket_RCT_UNIT_RECRUIT ,MSG_RCT_UNIT_RECRUIT /// Doplneni jednotky (elitni) /// GUI, AI -> WORLD_CLIENT /// @see PACKET_ACT_UNIT_RECRUIT_ELITE ,MSG_ACT_UNIT_RECRUIT_ELITE /// Sitovy prenos zadosti o doplneni jednotky (elitni) /// WORLD_CLIENT -> WORLD_SERVER /// @see PACKET_NET_ACT_UNIT_RECRUIT_ELITE ,MSG_NET_ACT_UNIT_RECRUIT_ELITE /// Oznameni o doplneni jednotky (elitni) /// WORLD_CLIENT -> GUI /// @see TPacket_RCT_UNIT_RECRUIT_ELITE ,MSG_RCT_UNIT_RECRUIT_ELITE /// Oznameni o obsazeni budovy. /// @see TPacket_BUILDING_OCCUPIED /// WORLD_CLIENT -> GUI ,MSG_BUILDING_OCCUPIED /// Oznameni o obsazeni mesta. /// @see TPacket_TOWN_OCCUPIED /// WORLD_CLIENT -> GUI ,MSG_TOWN_OCCUPIED /// Oznameni o obsazeni kralovstvi. /// @see TPacket_KINGDOM_OCCUPIED /// WORLD_CLIENT -> GUI ,MSG_KINGDOM_OCCUPIED /// Oznameni o zmene viditelnosti /// @see TPacket_VISIBILITY_CHANGE /// WORLD_CLIENT -> GUI ,MSG_VISIBILITY_CHANGE /// Vyvolani akce "utok jednotky" /// @see PACKET_ACT_UNIT_ATTACK /// GUI, AI -> WORLD_CLIENT ,MSG_ACT_UNIT_ATTACK /// Vyhodnoceni akce "utok jednotky" /// @see TPacket_RCT_UNIT_ATTACK /// WORLD_CLIENT -> GUI, AI ,MSG_RCT_UNIT_ATTACK /// Sitovy prenos informaci o vyvolani akce "utok jednotky" /// WORLD_CLIENT -> WORLD_SERVER ,MSG_NET_ACT_UNIT_ATTACK /// Sitovy prenost informaci o vyhodnoceni akce "utok jednotky" /// WORLD_SERVER -> WORLD_CLIENT ,MSG_NET_RCT_UNIT_ATTACK /// Zprava pro testovani AI v editoru, ze je svet nacten /// @see TPacket_AI_LetsGo /// WORLD_SERVER -> Editor ,MSG_AI_EDITOR_RELOAD /// Zprava pro AI, ze je svet nacten /// @see TPacket_AI_LetsGo /// WORLD_SERVER -> AI ,MSG_AI_LETS_GO /// Zprava pro AI, ze je na tahu /// @see TPacket_AI_ON_TURN /// WORLD_SERVER -> AI ,MSG_AI_ON_TURN /// Zprava pro AI, ze je ma ukoncit vypocet /// SDL_Filer/World -> AI ,MSG_AI_KILL_AI_PLANNING /// Zprava pro AI, ze je ma co nejdrive ukoncit vypocet /// WORLD_SERVER -> AI ,MSG_AI_WAIT_AI_PLANNING /// Dotaz AI na akci na vrcholu zasobniku historie /// @see PACKET_AI_GET_HISTORY_PIECE, @see TPacket_AI_RET_HISTORY_PIECE /// AI -> WORLD_SERVER ,MSG_AI_GET_HISTORY_PIECE /// Navrzeni noveho diplomatickeho vztahu /// @see PACKET_ACT_OFFER_RELATION /// GUI -> WORLD_CLIENT ,MSG_ACT_OFFER_RELATION /// Sitovy prenos informace o navrzeni noveho diplomatickeho vztahu /// @see PACKET_NET_ACT_OFFER_RELATION ,MSG_NET_ACT_OFFER_RELATION /// Oznameni o zmene diplomaticke relace /// @see TPacket_DIPLOMACY_RELATION_CHANGE /// WORLD_CLIENT -> GUI ,MSG_DIPLOMACY_RELATION_CHANGE #ifdef _K_EDITOR_ /// Zprava pro AI, ze je na tahu /// WORLD_SERVER -> AI ,MSG_AI_GET_STRENGINE #endif /// Zprava od AI, ze tah je ukoncen /// AI -> WORLD_SERVER ,MSG_AI_END_TURN /// Inicializuje Map Analyzer /// @see TPacket_AI_ON_TURN /// AI -> AI ,MSG_MAPANALYZER_INIT /// Vyhleda pro daneho hrace nejblizsi produkcni budovu, ktera umi vyrobit danou jednotku /// @see TPacket_MapAnalyzer_NearestFreeProductionBuildingForUnitTrain /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_GET_NEAREST_FREE_PRODUCTION_BUILDING_FOR_UNIT_TRAIN /// Vyhleda pro daneho hrace nejlepsi misto pro stavbu budovy /// @see TPacket_MapAnalyzer_BestProductionBuildingPlace /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_GET_BEST_PRODUCTION_BUILDING_PLACE /// Najde pomyslny stred hracova uzemi /// @see TPacket_MapAnalyzer_FindPlayerEmpireCenter /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_FIND_PLAYER_EMPIRE_CENTER /// Najde nahodny neprozkoumany hex pro daneho hrace /// @see TPacket_MapAnalyzer_GetRandomInvisibleHex /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_GET_RANDOM_INVISIBLE_HEX /// Vrati prostou vzdalenost mezi dvema hexy /// @see TPacket_MapAnalyzer_GetHexDistance /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_GET_HEX_DISTANCE /// Vrati ukazatel na TOWN strukturu, ktere nalezi zadany hex /// @see TPacket_MapAnalyzer_FindCityByPosition /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_FIND_CITY_BY_POSITION /// Zprava pro Map Analyzator, ktera vrati tridu se seznamem hexu akcniho radiusu od zadaneho hexu. /// @see TPacket_MapAnalyzer_FindCityByPosition /// @see TPacket_MapAnalyzer_ActionRadiusResponse /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_GET_ACTION_RADIUS /// Nalezne nejvhodnejsi umisteni pro stavbu mostu pro daneho hrace /// @see TPacket_MapAnalyzer_BridgeBuildingAnalysis /// @see TPacket_MapAnalyzer_BridgeBuildingResponse /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_BRIDGE_BUILDING_ANALYSIS /// Nalezne pozici jednotky dle jejiho World ID. /// @see TPacket_MapAnalyzer_FindUnitPosition /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_FIND_UNIT_POSITION /// Urci, zdali je jednotku daneho typu mozne vytrenovat v budove na zadanem hexu. /// @see TPacket_MapAnalyzer_UnitTrainableInBuilding /// AI -> MAP_ANALYZER ,MSG_MAPANALYZER_UNIT_TRAINABLE_IN_BUILDING /// Inicializuje DIPLOMACY /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_INIT /// Prida diplomata /// @see TPacket_Diplomacy_AddDiplomat /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_ADD_DIPLOMAT /// Odebere diplomata /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_REMOVE_DIPLOMAT /// Synchronizuje vsechny diplomaty pro aktualni stav diplomacie /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_SYNC /// Zjisti aktualni pocet diplomatu zpracovavany Diplomatickym modulem /// WORLD_SERVER -> DIPLOMACY /// vraci (int*) - je treba dealokovat ,MSG_DIPLOMACY_GET_DIPLOMAT_COUNT /// Zprava pro DIPLOMACY o obsazeni budovy /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_CONQUER_BUILDING /// Zprava pro DIPLOMACY o obsazeni mesta /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_CONQUER_CITY /// Zprava pro DIPLOMACY o tom, ze probehl utok /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_ATTACK_INFO /// Zjisti diplomaticky vztah mezi dvema hraci /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_GET_RELATION /// Nastavi diplomaticky vztah mezi dvema hraci /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_SET_RELATION /// Zjisti nabidnuty diplomaticky vztah mezi dvema hraci /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_GET_OFFER_RELATION /// Nabidka diplomatickeho vztahu diplomatem /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_SET_OFFER_RELATION /// Zprava pro Diplomacy, kterou zjistuji ostatni polozky diplomatickeho vztahu. /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_GET_OTHER_RELATION_PROPERTIES /// Zprava pro Diplomacy o zmene ostatnich polozek diplomatickeho vztahu. /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_SET_OTHER_RELATION_PROPERTIES /// Oznamuje diplomacii, ze diplomat je na tahu /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_DIPLOMAT_TURN_BEGIN /// Oznamuje diplomacii, ze diplomat konci svuj tah /// WORLD_SERVER -> DIPLOMACY ,MSG_DIPLOMACY_DIPLOMAT_TURN_END /// Dotaz pro Diplomacy od AI na nejvetsiho nepritele /// AI -> DIPLOMACY /// @see TPacket_Diplomacy_FindWorstEnemy /// @return int* s world ID nejhorsiho protihrace ,MSG_DIPLOMACY_FIND_WORST_ENEMY /// Specialni zprava pro AI hrace zpusobujci vyhlaseni valky nejhorsimu nepriteli /// AI -> DIPLOMACY /// @see TPacket_Diplomacy_AIWarDeclaration ,MSG_DIPLOMACY_AI_WAR_DECLARATION /// Zpusobi zmenu typu diplomata (Ai/clovek) na pozadovany typ. /// AI -> DIPLOMACY /// @see TPacket_Diplomacy_ChangeDiplomatType ,MSG_DIPLOMACY_CHANGE_DIPLOMAT_TYPE /// Oznameni o zmene v diplomatickych vztazich /// DIPLOMACY -> WORLD_SERVER /// @see TPacket_DIPLOMACY_CHANGE ,MSG_DIPLOMACY_CHANGE }; //Vojta #define MSG_GET_RM_TXT_I 601 ///< Pram = 0, vrat pointer na TRM_txt_i - textovy RMi #define MSG_GET_RM_CONF_I 602 ///< Pram = 0, vrat pointer na TRM_conf_i - RMi pro config a osatni informacni soubory #define MSG_GET_RM_RASTER_I 603 ///< Pram = 0, vrat pointer na TRM_raster_i - RMi pro rastery #define MSG_GET_RM_SYMBOL_I 604 ///< Pram = 0, vrat pointer na TRM_symbol_i - RMi pro symboly #define MSG_GET_RM_UNIT_I 605 ///< Pram = 0, vrat pointer na TRM_advxml_i - RMi pro jednotky #define MSG_GET_RM_MAP_I 606 ///< Pram = 0, vrat pointer na TRM_map_i - RMi pro mapy #define MSG_GET_RM_MODEL_I 607 ///< Pram = 0, vrat pointer na TRM_model_i - RMi pro modely #define MSG_GET_RM_XML_I 608 ///< Pram = structId (\ref STRUCT_TCL, \ref STRUCT_TERRAIN, \ref STRUCT_BONUS), vrat pointer na TRM_xml_i - RMi pro xml souboru bez zavislosti #define MSG_GET_RM_BUILDING_I 609 ///< Pram = 0, vrat pointer na TRM_unit_i - RMi pro jednotky #define MSG_GET_RM_SPELL_I 610 ///< Pram = 0, vrat pointer na TRM_spell_i - RMi pro kouzla #define MSG_GET_RM_SOUND_I 611 ///< Pram = 0, vrat pointer na TRM_sound_i - RMi pro zvuky #define MSG_GET_RM_BONUS_I 612 ///< Pram = 0, vrat pointer na TRM_advxml_i - RMi pro bonusy #define MSG_ANSWER 666 ///< Pokud zavedeme Sender/Reciever v SndMsg bude tato zprava odeslana tomu, kdo me o neco pozadal a ja mu musim poslat zpravu zpet. Parametr bude odvozen od parametru prijate zpravy. #define MSG_NET 700 ///< Param ukazatel na TPackage, odesle data z Param #define MSG_MESSAGE_RECEIVED 701 ///< Param ukazatel na TPackage, sitova vrstva zachytila novou zpravu #define MSG_ADD_LOCAL_CLIENT 702 ///< Param = pole char[K8_MAX_NAME_LEN] - jmeno profilu, pozadavek na pridani klienta ve stejnem procesu #define MSG_NET_TEST 703 ///< Param = 0, testovaci zprava #define MSG_NET_STOP 704 ///< Param = NULL, ukonceni TClient a/nebo TServer #define MSG_NET_STARTSERVER 705 ///< Param = TNetStartServer*, zahaji server, param = TNetStartServer* #define MSG_NET_STARTCLIENT 706 ///< Param = TNetStartClient*, Zahaji klienta, param = TNetStartClient* #define MSG_NET_DISCONNECT 707 ///< Param = clientId, nasilne odpojeni klienta, param je clientid, ktereho odpojit #define MSG_NET_OTHER_GAMES_INFO 708 ///< Param = DA*, oznameni, ze okolni hry jsou k dispozici, param je seznam adres #define MSG_SEARCH_GAMES 709 ///< Param = NULL, pozadavek na zjisteni oklnich her #define MSG_NET_CONNECTIONFAILED 710 ///< Param = NULL, oznameni, ze pripojeni klienta se nezdarilo #define MSG_NET_CONNECTIONSUCCESSFUL 711 ///< Param = NULL, oznameni, ze pripojeni klienta se zdarilo #define MSG_CLIENT_HAS_DISCONNECTED 712 ///< Param = clientId, oznameni u serveru, ze se zavrelo spojeni na klienta #define MSG_NET_LOST_CONNECTION 713 ///< Param = NULL, oznameni u klienta, ze se zavrelo spojeni na server #define MSG_NET_STOPCLIENT 714 ///< Param = NULL, ukonceni prace sitoveho klienta #define MSG_NET_ROLESETTINGDATA 715 ///< Param ukazatel na TPackage, zprava z daty pri nastavovani roli #define MSG_NET_CHAT 716 ///< Param ukazatel na TPackage, chatovaci zprava #define MSG_NEW_CONNECTION_ACCEPTED 717 ///< Param = int clientid, informace o pripojeni noveho klienta #define MSG_NEW_CONNECTION_INFO 718 ///< Param ukazatel na TPackage, preposilani informaci o pripojeni na sitovou vrstu klientu #define MSG_NEW_CONNECTION_REPORT 719 ///< Param = clientId, davani vsem klientum na vedomi, ze se nekdo pripojil #define MSG_NEW_CONNECTION_SYNCHRO1 720 ///< Param ukazatel na TNodeInfo klienta, ktery se prave pripojil, navazani komunikace s klientem #define MSG_NEW_CONNECTION_SYNCHRO2 721 ///< Param ukazatel na TPackage, zprava od serveru pro klienta s jeho clientid, navazani komunikace se serverem #define MSG_NEW_CONNECTION_SYNCHRO3 722 ///< Param ukazatel na TPackage, zprava od klienta s jeho jmenem profilu #define MSG_NEW_CONNECTION_SYNCHRO4 736 ///< Param ukazatel na TPackage, zprava od serveru pro klienta s jeho opravdovym clientid v pripade reconnectu #define MSG_NEW_CONNECTION_SYNCHRO5 737 ///< Param ukazatel na TPackage, zprava od klienta, ze je vse ok #define MSG_GET_NETWORK_PARTICIPANTS 723 ///< Param ukazatel na TClientsInfo, prekopiruje z TClient informace o ucastnicich v siti #define MSG_CLIENT_DISCONNECTION_ACCEPTED 724 ///< Param = clientId,Informace o tom, ze se klient odpojil (at nasilne tak sam), param == client_id #define MSG_CLIENT_DISCONNECTION_INFO 725 ///< Param ukazatel na TPackage, preposilani informaci o odpojeni na sitovou vrstu klientu #define MSG_CLIENT_DISCONNECTION_REPORT 726 ///< Param = clientId,Informace o tom, ze se klient odpojil (at nasilne tak sam), param == client_id #define MSG_CLIENT_RECONNECTION_ACCEPTED 727 ///< Param = clientId, oznameni, ze se behem hry (ne v pre-game) vratil klient, ktery se odpojil, param je ukazatel na TNodeInfo prislusneho klienta #define MSG_CLIENT_RECONNECTION_INFO 728 ///< Param ukazatel na TPackage, preposilani informaci o znovupripojeni na sitovou vrstu klientu #define MSG_CLIENT_RECONNECTION_REPORT 729 ///< Param = clientId, oznameni, ze se behem hry (ne v pre-game) vratil klient, ktery se odpojil, param je ukazatel na TNodeInfo prislusneho klienta #define MSG_LOCAL_CLIENT_ADDED 730 ///< Param = clientId, informace, ze byl pridan lokalni klient (aby dosla i po pridani lokalniho klienta zpatky vlastni zprava o novem pripojeni a mohl se pripadne modifikovat TClient) #define MSG_CLIENT_HAS_RECONNECTED 731 ///< Param = clientId, oznameni u serveru, ze se znovu pripojil klient #define MSG_NET_START_NETWORK 732 ///< Param = NULL, zahajeni site (mozno volat opakovane, dalsi volani se jiz neprovedou) #define MSG_NET_STOP_SEARCHING_LAN 733 ///< Param = NULL, ukonceni sledovani okolnich her na LAN #define MSG_NET_LAN_GAMES_INFO 734 ///< Param = DA*, oznameni, pri zmene LAN her #define MSG_NET_PING 735 ///< Param = NULL, Zprava s pingem // +--------------------------------------------------------------------------+ // | | // | T E L A Z P R A V P O S I L A N Y C H L O K A L N E | // | | // +--------------------------------------------------------------------------+ // Do nasledujici casti souboru patri tela zprav, posilanych lokalne, v ramci // jednoho message systemu. Jedna se o klasicke STRUCTy. /** parametr zpravy MSG_NET_STARTSERVER */ struct TNetStartServer{ int iSize; int maxPlayers; ///< pocet hracu ve hre int localGame; ///< 1-hra vice hracu na jednom pocitaci, 0-sitova hra int iResult; ///< vysledek inicializace int port; ///< port po kterem se bude komunikovat int reconnect; ///< zda povolit znovu pripojeni hracu }; /** parametr zpravy MSG_NET_STARTCLIENT */ struct TNetStartClient{ int iSize; int localGame; ///< 1-hra vice hracu na jednom pocitaci, 0-sitova hra char* connectto; ///< adresa serveru int port; ///< port na ktery se bude klient pripojovat char profile_name[K8_MAX_NAME_LEN]; ///< Jmeno profilu, ktery se pripojil }; // +--------------------------------------------------------------------------+ // | | // | T E L A Z P R A V P O S I L A N Y C H P O S I T I | // | | // +--------------------------------------------------------------------------+ // Do nasledujici casti souboru patri definice zprav, posilanych po siti. // Nejedna se o klasicke STRUCTy, nebot data po siti se prenaseji ve forme // XML zprav. Jedna se o jednotlive NAMESPACEy, jejichz prvky jsou typu // const wchar_t[]. #endif /*****************************************************************************/