From: <geo...@us...> - 2010-07-18 04:31:27
|
Revision: 3678 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3678&view=rev Author: geoffthemedio Date: 2010-07-18 04:31:21 +0000 (Sun, 18 Jul 2010) Log Message: ----------- -Removed file scope FindColonyShip function in SidePanel.cpp that was used to pick a colony ship to consume when the colonize button was clicked. -Renamed ValidColonyShipSelected to ValidSelectedColonyShip and modified it to return a pointer to the selected colony ship instead of the bool it was before. This pointer still evaluates to true / false when just checking whether there is a ship available, but also is used to replaced FindColonyShip for responding to colonize button clicks. -Accordingly modified SidePanel::PlanetPanel::ClickColonize to use ValidSelectedColonyShip, and to remove the popup dialog when no single ship was found. Also removed the stringtable entry for that popup, since it's no longer needed. Modified Paths: -------------- trunk/FreeOrion/UI/SidePanel.cpp trunk/FreeOrion/default/eng_stringtable.txt Modified: trunk/FreeOrion/UI/SidePanel.cpp =================================================================== --- trunk/FreeOrion/UI/SidePanel.cpp 2010-07-18 04:18:45 UTC (rev 3677) +++ trunk/FreeOrion/UI/SidePanel.cpp 2010-07-18 04:31:21 UTC (rev 3678) @@ -647,57 +647,6 @@ return UserString(boost::lexical_cast<std::string>(planet.EnvironmentForSpecies(species_name))); } - - Ship* FindColonyShip(int system_id) { - const System* system = GetObject<System>(system_id); - if (!system) return 0; - - std::vector<int> fleet_ids = system->FindObjectIDs<Fleet>(); - - int empire_id = HumanClientApp::GetApp()->EmpireID(); - - // check all fleets in this system... - for (std::vector<int>::const_iterator it = fleet_ids.begin(); it != fleet_ids.end(); ++it) { - Fleet* fleet = GetObject<Fleet>(*it); - if (!fleet) { - Logger().errorStream() << "FindColonyShip couldn't get fleet with id " << *it; - continue; - } - - // reject fleets not owned by this empire - if (fleet->Owners().find(empire_id) == fleet->Owners().end()) continue; - - // reject fleets that are moving - if (!fleet->Accept(StationaryFleetVisitor(*fleet->Owners().begin()))) continue; - - // check if any of the ship in this fleet is a colony ship - for (Fleet::const_iterator it = fleet->begin(); it != fleet->end(); ++it) { - Ship* s = GetObject<Ship>(*it); - if (!s) { - Logger().errorStream() << "coudln't find ship with id: " << *it; - continue; - } - - //Logger().debugStream() << "FindColonyShip examining ship " << s->Name(); - - const ShipDesign* design = s->Design(); - - if (!design) { - Logger().errorStream() << "coudln't get ship design of ship " << *it << " with design id: " << s->DesignID(); - continue; - } - - //Logger().debugStream() << "... ship design name " << design->Name(); - - if (design->CanColonize()) { - //Logger().debugStream() << "SidePanel:FindcolonyShip returning " << s->Name(); - return s; - } - } - } - //Logger().debugStream() << "FindcolonyShip returning null"; - return 0; // no ships found... - } } //////////////////////////////////////////////// @@ -970,16 +919,16 @@ } namespace { - bool ValidColonyShipSelected(int system_id) { + const Ship* ValidSelectedColonyShip(int system_id) { // if not looking in a valid system, no valid colony ship can be available if (system_id == UniverseObject::INVALID_OBJECT_ID) - return false; + return 0; // is there a valid single selected ship in the active FleetWnd? int ship_id = FleetUIManager::GetFleetUIManager().SelectedShipID(); const Ship* ship = GetUniverse().Objects().Object<Ship>(ship_id); if (!ship) - return false; + return 0; // is selected ship: a colony ship, owned by this client's player, // in the right system, and does it have a valid species? @@ -988,10 +937,10 @@ !ship->OwnedBy(HumanClientApp::GetApp()->EmpireID()) || ship->SpeciesName().empty()) { - return false; + return 0; } - return true; + return ship; } } @@ -1086,7 +1035,7 @@ owner == OS_NONE && planet->CurrentMeterValue(METER_TARGET_POPULATION) > 0 && !planet->IsAboutToBeColonized() && - ValidColonyShipSelected(SidePanel::SystemID())) + ValidSelectedColonyShip(SidePanel::SystemID())) { AttachChild(m_button_colonize); std::string target_pop = DoubleToString(planet->CurrentMeterValue(METER_TARGET_POPULATION), 2, false); @@ -1318,28 +1267,21 @@ // colonize if (it == pending_colonization_orders.end()) { - Ship* ship = FindColonyShip(planet->SystemID()); + const Ship* ship = ValidSelectedColonyShip(planet->SystemID()); if (!ship) { - Logger().errorStream() << "SidePanel::PlanetPanel::ClickColonize ship not found!"; + Logger().errorStream() << "SidePanel::PlanetPanel::ClickColonize valid colony not found!"; return; } - + if (!ship->OwnedBy(empire_id) || ship->Owners().size() > 1) { + Logger().errorStream() << "SidePanel::PlanetPanel::ClickColonize selected colony ship not owned by just this client's player."; + return; + } const Fleet* fleet = GetObject<Fleet>(ship->FleetID()); if (!fleet) { Logger().errorStream() << "SidePanel::PlanetPanel::ClickColonize fleet not found!"; return; } - if (!fleet->Accept(StationaryFleetVisitor(*fleet->Owners().begin()))) { - GG::ThreeButtonDlg dlg(GG::X(320), GG::Y(200), UserString("SP_USE_DEPARTING_COLONY_SHIPS_QUESTION"), - ClientUI::GetFont(), ClientUI::WndColor(), ClientUI::CtrlBorderColor(), - ClientUI::WndColor(), ClientUI::TextColor(), 2, - UserString("YES"), UserString("NO")); - dlg.Run(); - if (dlg.Result() != 0) - return; - } - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetColonizeOrder(empire_id, ship->ID(), planet->ID()))); } else { Modified: trunk/FreeOrion/default/eng_stringtable.txt =================================================================== --- trunk/FreeOrion/default/eng_stringtable.txt 2010-07-18 04:18:45 UTC (rev 3677) +++ trunk/FreeOrion/default/eng_stringtable.txt 2010-07-18 04:31:21 UTC (rev 3678) @@ -1570,12 +1570,6 @@ SP_ENTER_NEW_PLANET_NAME Enter new planet name -SP_USE_DEPARTING_COLONY_SHIPS_QUESTION -'''All colony ships in this system have been -given orders to leave the system. - -Use one of the departing colony ships?''' - ################# # Fleet Window # ################# |