/** @file /world/world_messages.cpp Implementace hlavickoveho souboru /world/world_messages.h @author Petr Wolf */ #include "world/world_messages.h" using namespace std; using namespace ai_ns::diplomacy_ns; TPacket_SyncResult::TPacket_SyncResult() { status = 0; } TPacket_SyncResult::TPacket_SyncResult(K8_ERROR code) { status = code; } TPacket_AsyncResult::TPacket_AsyncResult() { player_id = 0; } TPacket_ErrorResult::TPacket_ErrorResult() { error = 0; } void PACKET_GAME_START_Copy(const PACKET_GAME_START * source, PACKET_GAME_START * target) { target->map_id = source->map_id; target->end_game_condition = source->end_game_condition; for (int i = 0; i < MAX_PLAYERS; i++) { if ((target->players[i].player_id = source->players[i].player_id) > 0) { target->players[i].client_id = source->players[i].client_id; snprintf(target->players[i].name, MAX_STRLEN, source->players[i].name); target->players[i].type = source->players[i].type; } } } TPacket_RCT_UNIT_CLICK::TPacket_RCT_UNIT_CLICK() { for (int i = 0; i < UNIT_ACTION_COUNT; i++) actions[i] = 0; } TPacket_RCT_BUILDING_CLICK::TPacket_RCT_BUILDING_CLICK() { for (int i = 0; i < BUILDING_ACTION_COUNT; i++) actions[i] = 0; } void TPacket_RCT_UNIT_SUICIDE::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); READ_FROM_XML(package, &hidden, "hidden"); } void TPacket_RCT_UNIT_SUICIDE::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); WRITE_TO_XML(package, &hidden, "hidden"); } void TPacket_RCT_BUILDING_SUICIDE::readFromXML(TPackage * package) { GET_INT(package, "building_id", building_id); GET_INT(package, "unit_killed", unit_killed); READ_FROM_XML(package, &hidden, "hidden"); } void TPacket_RCT_BUILDING_SUICIDE::writeToXML(TPackage * package) { SET_INT(package, "building_id", building_id); SET_INT(package, "unit_killed", unit_killed); WRITE_TO_XML(package, &hidden, "hidden"); } void TPacket_RCT_BUILDING_RECRUIT_UNIT::readFromXML(TPackage * package) { GET_INT(package, "building_id", building_id); GET_INT(package, "unit_type", unit_type); GET_INT(package, "unit_id", unit_id); GET_INT(package, "cost", cost); READ_FROM_XML(package, &shown, "shown"); } void TPacket_RCT_BUILDING_RECRUIT_UNIT::writeToXML(TPackage * package) { SET_INT(package, "building_id", building_id); SET_INT(package, "unit_type", unit_type); SET_INT(package, "unit_id", unit_id); SET_INT(package, "cost", cost); WRITE_TO_XML(package, &shown, "shown"); } TPacket_RET_BUILDING_RANGE_Position::TPacket_RET_BUILDING_RANGE_Position() { position = 0; } TPacket_RET_BUILDING_RANGE_Position::TPacket_RET_BUILDING_RANGE_Position(HEX_ID _position, std::vector _orientation) { position = _position; orientation = _orientation; } void TPacket_RCT_START_BUILDING::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); GET_INT(package, "building_type", building_type); GET_INT(package, "location", location); GET_INT(package, "orientation", orientation); GET_INT(package, "building_id", building_id); GET_INT(package, "lives", lives); GET_INT(package, "cost", cost); READ_FROM_XML(package, &shown, "shown"); READ_FROM_XML(package, &hidden, "hidden"); } void TPacket_RCT_START_BUILDING::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); SET_INT(package, "building_type", building_type); SET_INT(package, "location", location); SET_INT(package, "orientation", orientation); SET_INT(package, "building_id", building_id); SET_INT(package, "lives", lives); SET_INT(package, "cost", cost); WRITE_TO_XML(package, &shown, "shown"); WRITE_TO_XML(package, &hidden, "hidden"); } void TPacket_RCT_REPAIR_BUILDING::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); GET_INT(package, "building_id", building_id); GET_INT(package, "lives", lives); GET_INT(package, "cost", cost); READ_FROM_XML(package, &shown, "shown"); READ_FROM_XML(package, &hidden, "hidden"); } void TPacket_RCT_REPAIR_BUILDING::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); SET_INT(package, "building_id", building_id); SET_INT(package, "lives", lives); SET_INT(package, "cost", cost); WRITE_TO_XML(package, &shown, "shown"); WRITE_TO_XML(package, &hidden, "hidden"); } void TPacket_RCT_STOP_BUILDING::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); } void TPacket_RCT_STOP_BUILDING::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); } void TPacket_RCT_SELL_BONUS::writeToXML(TPackage * package) { SET_INT(package, "building_id", building_id); SET_INT(package, "bonus_id", bonus_id); SET_INT(package, "cost", cost); SET_INT(package, "replace", replace); } void TPacket_RCT_SELL_BONUS::readFromXML(TPackage * package) { GET_INT(package, "building_id", building_id); GET_INT(package, "bonus_id", bonus_id); GET_INT(package, "cost", cost); GET_INT(package, "replace", replace); } void TPacket_RCT_UNIT_MOVE::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); WRITE_TO_XML(package, &path, "path"); } void TPacket_RCT_UNIT_MOVE::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); READ_FROM_XML(package, &path, "path"); } void TPacket_RCT_NEXT_TURN::writeToXML(TPackage * package) { SET_INT(package, "playerIdOnTurn", player_id_on_turn); SET_INT(package, "newRound", newRound); SET_INT(package, "moneyGain", moneyGain); SET_INT(package, "weatherState", weatherState); SET_INT(package, "moneyLack", moneyLack); WRITE_TO_XML(package, &movementPoints, "movementPoints"); WRITE_TO_XML(package, &buildingLives, "buildingLives"); WRITE_TO_XML(package, &unitsDeserted, "unitsDeserted"); WRITE_TO_XML(package, &unitsInterrupted, "unitsInterrupted"); WRITE_TO_XML(package, &unitsWounded, "unitsWounded"); WRITE_TO_XML(package, &unitsDied, "unitsDied"); WRITE_TO_XML(package, &menDied, "menDied"); WRITE_TO_XML(package, &shown, "shown"); WRITE_TO_XML(package, &hidden, "hidden"); // ulozeni diplomatickych zmen /* package->setEmpty("diplomacy", 0, NULL); int i = 1; for (std::vector::iterator it = diplomacy_changes.begin(); it != diplomacy_changes.end(); it++) { package->setInt(it->new_relationship.rs, "diplomacy", 0, "change", i, "new_relationship", 0, "rs", 0, NULL); package->setInt(it->new_relationship.offeredrs, "diplomacy", 0, "change", i, "new_relationship", 0, "offeredrs", 0, NULL); package->setInt(it->old_relationship.rs, "diplomacy", 0, "change", i, "old_relationship", 0, "rs", 0, NULL); package->setInt(it->old_relationship.offeredrs, "diplomacy", 0, "change", i, "old_relationship", 0, "offeredrs", 0, NULL); package->setInt(it->source_diplomat_world_id, "diplomacy", 0, "change", i, "source_diplomat_world_id", 0, NULL); package->setInt(it->target_diplomat_world_id, "diplomacy", 0, "change", i, "target_diplomat_world_id", 0, NULL); i++; } */ } void TPacket_RCT_NEXT_TURN::readFromXML(TPackage * package) { GET_INT(package, "playerIdOnTurn", player_id_on_turn); newRound = (package->getInt("newRound", 0, NULL) != 0); GET_INT(package, "moneyGain", moneyGain); moneyLack = (package->getInt("moneyLack", 0, NULL) != 0); GET_TINT(package, "weatherState", weatherState, World::WEATHER_STATE); READ_FROM_XML(package, &movementPoints, "movementPoints"); READ_FROM_XML(package, &buildingLives, "buildingLives"); READ_FROM_XML(package, &unitsDeserted, "unitsDeserted"); READ_FROM_XML(package, &unitsInterrupted, "unitsInterrupted"); READ_FROM_XML(package, &unitsWounded, "unitsWounded"); READ_FROM_XML(package, &unitsDied, "unitsDied"); READ_FROM_XML(package, &menDied, "menDied"); READ_FROM_XML(package, &shown, "shown"); READ_FROM_XML(package, &hidden, "hidden"); // nacteni diplomatickych zmen /* TPackSmall small(package->getSubtag("diplomacy", 0, NULL)); TXMLdata * xml_data = small.getXML(); DA ids; xml_data->getListOfIds(&ids, NULL, 0, NULL); for (int i = ids.getNext(-1); i != -1; i = ids.getNext(i)) { if (ids[i] == 1) { ai_ns::diplomacy_ns::TDipChange change; change.new_relationship.rs = (ai_ns::diplomacy_ns::TRelationship)small.getInt("change", i, "new_relationship", 0, "rs", 0, NULL); change.new_relationship.offeredrs = (ai_ns::diplomacy_ns::TRelationship)small.getInt("change", i, "new_relationship", 0, "offeredrs", 0, NULL); change.old_relationship.rs = (ai_ns::diplomacy_ns::TRelationship)small.getInt("change", i, "old_relationship", 0, "rs", 0, NULL); change.old_relationship.offeredrs = (ai_ns::diplomacy_ns::TRelationship)small.getInt("change", i, "old_relationship", 0, "offeredrs", 0, NULL); change.source_diplomat_world_id = small.getInt("change", i, "source_diplomat_world_id", 0, NULL); change.target_diplomat_world_id = small.getInt("change", i, "target_diplomat_world_id", 0, NULL); diplomacy_changes.push_back(change); } } */ } void TPacket_END_GAME::readFromXML(TPackage * package) { GET_TINT(package, "reason", reason, World::ENDGAME_REASON); GET_INT(package, "winner", winner); } void TPacket_END_GAME::writeToXML(TPackage * package) { SET_INT(package, "reason", reason); SET_INT(package, "winner", winner); } TPacket_RCT_UNIT_ATTACK::TPacket_RCT_UNIT_ATTACK() { attacker_killed = false; defender_killed = false; building_destroyed = false; } void TPacket_RCT_UNIT_ATTACK::writeToXML(TPackage * package) { SET_INT(package, "attacker", attacker); SET_INT(package, "target", target); SET_INT(package, "attacker_losses", attacker_losses); SET_INT(package, "attacker_wounds", attacker_wounds); SET_INT(package, "defender_losses", defender_losses); SET_INT(package, "defender_wounds", defender_wounds); SET_INT(package, "building_losses", building_losses); SET_INT(package, "attacker_experience", attacker_experience); SET_INT(package, "attacker_level", attacker_level); SET_INT(package, "defender_experience", defender_experience); SET_INT(package, "defender_level", defender_level); SET_INT(package, "attacker_killed", attacker_killed); SET_INT(package, "defender_killed", defender_killed); SET_INT(package, "building_destroyed", building_destroyed); WRITE_TO_XML(package, &attacker_hidden, "attacker_hidden"); WRITE_TO_XML(package, &defender_hidden, "defender_hidden"); } void TPacket_RCT_UNIT_ATTACK::readFromXML(TPackage * package) { GET_INT(package, "attacker", attacker); GET_INT(package, "target", target); GET_INT(package, "attacker_losses", attacker_losses); GET_INT(package, "attacker_wounds", attacker_wounds); GET_INT(package, "defender_losses", defender_losses); GET_INT(package, "defender_wounds", defender_wounds); GET_INT(package, "building_losses", building_losses); GET_INT(package, "attacker_experience", attacker_experience); GET_INT(package, "attacker_level", attacker_level); GET_INT(package, "defender_experience", defender_experience); GET_INT(package, "defender_level", defender_level); GET_INT(package, "attacker_killed", attacker_killed); GET_INT(package, "defender_killed", defender_killed); GET_INT(package, "building_destroyed", building_destroyed); READ_FROM_XML(package, &attacker_hidden, "attacker_hidden"); READ_FROM_XML(package, &defender_hidden, "defender_hidden"); } void TPacket_RCT_UNIT_HEAL::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); SET_INT(package, "lives", lives); } void TPacket_RCT_UNIT_HEAL::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); GET_INT(package, "lives", lives); } void TPacket_RCT_UNIT_RECRUIT::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); SET_INT(package, "lives", lives); SET_INT(package, "cost", cost); SET_INT(package, "level", level); SET_INT(package, "experience", experience); } void TPacket_RCT_UNIT_RECRUIT::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); GET_INT(package, "lives", lives); GET_INT(package, "cost", cost); GET_INT(package, "level", level); GET_INT(package, "experience", experience); } void TPacket_RCT_UNIT_RECRUIT_ELITE::writeToXML(TPackage * package) { SET_INT(package, "unit_id", unit_id); SET_INT(package, "lives", lives); SET_INT(package, "cost", cost); } void TPacket_RCT_UNIT_RECRUIT_ELITE::readFromXML(TPackage * package) { GET_INT(package, "unit_id", unit_id); GET_INT(package, "lives", lives); GET_INT(package, "cost", cost); } void TPacket_BUILDING_OCCUPIED::writeToXML(TPackage * package) { SET_INT(package, "new_player_id", new_player_id); SET_INT(package, "building_id", building_id); SET_INT(package, "former_player_id", former_player_id); WRITE_TO_XML(package, &hidden, "hidden"); WRITE_TO_XML(package, &shown, "shown"); } void TPacket_BUILDING_OCCUPIED::readFromXML(TPackage * package) { GET_INT(package, "new_player_id", new_player_id); GET_INT(package, "building_id", building_id); GET_INT(package, "former_player_id", former_player_id); READ_FROM_XML(package, &hidden, "hidden"); READ_FROM_XML(package, &shown, "shown"); } void TPacket_TOWN_OCCUPIED::writeToXML(TPackage * package) { SET_INT(package, "new_player_id", new_player_id); SET_INT(package, "town_id", town_id); SET_INT(package, "former_player_id", former_player_id); WRITE_TO_XML(package, &hidden, "hidden"); WRITE_TO_XML(package, &shown, "shown"); } void TPacket_TOWN_OCCUPIED::readFromXML(TPackage * package) { GET_INT(package, "new_player_id", new_player_id); GET_INT(package, "town_id", town_id); GET_INT(package, "former_player_id", former_player_id); READ_FROM_XML(package, &hidden, "hidden"); READ_FROM_XML(package, &shown, "shown"); } void TPacket_KINGDOM_OCCUPIED::writeToXML(TPackage * package) { SET_INT(package, "new_player_id", new_player_id); SET_INT(package, "kingdom_id", kingdom_id); SET_INT(package, "former_player_id", former_player_id); } void TPacket_KINGDOM_OCCUPIED::readFromXML(TPackage * package) { GET_INT(package, "new_player_id", new_player_id); GET_INT(package, "kingdom_id", kingdom_id); GET_INT(package, "former_player_id", former_player_id); } void TPacket_PLAYER_DEFEATED::writeToXML(TPackage * package) { SET_INT(package, "defeated_player_id", defeated_player_id); } void TPacket_PLAYER_DEFEATED::readFromXML(TPackage * package) { GET_INT(package, "defeated_player_id", defeated_player_id); } void TPacket_VISIBILITY_CHANGE::writeToXML(TPackage * package) { SET_INT(package, "visibility_mask_player_id", visibility_mask_player_id); WRITE_TO_XML(package, &shown, "shown"); WRITE_TO_XML(package, &hidden, "hidden"); } void TPacket_VISIBILITY_CHANGE::readFromXML(TPackage * package) { GET_INT(package, "visibility_mask_player_id", visibility_mask_player_id); READ_FROM_XML(package, &shown, "shown"); READ_FROM_XML(package, &hidden, "hidden"); } TPacket_DIPLOMACY_RELATION_CHANGE::TPacket_DIPLOMACY_RELATION_CHANGE() { source_diplomat_world_id = 0; target_diplomat_world_id = 0; source_diplomat_penalty = 0; target_diplomat_penalty = 0; old_relationship = (ai_ns::diplomacy_ns::TRelationship)0; old_offered_relationship = (ai_ns::diplomacy_ns::TRelationship)0; new_relationship = (ai_ns::diplomacy_ns::TRelationship)0; new_offered_relationship = (ai_ns::diplomacy_ns::TRelationship)0; source_diplomat_penalty = 0; target_diplomat_penalty = 0; } TPacket_DIPLOMACY_RELATION_CHANGE::TPacket_DIPLOMACY_RELATION_CHANGE(TDipChange change) { source_diplomat_world_id = change.source_diplomat_world_id; target_diplomat_world_id = change.target_diplomat_world_id; source_diplomat_penalty = 0; target_diplomat_penalty = 0; old_relationship = change.old_relationship.rs; old_offered_relationship = change.old_relationship.offeredrs; new_relationship = change.new_relationship.rs; new_offered_relationship = change.new_relationship.offeredrs; source_diplomat_penalty = change.source_diplomat_penalty; target_diplomat_penalty = change.target_diplomat_penalty; } void TPacket_DIPLOMACY_RELATION_CHANGE::writeToXML(TPackage * package) { SET_INT(package, "source_diplomat_world_id", source_diplomat_world_id); SET_INT(package, "target_diplomat_world_id", target_diplomat_world_id); SET_INT(package, "old_relationship", old_relationship); SET_INT(package, "old_offered_relationship", old_offered_relationship); SET_INT(package, "new_relationship", new_relationship); SET_INT(package, "new_offered_relationship", new_offered_relationship); SET_INT(package, "source_diplomat_penalty", source_diplomat_penalty); SET_INT(package, "target_diplomat_penalty", target_diplomat_penalty); } void TPacket_DIPLOMACY_RELATION_CHANGE::readFromXML(TPackage * package) { GET_INT(package, "source_diplomat_world_id", source_diplomat_world_id); GET_INT(package, "target_diplomat_world_id", target_diplomat_world_id); GET_TINT(package, "old_relationship", old_relationship, ai_ns::diplomacy_ns::TRelationship); GET_TINT(package, "old_offered_relationship", old_offered_relationship, ai_ns::diplomacy_ns::TRelationship); GET_TINT(package, "new_relationship", new_relationship, ai_ns::diplomacy_ns::TRelationship); GET_TINT(package, "new_offered_relationship", new_offered_relationship, ai_ns::diplomacy_ns::TRelationship); GET_INT(package, "source_diplomat_penalty", source_diplomat_penalty); GET_INT(package, "target_diplomat_penalty", target_diplomat_penalty); } TPacket_AI_RET_HISTORY_PIECE::TPacket_AI_RET_HISTORY_PIECE() { action_id = 0; action_type = (World::ACTION_TYPE)0; data = NULL; }