From: <tz...@us...> - 2006-02-02 02:27:54
|
Revision: 1721 Author: tzlaine Date: 2006-02-01 18:27:42 -0800 (Wed, 01 Feb 2006) ViewCVS: http://svn.sourceforge.net/freeorion?rev=1721&view=rev Log Message: ----------- Added support for multi-fleet drag-drops in FleetWnd. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-02-02 00:24:13 UTC (rev 1720) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-02-02 02:27:42 UTC (rev 1721) @@ -434,46 +434,50 @@ // Ship-display Wnds respond to changes in the system or fleet they display anyway. virtual void AcceptDrops(std::list<Wnd*>& wnds, const GG::Pt& pt) { + std::vector<Fleet*> fleets; std::vector<Ship*> ships; std::vector<int> ship_ids; for (std::list<Wnd*>::const_iterator it = wnds.begin(); it != wnds.end(); ++it) { - if ((*it)->DragDropDataType() == SHIP_DROP_TYPE_STRING) { + if ((*it)->DragDropDataType() == FLEET_DROP_TYPE_STRING) { + fleets.push_back(static_cast<FleetRow*>(*it)->m_fleet); + } else if ((*it)->DragDropDataType() == SHIP_DROP_TYPE_STRING) { ships.push_back(static_cast<ShipRow*>(*it)->m_ship); ship_ids.push_back(ships.back()->ID()); - } else if ((*it)->DragDropDataType() != FLEET_DROP_TYPE_STRING) { + } else { wnds.clear(); return; } } + assert(ships.empty() != fleets.empty()); + wnds.clear(); int row_index = RowUnderPt(pt); - if (m_read_only || row_index < 0 || NumRows() <= row_index) { - wnds.clear(); + if (m_read_only || row_index < 0 || NumRows() <= row_index) return; - } Fleet* target_fleet = static_cast<FleetRow*>(&GetRow(row_index))->m_fleet; assert(target_fleet); - if (wnds.front()->DragDropDataType() == SHIP_DROP_TYPE_STRING) { - if (!CanJoin(ships[0], target_fleet)) { - wnds.clear(); - return; + if (!fleets.empty()) { + for (unsigned int i = 0; i < fleets.size(); ++i) + { + // disallow drops across fleet windows; fleets must be at the same location + if (target_fleet->X() != fleets[i]->X() || target_fleet->Y() != fleets[i]->Y()) + continue; + HumanClientApp::Orders().IssueOrder( + new FleetTransferOrder(HumanClientApp::GetApp()->EmpireID(), fleets[i]->ID(), target_fleet->ID(), + std::vector<int>(fleets[i]->begin(), fleets[i]->end()))); + if (fleets[i]->NumShips() == 0) { + HumanClientApp::Orders().IssueOrder( + new DeleteFleetOrder(HumanClientApp::GetApp()->EmpireID(), fleets[i]->ID())); + } } - HumanClientApp::Orders().IssueOrder(new FleetTransferOrder(HumanClientApp::GetApp()->EmpireID(), ships[0]->FleetID(), - target_fleet->ID(), ship_ids)); - } else if (wnds.front()->DragDropDataType() == FLEET_DROP_TYPE_STRING) { - assert(wnds.size() == 1); - FleetRow* fleet_row = static_cast<FleetRow*>(wnds.front()); - // disallow drops across fleet windows; fleets must be at the same location - if (target_fleet->X() != fleet_row->m_fleet->X() || target_fleet->Y() != fleet_row->m_fleet->Y()) { - wnds.clear(); + } else if (!ships.empty()) { + if (!CanJoin(ships[0], target_fleet)) return; - } HumanClientApp::Orders().IssueOrder( - new FleetTransferOrder(HumanClientApp::GetApp()->EmpireID(), fleet_row->FleetID(), - target_fleet->ID(), std::vector<int>(fleet_row->m_fleet->begin(), fleet_row->m_fleet->end()))); + new FleetTransferOrder(HumanClientApp::GetApp()->EmpireID(), ships[0]->FleetID(), target_fleet->ID(), + ship_ids)); } - wnds.clear(); } private: @@ -749,7 +753,6 @@ void FleetDetailWnd::CloseClicked() { CUIWnd::CloseClicked(); - std::cout << "FleetDetailWnd::CloseClicked() : Deleting this" << std::endl; delete this; } @@ -915,7 +918,7 @@ if (fleet->SystemID() == UniverseObject::INVALID_OBJECT_ID) ClientUI::GetClientUI()->GetMapWnd()->SetFleetMovement(fleet); } else { - ClientUI::GetClientUI()->GetMapWnd()->SetProjectedFleetMovement(fleet, route) ; + ClientUI::GetClientUI()->GetMapWnd()->SetProjectedFleetMovement(fleet, route); } } } @@ -1081,6 +1084,7 @@ break; } } + std::cout << "DeleteFleetOrder(fleet_id=" << fleet->ID() << ")" << std::endl; HumanClientApp::Orders().IssueOrder(new DeleteFleetOrder(HumanClientApp::GetApp()->EmpireID(), fleet->ID())); } |
From: <tz...@us...> - 2006-02-06 05:29:27
|
Revision: 1733 Author: tzlaine Date: 2006-02-05 21:29:14 -0800 (Sun, 05 Feb 2006) ViewCVS: http://svn.sourceforge.net/freeorion?rev=1733&view=rev Log Message: ----------- Added logic to FleetWnd to prevent setting a path to an unreachable system. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-02-06 02:39:19 UTC (rev 1732) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-02-06 05:29:14 UTC (rev 1733) @@ -999,7 +999,7 @@ return; } - if (execute_move) { + if (execute_move && !route.empty()) { HumanClientApp::Orders().IssueOrder(new FleetMoveOrder(empire_id, fleet->ID(), start_system, system_id)); if (fleet->SystemID() == UniverseObject::INVALID_OBJECT_ID) ClientUI::GetClientUI()->GetMapWnd()->SetFleetMovement(fleet); |
From: <tz...@us...> - 2006-02-08 02:08:33
|
Revision: 1739 Author: tzlaine Date: 2006-02-07 18:08:18 -0800 (Tue, 07 Feb 2006) ViewCVS: http://svn.sourceforge.net/freeorion?rev=1739&view=rev Log Message: ----------- Added code to FleetWnd to ensure that it is only updated with fleets from the empire already being shown whenever the fleet list is refreshed. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-02-08 01:57:48 UTC (rev 1738) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-02-08 02:08:18 UTC (rev 1739) @@ -862,7 +862,7 @@ FleetWnd::FleetWnd(int x, int y, std::vector<Fleet*> fleets, int selected_fleet, bool read_only, Uint32 flags/* = CLICKABLE | DRAGABLE | ONTOP | CLOSABLE*/) : MapWndPopup("", x, y, 1, 1, flags | GG::RESIZABLE), - m_empire_id(-1), + m_empire_id(*fleets[0]->Owners().begin()), m_system_id(UniverseObject::INVALID_OBJECT_ID), m_read_only(read_only), m_moving_fleets(true), @@ -1260,8 +1260,11 @@ void FleetWnd::SystemChangedSlot() { const System* system = FleetInRow(0)->GetSystem(); - std::vector<const Fleet*> system_fleet_vec = system->FindObjects<Fleet>(); - std::set<const Fleet*> system_fleet_set(system_fleet_vec.begin(), system_fleet_vec.end()); + System::ConstObjectVec system_fleet_vec = system->FindObjects(OwnedVisitor<Fleet>(m_empire_id)); + std::set<const Fleet*> system_fleet_set; + for (System::ConstObjectVec::iterator it = system_fleet_vec.begin(); it != system_fleet_vec.end(); ++it) { + system_fleet_set.insert(static_cast<const Fleet*>(*it)); + } for (int i = 0; i < m_fleets_lb->NumRows(); ++i) { system_fleet_set.erase(FleetInRow(i)); } |
From: <tz...@us...> - 2006-03-03 23:06:38
|
Revision: 1792 Author: tzlaine Date: 2006-03-03 15:06:35 -0800 (Fri, 03 Mar 2006) ViewCVS: http://svn.sourceforge.net/freeorion?rev=1792&view=rev Log Message: ----------- Consolidated all the drag-drop validity checking in FleetWnd.cpp to 3 functions, and modified the rest of the code to use them consistently throughout. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-03-03 21:28:19 UTC (rev 1791) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-03-03 23:06:35 UTC (rev 1792) @@ -23,6 +23,10 @@ #include <boost/format.hpp> +//HACK! Since the new fleet drop target was originally a new fleet row in the fleets listbox, this class is used to +//represent the single control in every fleet row and the new fleet drop target. Note that this means that there is +//some code used under each use of this class, and that this is not always obvious in the method implementations of this +//class. class FleetDataPanel : public GG::Control { public: @@ -32,7 +36,7 @@ STAT_ICON_WD = 40 }; - FleetDataPanel(int w, int h, const Fleet* fleet); + FleetDataPanel(int w, int h, const Fleet* fleet, int empire = -1, int system_id = -1, double x = 0.0, double y = 0.0); bool Selected() const; @@ -49,6 +53,10 @@ void Refresh(); const Fleet* const m_fleet; + const int m_empire; + const int m_system_id; + const double m_x; + const double m_y; GG::StaticGraphic* m_fleet_icon; GG::TextControl* m_fleet_name_text; StatisticIcon* m_num_ships_stat; @@ -233,12 +241,30 @@ Ship* const m_ship; }; - bool CanJoin(const Ship* ship, const Fleet* fleet) + bool ValidShip(const Ship* ship, const Fleet* new_fleet) { const Fleet* current_fleet = ship->GetFleet(); - return current_fleet->ID() != fleet->ID() && (current_fleet->X() == fleet->X() && current_fleet->Y() == fleet->Y()); + return (!current_fleet || current_fleet->ID() != new_fleet->ID()) && + (ship->X() == new_fleet->X() && ship->Y() == new_fleet->Y()) && + ship->SystemID() == new_fleet->SystemID() && + *ship->Owners().begin() == *new_fleet->Owners().begin(); } + bool ValidShip(const Ship* ship, double x, double y, int system_id, int empire) + { + return (ship->X() == x && ship->Y() == y) && + ship->SystemID() == system_id && + *ship->Owners().begin() == empire; + } + + bool ValidFleet(const Fleet* fleet, const Fleet* target_fleet) + { + return fleet->ID() != target_fleet->ID() && + fleet->SystemID() == target_fleet->SystemID() && + (fleet->X() == target_fleet->X() && fleet->Y() == target_fleet->Y()) && + *fleet->Owners().begin() == *target_fleet->Owners().begin(); + } + bool temp_header_bool = RecordHeaderFile(FleetWndRevision()); bool temp_source_bool = RecordSourceFile("$Id$"); } @@ -246,9 +272,14 @@ //////////////////////////////////////////////// // FleetDataPanel //////////////////////////////////////////////// -FleetDataPanel::FleetDataPanel(int w, int h, const Fleet* fleet) : +FleetDataPanel::FleetDataPanel(int w, int h, const Fleet* fleet, + int empire/* = -1*/, int system_id/* = -1*/, double x/* = 0.0*/, double y/* = 0.0*/) : Control(0, 0, w, h, fleet ? 0 : GG::CLICKABLE), m_fleet(fleet), + m_empire(empire), + m_system_id(system_id), + m_x(x), + m_y(y), m_fleet_icon(0), m_fleet_name_text(new GG::TextControl(h, 0, w - h - 5, FLEET_NAME_HT, m_fleet ? m_fleet->Name() : "<i>" + UserString("FW_NEW_FLEET_LABEL") + "</i>", GG::GUI::GetGUI()->GetFont(ClientUI::FONT, ClientUI::PTS), m_fleet ? ClientUI::TEXT_COLOR : GG::CLR_BLACK, @@ -302,7 +333,8 @@ { Select(true); for (std::map<Wnd*, GG::Pt>::const_iterator it = drag_drop_wnds.begin(); it != drag_drop_wnds.end(); ++it) { - if (it->first->DragDropDataType() != SHIP_DROP_TYPE_STRING) { + if (it->first->DragDropDataType() != SHIP_DROP_TYPE_STRING || + !ValidShip(static_cast<ShipRow*>(it->first)->m_ship, m_x, m_y, m_system_id, m_empire)) { Select(false); break; } @@ -322,6 +354,10 @@ if ((*it)->DragDropDataType() == SHIP_DROP_TYPE_STRING) { ships.push_back(static_cast<ShipRow*>(*it)->m_ship); ship_ids.push_back(ships.back()->ID()); + if (!ValidShip(ships.back(), m_x, m_y, m_system_id, m_empire)) { + wnds.clear(); + return; + } } else { wnds.clear(); return; @@ -490,20 +526,37 @@ mutable boost::signal<void (Ship*, const std::vector<int>&)> NewFleetFromShipsSignal; - // HACK! This is sort of a dirty trick, but we return false here in all cases, even when we accept the dropped - // item. This keeps things simpler than if we handled ListBox::DroppedRow signals, since all the Fleet- and + // HACK! This is sort of a dirty trick, but we clear wnds here in all cases, even when we accept the dropped + // item(s). This keeps things simpler than if we handled ListBox::DroppedRow signals, since all the Fleet- and // Ship-display Wnds respond to changes in the system or fleet they display anyway. virtual void AcceptDrops(std::list<Wnd*>& wnds, const GG::Pt& pt) { + int row_index = RowUnderPt(pt); + if (m_read_only || row_index < 0 || NumRows() <= row_index) { + wnds.clear(); + return; + } + + Fleet* target_fleet = static_cast<FleetRow*>(&GetRow(row_index))->m_fleet; + assert(target_fleet); + std::vector<Fleet*> fleets; std::vector<Ship*> ships; std::vector<int> ship_ids; for (std::list<Wnd*>::const_iterator it = wnds.begin(); it != wnds.end(); ++it) { if ((*it)->DragDropDataType() == FLEET_DROP_TYPE_STRING) { fleets.push_back(static_cast<FleetRow*>(*it)->m_fleet); + if (!ValidFleet(fleets.back(), target_fleet)) { + wnds.clear(); + return; + } } else if ((*it)->DragDropDataType() == SHIP_DROP_TYPE_STRING) { ships.push_back(static_cast<ShipRow*>(*it)->m_ship); ship_ids.push_back(ships.back()->ID()); + if (!ValidShip(ships.back(), target_fleet)) { + wnds.clear(); + return; + } } else { wnds.clear(); return; @@ -512,18 +565,9 @@ assert(ships.empty() != fleets.empty()); wnds.clear(); - int row_index = RowUnderPt(pt); - if (m_read_only || row_index < 0 || NumRows() <= row_index) - return; - - Fleet* target_fleet = static_cast<FleetRow*>(&GetRow(row_index))->m_fleet; - assert(target_fleet); if (!fleets.empty()) { for (unsigned int i = 0; i < fleets.size(); ++i) { - // disallow drops across fleet windows; fleets must be at the same location - if (target_fleet->X() != fleets[i]->X() || target_fleet->Y() != fleets[i]->Y()) - continue; int fleet_id = fleets[i]->ID(); HumanClientApp::Orders().IssueOrder( new FleetTransferOrder(HumanClientApp::GetApp()->EmpireID(), fleets[i]->ID(), target_fleet->ID(), @@ -536,7 +580,7 @@ } } } else if (!ships.empty()) { - if (!CanJoin(ships[0], target_fleet)) + if (!ValidShip(ships[0], target_fleet)) return; HumanClientApp::Orders().IssueOrder( new FleetTransferOrder(HumanClientApp::GetApp()->EmpireID(), ships[0]->FleetID(), target_fleet->ID(), @@ -559,7 +603,8 @@ if (m_read_only || row_index < 0 || NumRows() <= row_index) return; - FleetDataPanel* fleet_data_panel = static_cast<FleetDataPanel*>((*static_cast<FleetRow*>(&GetRow(row_index)))[0]); + FleetRow* fleet_row = static_cast<FleetRow*>(&GetRow(row_index)); + FleetDataPanel* fleet_data_panel = static_cast<FleetDataPanel*>((*fleet_row)[0]); if (!fleet_data_panel->Selected()) { bool valid_drop = true; bool fleets_seen = false; @@ -567,7 +612,15 @@ for (std::map<Wnd*, GG::Pt>::const_iterator it = drag_drop_wnds.begin(); it != drag_drop_wnds.end(); ++it) { if (it->first->DragDropDataType() == FLEET_DROP_TYPE_STRING) { fleets_seen = true; + if (!ValidFleet(static_cast<FleetRow*>(it->first)->m_fleet, fleet_row->m_fleet)) { + valid_drop = false; + break; + } } else if (it->first->DragDropDataType() == SHIP_DROP_TYPE_STRING) { + if (!ValidShip(static_cast<ShipRow*>(it->first)->m_ship, fleet_row->m_fleet)) { + valid_drop = false; + break; + } ships_seen = true; } else { valid_drop = false; @@ -614,7 +667,7 @@ void SetFleet(Fleet* fleet) {m_fleet = fleet;} - // see comments above FleetsListBox::FleetsListBox() + // see comments above FleetsListBox::AcceptDrops() virtual void AcceptDrops(std::list<Wnd*>& wnds, const GG::Pt& pt) { if (wnds.front()->DragDropDataType() == SHIP_DROP_TYPE_STRING) { @@ -626,7 +679,7 @@ } ShipRow* ship_row = 0; - if (m_read_only || !(ship_row = dynamic_cast<ShipRow*>(wnds.front())) || !CanJoin(ship_row->m_ship, m_fleet)) { + if (m_read_only || !(ship_row = dynamic_cast<ShipRow*>(wnds.front())) || !ValidShip(ship_row->m_ship, m_fleet)) { wnds.clear(); return; } @@ -875,21 +928,19 @@ m_fleet_detail_panel(0) { assert(0 <= selected_fleet && selected_fleet < static_cast<int>(fleets.size())); + assert(!fleets.empty()); - if (!fleets.empty()) - { - m_system_id = fleets[0]->SystemID(); - for (unsigned int i = 1; i < fleets.size(); ++i) { - if (m_system_id != fleets[i]->SystemID()) - m_system_id = UniverseObject::INVALID_OBJECT_ID; - } + m_system_id = fleets[0]->SystemID(); + for (unsigned int i = 1; i < fleets.size(); ++i) { + if (m_system_id != fleets[i]->SystemID()) + m_system_id = UniverseObject::INVALID_OBJECT_ID; } TempUISoundDisabler sound_disabler; m_fleets_lb = new FleetsListBox(0, 0, FLEET_LISTBOX_WIDTH, FLEET_LISTBOX_HEIGHT, read_only); if (!m_read_only) { - m_new_fleet_drop_target = new FleetDataPanel(FleetRow::PANEL_WD, FleetRow::PANEL_HT, 0); + m_new_fleet_drop_target = new FleetDataPanel(FleetRow::PANEL_WD, FleetRow::PANEL_HT, 0, m_empire_id, m_system_id, fleets[0]->X(), fleets[0]->Y()); m_new_fleet_drop_target->SetMinSize(GG::Pt(1, FleetRow::PANEL_HT)); m_new_fleet_drop_target->MoveTo(GG::Pt(0, 5)); } @@ -1177,7 +1228,7 @@ void FleetWnd::CreateNewFleetFromDrops(Ship* first_ship, const std::vector<int>& ship_ids) { - Fleet* some_existing_fleet = FleetInRow(0); + Fleet* some_fleet = FleetInRow(0); // special case: disallow creating a new fleet from a ship when there is exactly 1 fleet containing exactly 1 ship if (m_fleets_lb->NumRows() == 1) { // if there is exactly one fleet in the list @@ -1186,15 +1237,13 @@ return; } - if (!some_existing_fleet || !first_ship || - some_existing_fleet->SystemID() != first_ship->GetFleet()->SystemID() || - some_existing_fleet->X() != first_ship->GetFleet()->X() || - some_existing_fleet->Y() != first_ship->GetFleet()->Y()) + if (!some_fleet || !first_ship || + !ValidShip(first_ship, some_fleet->X(), some_fleet->Y(), some_fleet->SystemID(), m_system_id)) return; - System* system = some_existing_fleet->GetSystem(); - double some_existing_fleet_x = some_existing_fleet->X(); - double some_existing_fleet_y = some_existing_fleet->Y(); + System* system = some_fleet->GetSystem(); + double some_fleet_x = some_fleet->X(); + double some_fleet_y = some_fleet->Y(); int empire_id = HumanClientApp::GetApp()->EmpireID(); int new_fleet_id = ClientApp::GetNewObjectID(); @@ -1216,10 +1265,10 @@ } } } else { - HumanClientApp::Orders().IssueOrder(new NewFleetOrder(empire_id, fleet_name, new_fleet_id, some_existing_fleet_x, some_existing_fleet_y, ship_ids)); + HumanClientApp::Orders().IssueOrder(new NewFleetOrder(empire_id, fleet_name, new_fleet_id, some_fleet_x, some_fleet_y, ship_ids)); std::vector<Fleet*> fleets = GetUniverse().FindObjects<Fleet>(); for (unsigned int i = 0; i < fleets.size(); ++i) { - if (fleets[i]->Name() == fleet_name && fleets[i]->X() == some_existing_fleet_x && fleets[i]->Y() == some_existing_fleet_y) { + if (fleets[i]->Name() == fleet_name && fleets[i]->X() == some_fleet_x && fleets[i]->Y() == some_fleet_y) { new_fleet = fleets[i]; break; } |
From: <tz...@us...> - 2006-03-04 20:31:23
|
Revision: 1798 Author: tzlaine Date: 2006-03-04 12:31:21 -0800 (Sat, 04 Mar 2006) ViewCVS: http://svn.sourceforge.net/freeorion?rev=1798&view=rev Log Message: ----------- Removed an extraneous second check of drag-drop validity in FleetWnd that was causing some valid drops not to work. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-03-04 11:32:33 UTC (rev 1797) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-03-04 20:31:21 UTC (rev 1798) @@ -1237,8 +1237,7 @@ return; } - if (!some_fleet || !first_ship || - !ValidShip(first_ship, some_fleet->X(), some_fleet->Y(), some_fleet->SystemID(), m_system_id)) + if (!some_fleet || !first_ship) return; System* system = some_fleet->GetSystem(); |
From: <tz...@us...> - 2006-03-05 19:51:34
|
Revision: 1803 Author: tzlaine Date: 2006-03-05 11:51:28 -0800 (Sun, 05 Mar 2006) ViewCVS: http://svn.sourceforge.net/freeorion?rev=1803&view=rev Log Message: ----------- Fixed the crash bug when right-clicking on empty space with a fleet selected. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-03-05 15:10:03 UTC (rev 1802) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-03-05 19:51:28 UTC (rev 1803) @@ -1334,8 +1334,9 @@ bool retval = 0 < s_open_fleet_wnds.size(); while (0 < s_open_fleet_wnds.size()) { - (*s_open_fleet_wnds.begin())->Close(); - s_open_fleet_wnds.erase(*s_open_fleet_wnds.begin()); + FleetWnd* fleet_wnd = *s_open_fleet_wnds.begin(); + fleet_wnd->Close(); + s_open_fleet_wnds.erase(fleet_wnd); } return retval; |
From: <geo...@us...> - 2007-03-22 18:18:16
|
Revision: 2033 http://svn.sourceforge.net/freeorion/revision/?rev=2033&view=rev Author: geoffthemedio Date: 2007-03-22 11:18:17 -0700 (Thu, 22 Mar 2007) Log Message: ----------- Fixed [ 1685763 ] Compile error. Accidentally commited a line that shouldn't have been with recent fix. Not sure how it got in there... Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2007-03-19 15:14:39 UTC (rev 2032) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2007-03-22 18:18:17 UTC (rev 2033) @@ -437,7 +437,7 @@ } else { design_name = "Scout"; } - icon = ClientUI::ShipIcon(design_name); + icon = ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / (design_name + ".png")); } } else { // the "new fleet" data panel icon = ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "newfleet.png"); |
From: <tz...@us...> - 2006-10-21 19:38:58
|
Revision: 1921 http://svn.sourceforge.net/freeorion/revision/?rev=1921&view=rev Author: tzlaine Date: 2006-10-21 12:38:56 -0700 (Sat, 21 Oct 2006) Log Message: ----------- Changed the parameterization of the FleetWnd layout, to fix the crushed desitnation and status text. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2006-10-21 18:33:55 UTC (rev 1920) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2006-10-21 19:38:56 UTC (rev 1921) @@ -787,7 +787,9 @@ AttachChild(m_ship_status_text); VerticalLayout(); GetLayout()->SetCellMargin(4); - GetLayout()->SetRowStretch(1, 1); + GetLayout()->SetMinimumRowHeight(0, ClientUI::Pts() + 4); + GetLayout()->SetRowStretch(1, 1.0); + GetLayout()->SetMinimumRowHeight(2, ClientUI::Pts() + 4); GG::Connect(m_ships_lb->SelChangedSignal, &FleetDetailPanel::ShipSelectionChanged, this); GG::Connect(m_ships_lb->BrowsedSignal, &FleetDetailPanel::ShipBrowsed, this); |
From: <tz...@us...> - 2007-08-12 22:23:44
|
Revision: 2224 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=2224&view=rev Author: tzlaine Date: 2007-08-12 15:23:41 -0700 (Sun, 12 Aug 2007) Log Message: ----------- Fixed dangling-pointer crash in FleetWnd. Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2007-08-12 01:16:17 UTC (rev 2223) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2007-08-12 22:23:41 UTC (rev 2224) @@ -1190,7 +1190,7 @@ { if (m_current_fleet == row_idx) m_current_fleet = -1; - if (m_fleets_lb->Empty() || m_fleets_lb->NumRows() == 1 && !FleetInRow(0)) + if (m_fleets_lb->Empty()) CloseClicked(); } @@ -1313,9 +1313,6 @@ break; } } - - if (m_fleets_lb->Empty() || m_fleets_lb->NumRows() == 1 && !FleetInRow(0)) - CloseClicked(); } void FleetWnd::SystemChangedSlot() |
From: <geo...@us...> - 2007-11-22 12:21:56
|
Revision: 2252 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=2252&view=rev Author: geoffthemedio Date: 2007-11-22 04:22:00 -0800 (Thu, 22 Nov 2007) Log Message: ----------- Fix for bug [ 1814164 ] Closing panel crashes game. Provided by LaplaceOperator Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2007-09-17 07:05:21 UTC (rev 2251) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2007-11-22 12:22:00 UTC (rev 2252) @@ -1181,7 +1181,8 @@ if (GG::GUI::GetGUI()->AppHeight() < fleet_detail_wnd->LowerRight().y) window_posn.y = GG::GUI::GetGUI()->AppHeight() - fleet_detail_wnd->Height(); fleet_detail_wnd->MoveTo(window_posn); - + + GG::Connect(fleet_detail_wnd->ClosingSignal,&FleetWnd::FleetDetailWndClosing,this); GG::GUI::GetGUI()->Register(fleet_detail_wnd); } } |
From: <geo...@us...> - 2008-06-30 17:51:12
|
Revision: 2618 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=2618&view=rev Author: geoffthemedio Date: 2008-06-30 10:51:11 -0700 (Mon, 30 Jun 2008) Log Message: ----------- -Fixed [ 2001198 ] Player-Designed Ships Have No Icon -Added fuel indicators to ship panels in FleetWnd Modified Paths: -------------- trunk/FreeOrion/UI/FleetWnd.cpp Modified: trunk/FreeOrion/UI/FleetWnd.cpp =================================================================== --- trunk/FreeOrion/UI/FleetWnd.cpp 2008-06-30 06:36:37 UTC (rev 2617) +++ trunk/FreeOrion/UI/FleetWnd.cpp 2008-06-30 17:51:11 UTC (rev 2618) @@ -226,13 +226,13 @@ boost::signals::connection m_fleet_connection; - GG::StaticGraphic* m_fleet_icon; - GG::TextControl* m_fleet_name_text; - StatisticIcon* m_num_ships_stat; - StatisticIcon* m_fleet_strength_stat; - StatisticIcon* m_fuel_stat; - GG::StaticGraphic* m_damage_icon; - GG::StaticGraphic* m_colonizer_icon; + GG::StaticGraphic* m_fleet_icon; + GG::TextControl* m_fleet_name_text; + StatisticIcon* m_num_ships_stat; + StatisticIcon* m_fleet_strength_stat; + StatisticIcon* m_fuel_stat; + GG::StaticGraphic* m_damage_icon; + GG::StaticGraphic* m_colonizer_icon; bool m_selected; }; @@ -263,6 +263,7 @@ ClientUI::TextColor(), GG::FORMAT_RIGHT | GG::FORMAT_VCENTER)), m_ship_strength_stat(0), m_damage_stat(0), + m_fuel_stat(0), m_colonizer_icon(0), m_selected(false) { @@ -278,6 +279,11 @@ AttachChild(m_ship_strength_stat); m_ship_connection = GG::Connect(m_ship->StateChangedSignal, &ShipDataPanel::Refresh, this); + m_fuel_stat = new StatisticIcon(h + 2*STAT_ICON_WD, SHIP_NAME_HT, STAT_ICON_WD, h - SHIP_NAME_HT - 1, + ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "meter" / "fuel.png"), + 0, 0, true, false, GG::Flags<GG::WndFlag>()); + AttachChild(m_fuel_stat); + Refresh(); } @@ -324,19 +330,13 @@ void SetShipIcon() { const int ICON_OFFSET = (Size().y - SHIP_ICON_SZ) / 2; - std::string design_name; + boost::shared_ptr<GG::Texture> icon; const ShipDesign* design = m_ship->Design(); - if (design) { - design_name = design->Name(); - std::string::size_type space = design_name.find(' '); - if (space != std::string::npos) { - design_name[space] = '_'; - } - } else { - design_name = "Scout"; - } - m_ship_icon = new GG::StaticGraphic(ICON_OFFSET, ICON_OFFSET, SHIP_ICON_SZ, SHIP_ICON_SZ, - ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / (design_name + ".png")), GG::GRAPHIC_FITGRAPHIC); + if (design) + icon = ClientUI::ShipIcon(design->ID()); + else + icon = ClientUI::ShipIcon(-1); // default icon + m_ship_icon = new GG::StaticGraphic(ICON_OFFSET, ICON_OFFSET, SHIP_ICON_SZ, SHIP_ICON_SZ, icon, GG::GRAPHIC_FITGRAPHIC | GG::GRAPHIC_PROPSCALE); AttachChild(m_ship_icon); } @@ -347,10 +347,11 @@ SetShipIcon(); m_ship_name_text->SetText(m_ship->Name()); m_ship_strength_stat->SetValue(design ? design->Attack() : UNKNOWN_UI_DISPLAY_VALUE); + m_fuel_stat->SetValue(m_ship->MeterPoints(METER_FUEL)); const int ICON_SPACING = 5; const int ICON_SZ = Height() - SHIP_NAME_HT - 1; - int x_position = m_ship_strength_stat->LowerRight().x - ClientUpperLeft().x + ICON_SPACING; + int x_position = m_fuel_stat->LowerRight().x - ClientUpperLeft().x + ICON_SPACING; int damage_pts = 0; // TODO: acount for damaged ships once damage system is in place if (damage_pts) { if (!m_damage_stat) { |