From: <geo...@us...> - 2010-10-10 23:56:11
|
Revision: 3809 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3809&view=rev Author: geoffthemedio Date: 2010-10-10 23:56:04 +0000 (Sun, 10 Oct 2010) Log Message: ----------- -Added autogenerated effects descriptions to building indicators when those descriptions are enabled. -Fixed some issues with autoresolved combat, and adding more logging to that function. -Removed sitrep generation test effects from some buildings -Commented out some verbose message logging on server Modified Paths: -------------- trunk/FreeOrion/UI/InfoPanels.cpp trunk/FreeOrion/combat/CombatSystem.cpp trunk/FreeOrion/default/buildings.txt trunk/FreeOrion/network/ServerNetworking.cpp Modified: trunk/FreeOrion/UI/InfoPanels.cpp =================================================================== --- trunk/FreeOrion/UI/InfoPanels.cpp 2010-10-04 21:14:16 UTC (rev 3808) +++ trunk/FreeOrion/UI/InfoPanels.cpp 2010-10-10 23:56:04 UTC (rev 3809) @@ -1935,7 +1935,11 @@ m_graphic = new GG::StaticGraphic(GG::X0, GG::Y0, Width(), GG::Y(Value(Width())), texture, GG::GRAPHIC_FITGRAPHIC | GG::GRAPHIC_PROPSCALE); AttachChild(m_graphic); - SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>(new IconTextBrowseWnd(texture, UserString(type->Name()), UserString(type->Description())))); + std::string desc = UserString(type->Description()); + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !type->Effects().empty()) { + desc += boost::io::str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(type->Effects())); + } + SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>(new IconTextBrowseWnd(texture, UserString(type->Name()), desc))); if (building->OrderedScrapped()) { boost::shared_ptr<GG::Texture> scrap_texture = ClientUI::GetTexture(ClientUI::ArtDir() / "misc" / "scrapped.png", true); Modified: trunk/FreeOrion/combat/CombatSystem.cpp =================================================================== --- trunk/FreeOrion/combat/CombatSystem.cpp 2010-10-04 21:14:16 UTC (rev 3808) +++ trunk/FreeOrion/combat/CombatSystem.cpp 2010-10-10 23:56:04 UTC (rev 3809) @@ -231,6 +231,9 @@ if (damage <= 0.0) return; + Logger().debugStream() << "AttackShipShip: attacker: " << attacker->Dump() << "\ntarget: " << target->Dump(); + + Meter* target_shield = target->UniverseObject::GetMeter(METER_SHIELD); Meter* target_structure = target->UniverseObject::GetMeter(METER_STRUCTURE); if (!target_shield || ! target_structure) { @@ -245,14 +248,16 @@ if (shield_damage >= target_shield->Current()) structure_damage = std::min(target_structure->Current(), damage - shield_damage); - if (shield_damage >= 0) { + if (shield_damage > 0) { target_shield->AddToCurrent(-shield_damage); Logger().debugStream() << "COMBAT: Ship " << attacker->Name() << " (" << attacker->ID() << ") does " << shield_damage << " shield damage to Ship " << target->Name() << " (" << target->ID() << ")"; } - if (structure_damage >= 0) { + if (structure_damage > 0) { target_structure->AddToCurrent(-structure_damage); Logger().debugStream() << "COMBAT: Ship " << attacker->Name() << " (" << attacker->ID() << ") does " << structure_damage << " structure damage to Ship " << target->Name() << " (" << target->ID() << ")"; } + + Logger().debugStream() << "after AttackShipShip: attacker: " << attacker->Dump() << "\ntarget: " << target->Dump(); } void AttackShipPlanet(Ship* attacker, Planet* target) { @@ -266,13 +271,18 @@ if (damage <= 0.0) return; - Meter* target_shield = target->UniverseObject::GetMeter(METER_SHIELD); - Meter* target_structure = target->UniverseObject::GetMeter(METER_STRUCTURE); + Logger().debugStream() << "AttackShipPlanet: ship: " << attacker->Dump() << "\nplanet: " << target->Dump(); + + Meter* target_shield = target->GetMeter(METER_SHIELD); Meter* target_construction = target->UniverseObject::GetMeter(METER_CONSTRUCTION); - if (!target_shield || ! target_structure || !target_construction) { - Logger().errorStream() << "couldn't get target structure, shield, or construction meter"; + if (!target_shield) { + Logger().errorStream() << "couldn't get target shield meter"; return; } + if (!target_construction) { + Logger().errorStream() << "couldn't get target construction meter"; + return; + } // damage shields, limited by shield current value and damage amount. // remaining damage, if any, above shield current value goes to construction @@ -289,6 +299,8 @@ target_construction->AddToCurrent(-construction_damage); Logger().debugStream() << "COMBAT: Ship " << attacker->Name() << " (" << attacker->ID() << ") does " << construction_damage << " construction damage to Planet " << target->Name() << " (" << target->ID() << ")"; } + + Logger().debugStream() << "after AttackShipPlanet: ship: " << attacker->Dump() << "\nplanet: " << target->Dump(); } void AttackPlanetShip(Planet* attacker, Ship* target) { @@ -299,6 +311,8 @@ if (damage <= 0.0) return; + Logger().debugStream() << "AttackPlanetShip: planet: " << attacker->Dump() << "\nship: " << target->Dump(); + Meter* target_shield = target->UniverseObject::GetMeter(METER_SHIELD); Meter* target_structure = target->UniverseObject::GetMeter(METER_STRUCTURE); if (!target_shield || ! target_structure) { @@ -321,9 +335,12 @@ target_structure->AddToCurrent(-structure_damage); Logger().debugStream() << "COMBAT: Planet " << attacker->Name() << " (" << attacker->ID() << ") does " << structure_damage << " structure damage to Ship " << target->Name() << " (" << target->ID() << ")"; } + + Logger().debugStream() << "after AttackPlanetShip: planet: " << attacker->Dump() << "\nship: " << target->Dump(); } void AttackPlanetPlanet(Planet* attacker, Planet* target) { + Logger().debugStream() << "AttackPlanetPlanet does nothing!"; // intentionally left empty } } @@ -343,7 +360,20 @@ int seed = first_object->ID() + CurrentTurn(); Seed(seed); - std::vector<int> all_combat_object_IDs = combat_info.objects.FindObjectIDs(); + + // compile list of valid objects to attack or be attacked in this combat + std::vector<int> all_combat_object_IDs; + for (ObjectMap::iterator it = combat_info.objects.begin(); it != combat_info.objects.end(); ++it) { + const UniverseObject* obj = it->second; + if (obj->Unowned()) + continue; + if (universe_object_cast<const System*>(obj)) + continue; + if (universe_object_cast<const Fleet*>(obj)) + continue; + all_combat_object_IDs.push_back(it->first); + } + SmallIntDistType object_num_dist = SmallIntDist(0, all_combat_object_IDs.size() - 1); // to pick an object from the vector @@ -354,10 +384,10 @@ for (std::vector<int>::const_iterator object_it = all_combat_object_IDs.begin(); object_it != all_combat_object_IDs.end(); ++object_it) { int object_id = *object_it; const UniverseObject* obj = combat_info.objects.Object(object_id); - if (universe_object_cast<const System*>(obj)) - continue; - if (universe_object_cast<const Fleet*>(obj)) - continue; + //if (universe_object_cast<const System*>(obj)) + // continue; + //if (universe_object_cast<const Fleet*>(obj)) + // continue; const std::set<int>& owners = obj->Owners(); @@ -383,7 +413,7 @@ // check if object is already destroyed. if so, skip this round if (combat_info.destroyed_object_ids.find(attacker_id) != combat_info.destroyed_object_ids.end()) { - Logger().debugStream() << "skipping destroyed object as attack object"; + //Logger().debugStream() << "skipping destroyed object as attack object"; continue; } @@ -395,11 +425,11 @@ // fleets and the system can't attack if (universe_object_cast<const System*>(attacker)) { - Logger().debugStream() << "skipping system as attack object"; + //Logger().debugStream() << "skipping system as attack object"; continue; } if (universe_object_cast<const Fleet*>(attacker)) { - Logger().debugStream() << "skipping fleet as attack object"; + //Logger().debugStream() << "skipping fleet as attack object"; continue; } // TODO: skip buildings? @@ -409,7 +439,7 @@ // this object has only one onwer. const std::set<int>& owners = attacker->Owners(); if (owners.empty()) { - Logger().debugStream() << "skipping unowned attacker object: " << attacker->Name() << "(" << attacker->ID() << ")"; + //Logger().debugStream() << "skipping unowned attacker object: " << attacker->Name() << "(" << attacker->ID() << ")"; continue; } @@ -425,7 +455,7 @@ const std::vector<int>& valid_target_ids = target_vec_it->second; - Logger().debugStream() << "Attacker: " << attacker->Name() << " (" << attacker->ID() << ")"; + Logger().debugStream() << "Attacker: " << attacker->Dump(); SmallIntDistType target_id_num_dist = SmallIntDist(0, valid_target_ids.size() - 1); // to pick an object from the vector @@ -446,7 +476,7 @@ continue; } - Logger().debugStream() << "Target: " << target->Name() << " (" << target->ID() << ")"; + Logger().debugStream() << "Target: " << target->Dump(); // do actual attack if (Ship* attack_ship = universe_object_cast<Ship*>(attacker)) { Modified: trunk/FreeOrion/default/buildings.txt =================================================================== --- trunk/FreeOrion/default/buildings.txt 2010-10-04 21:14:16 UTC (rev 3808) +++ trunk/FreeOrion/default/buildings.txt 2010-10-10 23:56:04 UTC (rev 3809) @@ -18,13 +18,6 @@ SetTargetFarming Value + Target.Population * 1.0 SetTargetMining Value + Target.Population * 0.5 SetTargetIndustry Value + Target.Population * 1.0 - GenerateSitRepMessage - message = "TEST_EFFECT_MESSAGE" - parameters = [ - tag = "species" data = Source.Planet.Species - tag = "buildingtype" data = Source.BuildingType - ] - empire = Source.Owner ] graphic = "" @@ -51,23 +44,8 @@ stackinggroup = "IMPERIAL_PALACE_EFFECT" effects = [ SetTargetConstruction Value + 10 - SetOwnerCapitol - GenerateSitRepMessage - message = "TEST_EFFECT_MESSAGE2" - parameters = [ - tag = "empire" data = Source.Owner - tag = "shipdesign" data = 3 - tag = "planet" data = Source.System.ID - ] - empire = Source.Owner - GenerateSitRepMessage - message = "TEST_EFFECT_MESSAGE2" - parameters = [ - tag = "empire" data = Source.Owner - tag = "shipdesign" data = "9" - tag = "planet" data = 14 - ] - empire = Source.Owner + SetDefense Value + 5 + SetOwnerCapitol ] graphic = "" Modified: trunk/FreeOrion/network/ServerNetworking.cpp =================================================================== --- trunk/FreeOrion/network/ServerNetworking.cpp 2010-10-04 21:14:16 UTC (rev 3808) +++ trunk/FreeOrion/network/ServerNetworking.cpp 2010-10-10 23:56:04 UTC (rev 3809) @@ -156,9 +156,9 @@ } else { assert(static_cast<int>(bytes_transferred) <= m_incoming_header_buffer[4]); if (static_cast<int>(bytes_transferred) == m_incoming_header_buffer[4]) { - if (TRACE_EXECUTION) - Logger().debugStream() << "PlayerConnection::HandleMessageBodyRead(): " - << "received message " << m_incoming_message; + //if (TRACE_EXECUTION) + //Logger().debugStream() << "PlayerConnection::HandleMessageBodyRead(): " + // << "received message " << m_incoming_message; if (EstablishedPlayer()) { EventSignal(boost::bind(m_player_message_callback, m_incoming_message, @@ -316,9 +316,9 @@ void ServerNetworking::SendMessage(const Message& message, PlayerConnectionPtr player_connection) { - if (TRACE_EXECUTION) - Logger().debugStream() << "ServerNetworking::SendMessage : sending message " - << message; + //if (TRACE_EXECUTION) + // Logger().debugStream() << "ServerNetworking::SendMessage : sending message " + // << message; player_connection->SendMessage(message); } @@ -335,9 +335,9 @@ return; } - if (TRACE_EXECUTION) - Logger().debugStream() << "ServerNetworking::SendMessage : sending message " - << message; + //if (TRACE_EXECUTION) + // Logger().debugStream() << "ServerNetworking::SendMessage : sending message " + // << message; player->SendMessage(message); } |