From: <geo...@us...> - 2012-11-29 16:47:41
|
Revision: 5480 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5480&view=rev Author: geoffthemedio Date: 2012-11-29 16:47:34 +0000 (Thu, 29 Nov 2012) Log Message: ----------- -Tweaks to unused resource indicators that might help prevent them from showing up when they shouldn't. -Added extra resource indicator refreshing during turn initialization. -minor grooming Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2012-11-29 04:01:17 UTC (rev 5479) +++ trunk/FreeOrion/UI/MapWnd.cpp 2012-11-29 16:47:34 UTC (rev 5480) @@ -794,9 +794,6 @@ m_industry_wasted = new GG::Button(GG::X0, GG::Y0, ICON_WIDTH, GG::Y(Value(ICON_WIDTH)), "", font, GG::CLR_WHITE, GG::CLR_ZERO); m_research_wasted = new GG::Button(GG::X0, GG::Y0, ICON_WIDTH, GG::Y(Value(ICON_WIDTH)), "", font, GG::CLR_WHITE, GG::CLR_ZERO); - AttachChild(m_industry_wasted); - AttachChild(m_research_wasted); - boost::shared_ptr<GG::Texture> wasted_ressource_texture = ClientUI::GetTexture(ClientUI::ArtDir() / "icons" /"wasted_resource.png", false); GG::SubTexture wasted_ressource_subtexture = GG::SubTexture(wasted_ressource_texture, GG::X(0), GG::Y(0), GG::X(32), GG::Y(32)); @@ -1271,6 +1268,7 @@ RenderStarlanes( m_RC_starlane_vertices, m_RC_starlane_colors, core_multiplier, coloured, false); RenderStarlanes( m_starlane_vertices, m_starlane_colors, 1.0, coloured, true); } + void MapWnd::RenderStarlanes(GL2DVertexBuffer& vertices, GLRGBAColorBuffer& colours, double thickness, bool coloured, bool doBase) { if (vertices.size() && (colours.size() || !coloured) && (coloured || doBase)) { @@ -1895,6 +1893,10 @@ CenterOnMapCoord(0.0, 0.0); } + RefreshIndustryResourceIndicator(); + RefreshResearchResourceIndicator(); + RefreshTradeResourceIndicator(); + RefreshPopulationIndicator(); FleetUIManager::GetFleetUIManager().RefreshAll(); @@ -2168,7 +2170,8 @@ } std::vector<int> MapWnd::GetLeastJumps(int startSys, int endSys, const std::set<int>& resGroup, - const std::set<std::pair<int, int> >& supplylanes, const ObjectMap& objMap) + const std::set<std::pair<int, int> >& supplylanes, + const ObjectMap& objMap) { //std::map<int,bool> sysChecked; std::map<int,int> ancestor; @@ -4182,21 +4185,27 @@ } void MapWnd::RefreshTradeResourceIndicator() { - Empire *empire = HumanClientApp::GetApp()->Empires().Lookup( HumanClientApp::GetApp()->EmpireID() ); - + Empire* empire = HumanClientApp::GetApp()->Empires().Lookup(HumanClientApp::GetApp()->EmpireID()); + if (!empire) { + m_trade->SetValue(0.0); + return; + } m_trade->SetValue(empire->ResourceStockpile(RE_TRADE)); } void MapWnd::RefreshResearchResourceIndicator() { - const Empire *empire = HumanClientApp::GetApp()->Empires().Lookup(HumanClientApp::GetApp()->EmpireID()); - if (!empire) + const Empire* empire = HumanClientApp::GetApp()->Empires().Lookup(HumanClientApp::GetApp()->EmpireID()); + if (!empire) { + m_research->SetValue(0.0); + m_research_wasted->Hide(); return; + } m_research->SetValue(empire->ResourceProduction(RE_RESEARCH)); //Logger().debugStream() << "Research spend: " << empire->GetResearchQueue().TotalRPsSpent() << " output: " << empire->ResourceProduction(RE_RESEARCH); double totalRPSpent = empire->GetResearchQueue().TotalRPsSpent(); double totalProduction = empire->ResourceProduction(RE_RESEARCH); double totalWastedRP = totalProduction - totalRPSpent; - if (totalWastedRP > 0){ + if (totalWastedRP > 0) { m_research_wasted->Show(); m_research_wasted->SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>( new TextBrowseWnd(UserString("MAP_RES_WASTED_TITLE"), @@ -4209,15 +4218,18 @@ } void MapWnd::RefreshIndustryResourceIndicator() { - const Empire *empire = HumanClientApp::GetApp()->Empires().Lookup(HumanClientApp::GetApp()->EmpireID()); - if (!empire) + const Empire* empire = HumanClientApp::GetApp()->Empires().Lookup(HumanClientApp::GetApp()->EmpireID()); + if (!empire) { + m_industry->SetValue(0.0); + m_industry_wasted->Hide(); return; + } m_industry->SetValue(empire->ResourceProduction(RE_INDUSTRY)); //Logger().debugStream() << "Industry spend: " << empire->GetProductionQueue().TotalPPsSpent() << " output: " << empire->ResourceProduction(RE_INDUSTRY); double totalPPSpent = empire->GetProductionQueue().TotalPPsSpent(); double totalProduction = empire->ResourceProduction(RE_INDUSTRY); double totalWastedPP = totalProduction - totalPPSpent; - if (totalWastedPP > 0){ + if (totalWastedPP > 0) { m_industry_wasted->Show(); m_industry_wasted->SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>( new TextBrowseWnd(UserString("MAP_PROD_WASTED_TITLE"), @@ -4231,8 +4243,10 @@ void MapWnd::RefreshPopulationIndicator() { Empire* empire = HumanClientApp::GetApp()->Empires().Lookup(HumanClientApp::GetApp()->EmpireID()); - if (!empire) + if (!empire) { + m_population->SetValue(0.0); return; + } m_population->SetValue(empire->GetPopulationPool().Population()); const std::vector<int> pop_center_ids = empire->GetPopulationPool().PopCenterIDs(); |
From: <geo...@us...> - 2012-12-04 21:14:50
|
Revision: 5514 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5514&view=rev Author: geoffthemedio Date: 2012-12-04 21:14:43 +0000 (Tue, 04 Dec 2012) Log Message: ----------- As temporary "fix" for "sensor ghosts" on map, hid not currently-visible fleets. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2012-12-04 16:52:03 UTC (rev 5513) +++ trunk/FreeOrion/UI/MapWnd.cpp 2012-12-04 21:14:43 UTC (rev 5514) @@ -3070,7 +3070,8 @@ // be grouped by empire owner and buttons created const ObjectMap& objects = GetUniverse().Objects(); - const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(HumanClientApp::GetApp()->EmpireID()); + int client_empire_id = HumanClientApp::GetApp()->EmpireID(); + const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(client_empire_id); // for each system, each empire's fleets that are ordered to move, but still at the system: "departing fleets" std::map<const System*, std::map<int, std::vector<const Fleet*> > > departing_fleets; @@ -3079,26 +3080,24 @@ // skip known destroyed objects if (this_client_known_destroyed_objects.find((*it)->ID()) != this_client_known_destroyed_objects.end()) continue; + const UniverseObject* obj = *it; - const Fleet* fleet = universe_object_cast<const Fleet*>(*it); - // skip fleets outside systems - if (fleet->SystemID() == INVALID_OBJECT_ID) + if (obj->SystemID() == INVALID_OBJECT_ID) continue; - // sanity checks - if (!fleet) { - Logger().errorStream() << "couldn't cast object to fleet in RefreshFleetButtons()"; + // TEMORARY: Skip not visible fleets + if (obj->GetVisibility(client_empire_id) < VIS_BASIC_VISIBILITY) continue; - } - const System* system = GetSystem(fleet->SystemID()); + + const System* system = GetSystem(obj->SystemID()); if (!system) { - Logger().errorStream() << "couldn't get system with id " << fleet->SystemID() << " of an departing fleet named " << fleet->Name() << " in RefreshFleetButtons()"; + Logger().errorStream() << "couldn't get system with id " << obj->SystemID() << " of an departing fleet named " << obj->Name() << " in RefreshFleetButtons()"; continue; } // store in map for this system and the fleet's owner empire - departing_fleets[system][fleet->Owner()].push_back(fleet); + departing_fleets[system][obj->Owner()].push_back(universe_object_cast<const Fleet*>(obj)); } departing_fleet_objects.clear(); @@ -3110,26 +3109,24 @@ // skip known destroyed objects if (this_client_known_destroyed_objects.find((*it)->ID()) != this_client_known_destroyed_objects.end()) continue; + const UniverseObject* obj = *it; - const Fleet* fleet = universe_object_cast<const Fleet*>(*it); - // skip fleets outside systems - if (fleet->SystemID() == INVALID_OBJECT_ID) + if (obj->SystemID() == INVALID_OBJECT_ID) continue; - // sanity checks - if (!fleet) { - Logger().errorStream() << "couldn't cast object to fleet in RefreshFleetButtons()"; + // TEMORARY: Skip not visible fleets + if (obj->GetVisibility(client_empire_id) < VIS_BASIC_VISIBILITY) continue; - } - const System* system = GetSystem(fleet->SystemID()); + + const System* system = GetSystem(obj->SystemID()); if (!system) { Logger().errorStream() << "couldn't get system of a stationary fleet in RefreshFleetButtons()"; continue; } // store in map for the system and fleet's owner empire - stationary_fleets[system][fleet->Owner()].push_back(fleet); + stationary_fleets[system][obj->Owner()].push_back(universe_object_cast<const Fleet*>(obj)); } stationary_fleet_objects.clear(); @@ -3141,21 +3138,19 @@ // skip known destroyed objects if (this_client_known_destroyed_objects.find((*it)->ID()) != this_client_known_destroyed_objects.end()) continue; + const UniverseObject* obj = *it; - const Fleet* fleet = universe_object_cast<const Fleet*>(*it); - - // sanity checks - if (!fleet) { - Logger().errorStream() << "couldn't cast object to fleet in RefreshFleetButtons()"; + // TEMORARY: Skip not visible fleets + if (obj->GetVisibility(client_empire_id) < VIS_BASIC_VISIBILITY) continue; - } - if (fleet->SystemID() != INVALID_OBJECT_ID) { + + if (obj->SystemID() != INVALID_OBJECT_ID) { Logger().errorStream() << "a fleet that was supposed to be moving had a valid system in RefreshFleetButtons()"; continue; } // store in map - moving_fleets[std::make_pair(fleet->X(), fleet->Y())][fleet->Owner()].push_back(fleet); + moving_fleets[std::make_pair(obj->X(), obj->Y())][obj->Owner()].push_back(universe_object_cast<const Fleet*>(obj)); } moving_fleet_objects.clear(); @@ -3183,7 +3178,8 @@ const FleetButton::SizeType FLEETBUTTON_SIZE = FleetButtonSizeType(); // departing fleets - for (std::map<const System*, std::map<int, std::vector<const Fleet*> > >::iterator departing_fleets_it = departing_fleets.begin(); + for (std::map<const System*, std::map<int, std::vector<const Fleet*> > >::iterator + departing_fleets_it = departing_fleets.begin(); departing_fleets_it != departing_fleets.end(); ++departing_fleets_it) { const System* system = departing_fleets_it->first; @@ -3217,7 +3213,8 @@ } // stationary fleets - for (std::map<const System*, std::map<int, std::vector<const Fleet*> > >::iterator stationary_fleets_it = stationary_fleets.begin(); + for (std::map<const System*, std::map<int, std::vector<const Fleet*> > >::iterator + stationary_fleets_it = stationary_fleets.begin(); stationary_fleets_it != stationary_fleets.end(); ++stationary_fleets_it) { const System* system = stationary_fleets_it->first; @@ -3251,7 +3248,8 @@ } // moving fleets - for (std::map<std::pair<double, double>, std::map<int, std::vector<const Fleet*> > >::iterator moving_fleets_it = moving_fleets.begin(); + for (std::map<std::pair<double, double>, std::map<int, std::vector<const Fleet*> > >::iterator + moving_fleets_it = moving_fleets.begin(); moving_fleets_it != moving_fleets.end(); ++moving_fleets_it) { const std::map<int, std::vector<const Fleet*> >& empires_map = moving_fleets_it->second; |
From: <ewi...@us...> - 2012-12-22 19:21:51
|
Revision: 5570 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5570&view=rev Author: ewillgohs Date: 2012-12-22 19:21:40 +0000 (Sat, 22 Dec 2012) Log Message: ----------- added output of player Empire color for charting Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2012-12-22 19:07:02 UTC (rev 5569) +++ trunk/FreeOrion/UI/MapWnd.cpp 2012-12-22 19:21:40 UTC (rev 5570) @@ -3950,7 +3950,9 @@ double PP = empire->ResourceProduction(RE_INDUSTRY); int turn_number = CurrentTurn(); float ratio = (RP/(PP+0.0001)); + const GG::Clr color = empire->Color(); Logger().debugStream() << "Current Output (turn " << turn_number << " ) RP/PP: " << ratio << " ( " << RP << "/"<< PP << ")"; + Logger().debugStream() << "EmpireColors: " << color.r << " " << color.g << " " << color.b << " "<< color.a; } HumanClientApp::GetApp()->StartTurn(); return true; |
From: <geo...@us...> - 2013-01-01 04:17:18
|
Revision: 5598 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5598&view=rev Author: geoffthemedio Date: 2013-01-01 04:17:12 +0000 (Tue, 01 Jan 2013) Log Message: ----------- Logging output tweaking. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-01-01 03:42:05 UTC (rev 5597) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-01-01 04:17:12 UTC (rev 5598) @@ -3958,8 +3958,11 @@ int turn_number = CurrentTurn(); float ratio = (RP/(PP+0.0001)); const GG::Clr color = empire->Color(); - Logger().debugStream() << "Current Output (turn " << turn_number << " ) RP/PP: " << ratio << " ( " << RP << "/"<< PP << ")"; - Logger().debugStream() << "EmpireColors: " << color.r << " " << color.g << " " << color.b << " "<< color.a; + Logger().debugStream() << "Current Output (turn " << turn_number << ") RP/PP: " << ratio << " (" << RP << "/" << PP << ")"; + Logger().debugStream() << "EmpireColors: " << static_cast<int>(color.r) + << " " << static_cast<int>(color.g) + << " " << static_cast<int>(color.b) + << " " << static_cast<int>(color.a); } HumanClientApp::GetApp()->StartTurn(); return true; |
From: <geo...@us...> - 2013-01-01 21:40:41
|
Revision: 5606 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5606&view=rev Author: geoffthemedio Date: 2013-01-01 21:40:35 +0000 (Tue, 01 Jan 2013) Log Message: ----------- comment out empire dumping in client each turn Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-01-01 21:30:41 UTC (rev 5605) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-01-01 21:40:35 UTC (rev 5606) @@ -1738,9 +1738,8 @@ universe.InitializeSystemGraph(HumanClientApp::GetApp()->EmpireID()); - Logger().debugStream() << Empires().Dump(); - //// DEBUG + //Logger().debugStream() << Empires().Dump(); //std::cout << "MapWnd::InitTurn() m_selected_fleet_ids: " << std::endl; //for (std::set<int>::const_iterator it = m_selected_fleet_ids.begin(); it != m_selected_fleet_ids.end(); ++it) { // const UniverseObject* obj = const_universe.Object(*it); |
From: <geo...@us...> - 2013-01-09 08:58:30
|
Revision: 5623 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5623&view=rev Author: geoffthemedio Date: 2013-01-09 08:58:23 +0000 (Wed, 09 Jan 2013) Log Message: ----------- Possible optimization for planet meter updating when selecting ships in fleetwnd; now only update meters of planets in system, selected by a prefiltering step, rather than updating meters of all objects in system. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-01-09 02:52:29 UTC (rev 5622) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-01-09 08:58:23 UTC (rev 5623) @@ -3743,13 +3743,33 @@ // set new selected fleets m_selected_ship_ids = selected_ship_ids; - // refresh meters of objects in currently selected system, as changing selected fleets + + // refresh meters of planets in currently selected system, as changing selected fleets // may have changed which species a planet should have population estimates shown for + int sidepanel_system_id = SidePanel::SystemID(); if (sidepanel_system_id == INVALID_OBJECT_ID) return; - UpdateMeterEstimates(sidepanel_system_id, true); + // todo: update only target population meters + + int this_client_empire_id = HumanClientApp::GetApp()->EmpireID(); + const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(this_client_empire_id); + + std::vector<int> planets = Objects().FindObjectIDs<Planet>(); + std::vector<int> system_planets; system_planets.reserve(16); // arbitrary number big enough for all planets in a system + for (std::vector<int>::const_iterator it = planets.begin(); it != planets.end(); ++it) { + if (this_client_known_destroyed_objects.find(*it) != this_client_known_destroyed_objects.end()) + continue; + const Planet* planet = GetPlanet(*it); + if (!planet) + continue; + if (planet->SystemID() != sidepanel_system_id) + continue; + system_planets.push_back(*it); + } + + UpdateMeterEstimates(system_planets); SidePanel::Update(); } @@ -4336,12 +4356,22 @@ //Logger().debugStream() << "MapWnd::UpdateMeterEstimates"; const ObjectMap& objects = GetUniverse().Objects(); + int this_client_empire_id = HumanClientApp::GetApp()->EmpireID(); + const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(this_client_empire_id); + const std::set<int>& this_client_stale_object_info = GetUniverse().EmpireStaleKnowledgeObjectIDs(this_client_empire_id); + if (object_id == INVALID_OBJECT_ID) { - // update meters for all objects. Value of updated_contained_objects is irrelivant and is ignored in this case. + // update meters for all objects. Value of updated_contained_objects is + // irrelivant and is ignored in this case. std::vector<int> object_ids; - for (ObjectMap::const_iterator obj_it = objects.const_begin(); obj_it != objects.const_end(); ++obj_it) - object_ids.push_back(obj_it->first); + for (ObjectMap::const_iterator obj_it = objects.const_begin(); obj_it != objects.const_end(); ++obj_it) { + int object_id = obj_it->first; + // skip known destroyed objects, but do update for stale objects + if (this_client_known_destroyed_objects.find(object_id) != this_client_known_destroyed_objects.end()) + continue; + object_ids.push_back(object_id); + } UpdateMeterEstimates(object_ids); return; @@ -4363,10 +4393,16 @@ continue; } + // skip known destroyed objects, but do update for stale objects + if (this_client_known_destroyed_objects.find(cur_object_id) != this_client_known_destroyed_objects.end()) + continue; + // add current object to list objects_set.insert(cur_object_id); - // add contained objects within current object to list of objects to process, if requested. assumes no objects contain themselves (which could cause infinite loops) + // add contained objects within current object to list of objects to + // process, if requested. assumes no objects contain themselves (which + // could cause infinite loops) if (update_contained_objects) { std::vector<int> contained_objects = cur_object->FindObjectIDs(); // get all contained objects std::copy(contained_objects.begin(), contained_objects.end(), std::back_inserter(objects_list)); |
From: <dil...@us...> - 2013-01-13 19:41:25
|
Revision: 5641 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5641&view=rev Author: dilvish-fo Date: 2013-01-13 19:41:12 +0000 (Sun, 13 Jan 2013) Log Message: ----------- added a small epsilon of 1E-6 into test controlling display of wasted PP/RP Icons to prevent spurious appearance. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-01-13 14:23:09 UTC (rev 5640) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-01-13 19:41:12 UTC (rev 5641) @@ -4267,7 +4267,7 @@ double totalRPSpent = empire->GetResearchQueue().TotalRPsSpent(); double totalProduction = empire->ResourceProduction(RE_RESEARCH); double totalWastedRP = totalProduction - totalRPSpent; - if (totalWastedRP > 0) { + if (totalWastedRP > 1E-6) { m_research_wasted->Show(); m_research_wasted->SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>( new TextBrowseWnd(UserString("MAP_RES_WASTED_TITLE"), @@ -4298,7 +4298,7 @@ double totalPPSpent = empire->GetProductionQueue().TotalPPsSpent(); double totalProduction = empire->ResourceProduction(RE_INDUSTRY); double totalWastedPP = totalProduction - totalPPSpent; - if (totalWastedPP > 0) { + if (totalWastedPP > 1E-6) { m_industry_wasted->Show(); m_industry_wasted->SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>( new TextBrowseWnd(UserString("MAP_PROD_WASTED_TITLE"), |
From: <geo...@us...> - 2013-01-23 04:09:39
|
Revision: 5671 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5671&view=rev Author: geoffthemedio Date: 2013-01-23 04:09:32 +0000 (Wed, 23 Jan 2013) Log Message: ----------- Safety check for shader initialization when program is empty by drjoe / joequant Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-01-21 03:49:26 UTC (rev 5670) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-01-23 04:09:32 UTC (rev 5671) @@ -1926,8 +1926,10 @@ boost::filesystem::path shader_path = GetRootDataDir() / "default" / "shaders" / "scanlines.frag"; std::string shader_text; ReadFile(shader_path, shader_text); - m_scanline_shader = boost::shared_ptr<ShaderProgram>( - ShaderProgram::shaderProgramFactory("", shader_text)); + if (!shader_text.empty()) { + m_scanline_shader = boost::shared_ptr<ShaderProgram>( + ShaderProgram::shaderProgramFactory("", shader_text)); + } } // adjust size of map window for universe and application size |
From: <dil...@us...> - 2013-03-14 08:43:58
|
Revision: 5860 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5860&view=rev Author: dilvish-fo Date: 2013-03-14 08:43:51 +0000 (Thu, 14 Mar 2013) Log Message: ----------- fixed detection range circle overlap artifacts at high detection ranges Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-03-14 02:33:47 UTC (rev 5859) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-03-14 08:43:51 UTC (rev 5860) @@ -535,11 +535,11 @@ m_sidepanel_open_before_showing_other(false), m_toolbar(0), m_trade(0), - m_fleet(0), m_population(0), m_research(0), m_industry(0), m_detection(0), + m_fleet(0), m_industry_wasted(0), m_research_wasted(0), m_btn_siterep(0), @@ -848,7 +848,7 @@ layout->SetColumnStretch(layout_column, 1.0); layout->Add(m_fleet, 0, layout_column, GG::ALIGN_LEFT | GG::ALIGN_VCENTER); ++layout_column; - + layout->SetColumnStretch(layout_column, 1.0); layout->Add(m_population, 0, layout_column, GG::ALIGN_LEFT | GG::ALIGN_VCENTER); ++layout_column; @@ -1546,14 +1546,14 @@ { glClear(GL_STENCIL_BUFFER_BIT); glStencilOp(GL_INCR, GL_INCR, GL_INCR); - glStencilFunc(GL_EQUAL, 0x0, 0xf); + glStencilFunc(GL_EQUAL, 0x0, 0xff); glColor(it->first); const std::vector<std::pair<GG::Pt, GG::Pt> >& circles_in_this_colour = it->second; for (std::size_t i = 0; i < circles_in_this_colour.size(); ++i) { CircleArc(circles_in_this_colour[i].first, circles_in_this_colour[i].second, 0.0, TWO_PI, true); } - glStencilFunc(GL_GREATER, 0x2, 0xf); + glStencilFunc(GL_GREATER, 0x2, 0xff); glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); for (std::size_t i = 0; i < circles_in_this_colour.size(); ++i) { CircleArc(circles_in_this_colour[i].first + UNIT, circles_in_this_colour[i].second - UNIT, @@ -3054,8 +3054,20 @@ int client_empire_id = HumanClientApp::GetApp()->EmpireID(); const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(client_empire_id); + Empire* empire = Empires().Lookup(client_empire_id); + std::set<int> systems_with_enemies; + std::set<int> systems_flagged_unsafe; + std::set<int> systems_deemed_unsafe; + if (empire) { + systems_with_enemies = empire->SystemsWithEnemies(); + systems_flagged_unsafe = empire->SystemsFlaggedUnsafe(); + systems_deemed_unsafe = empire->SystemsDeemedUnsafe(); + } const std::set<int>& this_client_stale_object_info = GetUniverse().EmpireStaleKnowledgeObjectIDs(client_empire_id); + systems_with_enemies.clear(); + systems_deemed_unsafe.clear(); + // for each system, each empire's fleets that are ordered to move, // but still at the system: "departing fleets" std::map<const System*, std::map<int, std::vector<const Fleet*> > > departing_fleets; @@ -3131,6 +3143,11 @@ continue; // store in map for the system and fleet's owner empire + bool notToBeTrusted = (Empires().GetDiplomaticStatus(client_empire_id, fleet->Owner())!= DIPLO_PEACE ); + if ((fleet->GetVisibility(client_empire_id) >= VIS_BASIC_VISIBILITY) ) + if ( !(fleet->OwnedBy(client_empire_id)) && (fleet->HasArmedShips() && notToBeTrusted) ) + systems_with_enemies.insert(obj->SystemID()); + stationary_fleets[system][obj->Owner()].push_back(fleet); } stationary_fleet_objects.clear(); @@ -3167,6 +3184,18 @@ } moving_fleet_objects.clear(); + systems_deemed_unsafe.insert(systems_with_enemies.begin(), systems_with_enemies.end()); + systems_deemed_unsafe.insert(systems_flagged_unsafe.begin(), systems_flagged_unsafe.end()); + /*Logger().debugStream() << "MapWnd::RefreshFleetButtons updated systems_deemed_unsafe; new set is len "<< systems_deemed_unsafe.size() << " as follows:"; + for (std::set<int>::iterator unsafe_it=systems_deemed_unsafe.begin(); unsafe_it != systems_deemed_unsafe.end(); unsafe_it++){ + System* unsafeSys = GetSystem(*unsafe_it); + if (!unsafeSys) { + Logger().errorStream() << "MapWnd::RefreshFleetButtons systems_deemed_unsafe has invalid key: "<< *unsafe_it; + } else { + Logger().debugStream() << "MapWnd::RefreshFleetButtons systems_deemed_unsafe: "<< *unsafe_it << " " << unsafeSys->Name(); + } + }*/ + // clear old fleet buttons @@ -3576,7 +3605,14 @@ start_system = fleet->NextSystemID(); // get path to destination... - std::list<int> route = GetUniverse().ShortestPath(start_system, system_id, empire_id).first; + std::list<int> route; + if (fleet->Aggressive() || m_systems_deemed_unsafe.find(system_id)!=m_systems_deemed_unsafe.end()) { + route = GetUniverse().ShortestPath(start_system, system_id, empire_id).first; + Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestPath, length " << route.size(); + } else { + route = GetUniverse().ShortestSafePath(start_system, system_id, m_systems_deemed_unsafe, empire_id).first; + Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestSafePath, length " << route.size(); + } // disallow "offroad" (direct non-starlane non-wormhole) travel if (route.size() == 2 && *route.begin() != *route.rbegin()) { @@ -3594,7 +3630,13 @@ // if actually ordering fleet movement, not just prospectively previewing, ... do so if (execute_move && !route.empty()){ - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet_id, start_system, system_id))); + if (fleet->Aggressive() || m_systems_deemed_unsafe.find(system_id)!=m_systems_deemed_unsafe.end()) { + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet_id, start_system, system_id))); + Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestPath, length " << route.size(); + } else { + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet_id, start_system, system_id, true, m_systems_deemed_unsafe))); + Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestSafePath, length " << route.size(); + } StopFleetExploring(fleet_id); } @@ -4318,7 +4360,7 @@ m_industry_wasted->ClearBrowseInfoWnd(); m_industry_wasted->SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>( new TextBrowseWnd(UserString("MAP_PROD_WASTED_TITLE"), - boost::io::str(FlexibleFormat(UserString("MAP_PROD_WASTED_TEXT")) + boost::io::str(FlexibleFormat(UserString("MAP_PROD_WASTED_TEXT")) % DoubleToString(totalProduction, 3, false) % DoubleToString(totalWastedPP, 3, false))))); } else { @@ -5042,11 +5084,13 @@ int far_system_id; //id of the closest unknown system without taking fuel into account for (std::map<int, int>::iterator system_it = unknown_systems.begin(); system_it != unknown_systems.end(); system_it ++) { + if (m_systems_deemed_unsafe.find(system_it->first) != m_systems_deemed_unsafe.end()) + continue;//don't try exploring into systems with visible armed enemies if (systems_order_sent.find(system_it->first) != systems_order_sent.end()) continue; //someone already went there this turn - std::pair<std::list<int>, double> pair = GetUniverse().ShortestPath(fleet->SystemID(), system_it->first, empire_id); - + std::pair<std::list<int>, double> pair = GetUniverse().ShortestSafePath(fleet->SystemID(), system_it->first, m_systems_deemed_unsafe, empire_id); + //we check for the fuel. bool is_doable_for_fuel = true; std::list<int> route = pair.first; @@ -5087,14 +5131,20 @@ if (!remaining_system_to_explore || min_dist == DBL_MAX) { if (fleet->Fuel() == fleet->MaxFuel() && far_min_dist != DBL_MAX) { //we have full fuel and no unknown planet in range. We can go to a far system, but we will have to wait for resupply - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << fleet->ID() << " is " << far_system_id << ". Not enough fuel for the round trip"; + std::string thisSysName = GetSystem(far_system_id)->Name(); + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << fleet->ID() << " is " << far_system_id << ": "<< thisSysName << ". Not enough fuel for the round trip"; systems_order_sent.insert(far_system_id); - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), far_system_id))); + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), far_system_id, true, m_systems_deemed_unsafe))); } else { //no unknown planet in range. Let's try to get home to resupply std::pair<int, int> pair = GetNearestSupplyPoint(empire, fleet->SystemID()); - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Fleet " << fleet->ID() << " going to resupply at " << pair.first; - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), pair.first))); + if (pair.first != INVALID_OBJECT_ID) { + std::string thisSysName = GetSystem(pair.first)->Name(); + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Fleet " << fleet->ID() << " going to resupply at " << pair.first<< ": "<< thisSysName; + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), pair.first, true, m_systems_deemed_unsafe))); + } else { + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Fleet " << fleet->ID() << " wanted to resupply but found no available system"; + } } i = nbr_fleet_to_send; //stop the loop since every fleet will have order } @@ -5103,10 +5153,11 @@ if (min_dist != DBL_MAX) { //there is an unexplored system rechable - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << better_fleet_id << " is " << end_system_id; + std::string thisSysName = GetSystem(end_system_id)->Name(); + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << better_fleet_id << " is " << end_system_id<< ": "<< thisSysName; systems_order_sent.insert(end_system_id); fleet_idle.erase(better_fleet_id); - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, better_fleet_id, start_system_id, end_system_id))); + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, better_fleet_id, start_system_id, end_system_id,true, m_systems_deemed_unsafe))); } else { remaining_system_to_explore = false; //from now on, each ship will be sent to a supply depot or a far system } |
From: <dil...@us...> - 2013-03-14 15:05:21
|
Revision: 5862 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5862&view=rev Author: dilvish-fo Date: 2013-03-14 15:05:11 +0000 (Thu, 14 Mar 2013) Log Message: ----------- corrected last MapWnd.cpp commit to remove partially implemented SafeMove code Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-03-14 10:31:12 UTC (rev 5861) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-03-14 15:05:11 UTC (rev 5862) @@ -3054,20 +3054,8 @@ int client_empire_id = HumanClientApp::GetApp()->EmpireID(); const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(client_empire_id); - Empire* empire = Empires().Lookup(client_empire_id); - std::set<int> systems_with_enemies; - std::set<int> systems_flagged_unsafe; - std::set<int> systems_deemed_unsafe; - if (empire) { - systems_with_enemies = empire->SystemsWithEnemies(); - systems_flagged_unsafe = empire->SystemsFlaggedUnsafe(); - systems_deemed_unsafe = empire->SystemsDeemedUnsafe(); - } const std::set<int>& this_client_stale_object_info = GetUniverse().EmpireStaleKnowledgeObjectIDs(client_empire_id); - systems_with_enemies.clear(); - systems_deemed_unsafe.clear(); - // for each system, each empire's fleets that are ordered to move, // but still at the system: "departing fleets" std::map<const System*, std::map<int, std::vector<const Fleet*> > > departing_fleets; @@ -3143,11 +3131,6 @@ continue; // store in map for the system and fleet's owner empire - bool notToBeTrusted = (Empires().GetDiplomaticStatus(client_empire_id, fleet->Owner())!= DIPLO_PEACE ); - if ((fleet->GetVisibility(client_empire_id) >= VIS_BASIC_VISIBILITY) ) - if ( !(fleet->OwnedBy(client_empire_id)) && (fleet->HasArmedShips() && notToBeTrusted) ) - systems_with_enemies.insert(obj->SystemID()); - stationary_fleets[system][obj->Owner()].push_back(fleet); } stationary_fleet_objects.clear(); @@ -3184,18 +3167,6 @@ } moving_fleet_objects.clear(); - systems_deemed_unsafe.insert(systems_with_enemies.begin(), systems_with_enemies.end()); - systems_deemed_unsafe.insert(systems_flagged_unsafe.begin(), systems_flagged_unsafe.end()); - /*Logger().debugStream() << "MapWnd::RefreshFleetButtons updated systems_deemed_unsafe; new set is len "<< systems_deemed_unsafe.size() << " as follows:"; - for (std::set<int>::iterator unsafe_it=systems_deemed_unsafe.begin(); unsafe_it != systems_deemed_unsafe.end(); unsafe_it++){ - System* unsafeSys = GetSystem(*unsafe_it); - if (!unsafeSys) { - Logger().errorStream() << "MapWnd::RefreshFleetButtons systems_deemed_unsafe has invalid key: "<< *unsafe_it; - } else { - Logger().debugStream() << "MapWnd::RefreshFleetButtons systems_deemed_unsafe: "<< *unsafe_it << " " << unsafeSys->Name(); - } - }*/ - // clear old fleet buttons @@ -3605,14 +3576,7 @@ start_system = fleet->NextSystemID(); // get path to destination... - std::list<int> route; - if (fleet->Aggressive() || m_systems_deemed_unsafe.find(system_id)!=m_systems_deemed_unsafe.end()) { - route = GetUniverse().ShortestPath(start_system, system_id, empire_id).first; - Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestPath, length " << route.size(); - } else { - route = GetUniverse().ShortestSafePath(start_system, system_id, m_systems_deemed_unsafe, empire_id).first; - Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestSafePath, length " << route.size(); - } + std::list<int> route = GetUniverse().ShortestPath(start_system, system_id, empire_id).first; // disallow "offroad" (direct non-starlane non-wormhole) travel if (route.size() == 2 && *route.begin() != *route.rbegin()) { @@ -3630,13 +3594,7 @@ // if actually ordering fleet movement, not just prospectively previewing, ... do so if (execute_move && !route.empty()){ - if (fleet->Aggressive() || m_systems_deemed_unsafe.find(system_id)!=m_systems_deemed_unsafe.end()) { - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet_id, start_system, system_id))); - Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestPath, length " << route.size(); - } else { - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet_id, start_system, system_id, true, m_systems_deemed_unsafe))); - Logger().debugStream() << "MapWnd::PlotFleetMovementLine using path from shortestSafePath, length " << route.size(); - } + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet_id, start_system, system_id))); StopFleetExploring(fleet_id); } @@ -4360,7 +4318,7 @@ m_industry_wasted->ClearBrowseInfoWnd(); m_industry_wasted->SetBrowseInfoWnd(boost::shared_ptr<GG::BrowseInfoWnd>( new TextBrowseWnd(UserString("MAP_PROD_WASTED_TITLE"), - boost::io::str(FlexibleFormat(UserString("MAP_PROD_WASTED_TEXT")) + boost::io::str(FlexibleFormat(UserString("MAP_PROD_WASTED_TEXT")) % DoubleToString(totalProduction, 3, false) % DoubleToString(totalWastedPP, 3, false))))); } else { @@ -5084,13 +5042,11 @@ int far_system_id; //id of the closest unknown system without taking fuel into account for (std::map<int, int>::iterator system_it = unknown_systems.begin(); system_it != unknown_systems.end(); system_it ++) { - if (m_systems_deemed_unsafe.find(system_it->first) != m_systems_deemed_unsafe.end()) - continue;//don't try exploring into systems with visible armed enemies if (systems_order_sent.find(system_it->first) != systems_order_sent.end()) continue; //someone already went there this turn - std::pair<std::list<int>, double> pair = GetUniverse().ShortestSafePath(fleet->SystemID(), system_it->first, m_systems_deemed_unsafe, empire_id); - + std::pair<std::list<int>, double> pair = GetUniverse().ShortestPath(fleet->SystemID(), system_it->first, empire_id); + //we check for the fuel. bool is_doable_for_fuel = true; std::list<int> route = pair.first; @@ -5131,20 +5087,14 @@ if (!remaining_system_to_explore || min_dist == DBL_MAX) { if (fleet->Fuel() == fleet->MaxFuel() && far_min_dist != DBL_MAX) { //we have full fuel and no unknown planet in range. We can go to a far system, but we will have to wait for resupply - std::string thisSysName = GetSystem(far_system_id)->Name(); - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << fleet->ID() << " is " << far_system_id << ": "<< thisSysName << ". Not enough fuel for the round trip"; + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << fleet->ID() << " is " << far_system_id << ". Not enough fuel for the round trip"; systems_order_sent.insert(far_system_id); - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), far_system_id, true, m_systems_deemed_unsafe))); + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), far_system_id))); } else { //no unknown planet in range. Let's try to get home to resupply std::pair<int, int> pair = GetNearestSupplyPoint(empire, fleet->SystemID()); - if (pair.first != INVALID_OBJECT_ID) { - std::string thisSysName = GetSystem(pair.first)->Name(); - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Fleet " << fleet->ID() << " going to resupply at " << pair.first<< ": "<< thisSysName; - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), pair.first, true, m_systems_deemed_unsafe))); - } else { - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Fleet " << fleet->ID() << " wanted to resupply but found no available system"; - } + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Fleet " << fleet->ID() << " going to resupply at " << pair.first; + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, fleet->ID(), fleet->SystemID(), pair.first))); } i = nbr_fleet_to_send; //stop the loop since every fleet will have order } @@ -5153,11 +5103,10 @@ if (min_dist != DBL_MAX) { //there is an unexplored system rechable - std::string thisSysName = GetSystem(end_system_id)->Name(); - Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << better_fleet_id << " is " << end_system_id<< ": "<< thisSysName; + Logger().debugStream() << "MapWnd::DispatchFleetsExploring : Next sytem for fleet " << better_fleet_id << " is " << end_system_id; systems_order_sent.insert(end_system_id); fleet_idle.erase(better_fleet_id); - HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, better_fleet_id, start_system_id, end_system_id,true, m_systems_deemed_unsafe))); + HumanClientApp::GetApp()->Orders().IssueOrder(OrderPtr(new FleetMoveOrder(empire_id, better_fleet_id, start_system_id, end_system_id))); } else { remaining_system_to_explore = false; //from now on, each ship will be sent to a supply depot or a far system } |
From: <geo...@us...> - 2013-05-24 22:30:49
|
Revision: 6065 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6065&view=rev Author: geoffthemedio Date: 2013-05-24 22:30:42 +0000 (Fri, 24 May 2013) Log Message: ----------- Icon-compatible highlighting of toolbar buttons when activated. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-05-24 20:07:37 UTC (rev 6064) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-05-24 22:30:42 UTC (rev 6065) @@ -4155,12 +4155,14 @@ m_moderator_wnd->Refresh(); m_moderator_wnd->Show(); - //m_btn_moderator->MarkSelectedGray(); + m_btn_moderator->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "moderator_mouseover.png"))); + m_btn_moderator->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "moderator.png"))); } void MapWnd::HideModeratorActions() { m_moderator_wnd->Hide(); - //m_btn_moderator->MarkNotSelected(); + m_btn_moderator->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "moderator.png"))); + m_btn_moderator->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "moderator_mouseover.png"))); } bool MapWnd::ToggleModeratorActions() { @@ -4186,12 +4188,14 @@ m_object_list_wnd->Show(); // indicate selection on button - //m_btn_objects->MarkSelectedGray(); + m_btn_objects->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "objects_mouseover.png"))); + m_btn_objects->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "objects.png"))); } void MapWnd::HideObjects() { m_object_list_wnd->Hide(); // necessary so it won't be visible when next toggled - //m_btn_objects->MarkNotSelected(); + m_btn_objects->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "objects.png"))); + m_btn_objects->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "objects_mouseover.png"))); } bool MapWnd::ToggleObjects() { @@ -4217,12 +4221,14 @@ m_sitrep_panel->Show(); // indicate selection on button - //m_btn_siterep->MarkSelectedGray(); + m_btn_siterep->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "sitrep_mouseover.png"))); + m_btn_siterep->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "sitrep.png"))); } void MapWnd::HideSitRep() { m_sitrep_panel->Hide(); // necessary so it won't be visible when next toggled - //m_btn_siterep->MarkNotSelected(); + m_btn_siterep->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "sitrep.png"))); + m_btn_siterep->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "sitrep_mouseover.png"))); } bool MapWnd::ToggleSitRep() { @@ -4248,12 +4254,14 @@ GG::GUI::GetGUI()->MoveUp(m_pedia_panel); // indicate selection on button - //m_btn_pedia->MarkSelectedGray(); + m_btn_pedia->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "pedia_mouseover.png"))); + m_btn_pedia->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "pedia.png"))); } void MapWnd::HidePedia() { m_pedia_panel->Hide(); - //m_btn_pedia->MarkNotSelected(); + m_btn_pedia->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "pedia.png"))); + m_btn_pedia->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "pedia_mouseover.png"))); } bool MapWnd::TogglePedia() { @@ -4289,14 +4297,17 @@ GG::GUI::GetGUI()->MoveUp(m_research_wnd); // indicate selection on button - //m_btn_research->MarkSelectedGray(); + m_btn_research->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "research_mouseover.png"))); + m_btn_research->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "research.png"))); m_pedia_panel->SetText("ENC_TECH", false); } void MapWnd::HideResearch() { m_research_wnd->Hide(); - //m_btn_research->MarkNotSelected(); + m_btn_research->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "research.png"))); + m_btn_research->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "research_mouseover.png"))); + ShowAllPopups(); RestoreSidePanel(); } @@ -4327,7 +4338,8 @@ GG::GUI::GetGUI()->MoveUp(m_production_wnd); // indicate selection on button - //m_btn_production->MarkSelectedGray(); + m_btn_production->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "production_mouseover.png"))); + m_btn_production->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "production.png"))); // if no system is currently shown in sidepanel, default to this empire's // home system (ie. where the capital is) @@ -4345,7 +4357,9 @@ void MapWnd::HideProduction() { m_production_wnd->Hide(); m_in_production_view_mode = false; - //m_btn_production->MarkNotSelected(); + m_btn_production->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "production.png"))); + m_btn_production->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "production_mouseover.png"))); + ShowAllPopups(); RestoreSidePanel(); } @@ -4380,12 +4394,15 @@ m_design_wnd->Reset(); // indicate selection on button - //m_btn_design->MarkSelectedGray(); + m_btn_design->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "design_mouseover.png"))); + m_btn_design->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "design.png"))); } void MapWnd::HideDesign() { m_design_wnd->Hide(); - //m_btn_design->MarkNotSelected(); + m_btn_design->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "design.png"))); + m_btn_design->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "design_mouseover.png"))); + EnableAlphaNumAccels(); RestoreSidePanel(); } @@ -4402,11 +4419,16 @@ if (!m_menu_showing) { ClearProjectedFleetMovementLines(); m_menu_showing = true; - //m_btn_menu->MarkSelectedGray(); + + m_btn_menu->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "menu_mouseover.png"))); + m_btn_menu->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "menu.png"))); + InGameMenu menu; menu.Run(); m_menu_showing = false; - //m_btn_menu->MarkNotSelected(); + + m_btn_menu->SetUnpressedGraphic(GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "menu.png"))); + m_btn_menu->SetRolloverGraphic (GG::SubTexture(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "buttons" / "menu_mouseover.png"))); } return true; } |
From: <geo...@us...> - 2013-05-25 09:58:43
|
Revision: 6072 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6072&view=rev Author: geoffthemedio Date: 2013-05-25 09:58:36 +0000 (Sat, 25 May 2013) Log Message: ----------- Implemented moderator fleet deletion by right-clicking fleet icons on the map (when the delete action is selected). Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-05-25 09:50:36 UTC (rev 6071) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-05-25 09:58:36 UTC (rev 6072) @@ -3714,9 +3714,7 @@ net.SendMessage(ModeratorActionMessage(player_id, Moderator::RemoveStarlane(system_id, selected_system_id))); } - } - return; } @@ -3889,9 +3887,33 @@ SelectFleet(fleet_to_select_id); } -void MapWnd::FleetButtonRightClicked(const FleetButton* fleet_btn) -{} +void MapWnd::FleetButtonRightClicked(const FleetButton* fleet_btn) { + if (!fleet_btn) + return; + // get fleets represented by clicked button + const std::vector<int> btn_fleets = fleet_btn->Fleets(); + if (btn_fleets.empty()) { + Logger().errorStream() << "Clicked FleetButton contained no fleets!"; + return; + } + + if (ClientPlayerIsModerator()) { + ModeratorActionsWnd::ModeratorActionSetting mas = m_moderator_wnd->SelectedAction(); + ClientNetworking& net = HumanClientApp::GetApp()->Networking(); + int player_id = HumanClientApp::GetApp()->PlayerID(); + + if (mas == ModeratorActionsWnd::MAS_Destroy) { + for (std::vector<int>::const_iterator it = btn_fleets.begin(); + it != btn_fleets.end(); ++it) + { + net.SendMessage(ModeratorActionMessage(player_id, + Moderator::DestroyUniverseObject(*it))); + } + } + } +} + void MapWnd::SelectedFleetsChanged() { // get selected fleets std::set<int> selected_fleet_ids; |
From: <dil...@us...> - 2013-05-30 23:45:49
|
Revision: 6092 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6092&view=rev Author: dilvish-fo Date: 2013-05-30 23:45:42 +0000 (Thu, 30 May 2013) Log Message: ----------- fixed Supply Core determination; had been slightly overinclusive in some situations Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-05-30 20:18:19 UTC (rev 6091) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-05-30 23:45:42 UTC (rev 6092) @@ -2299,7 +2299,11 @@ laneIt!= universe_object_cast<System*>(objMap.Object(sysID))->end_lanes(); laneIt++) { int newSys = laneIt->first; - //Logger().debugStream() << "MapWnd::InitStarlaneRenderingBuffers ==> GetLeastJumps, considering lane/WH to system "<< newSys; + std::pair<int, int> lane_forward = std::make_pair(sysID, newSys); + std::pair<int, int> lane_backward = std::make_pair(newSys, sysID); + // see if this lane exists in this empire's supply propegation lanes set. either direction accepted. if not, skip this lane + if (supplylanes.find(lane_forward) == supplylanes.end() && supplylanes.find(lane_backward) == supplylanes.end()) + continue; if (!laneIt->second && ( ancestor[newSys] == -1 )) { //is a starlane, and not yet visited newSys //TODO: should allow wormholes here? ancestor[newSys] = sysID; if (newSys==endSys) { |
From: <geo...@us...> - 2013-06-05 18:25:37
|
Revision: 6116 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6116&view=rev Author: geoffthemedio Date: 2013-06-05 18:25:31 +0000 (Wed, 05 Jun 2013) Log Message: ----------- Added somewhat dubious scanlines to not-currently-visible field rendering on map. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-06-05 18:23:23 UTC (rev 6115) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-06-05 18:25:31 UTC (rev 6116) @@ -1142,6 +1142,56 @@ if (texture) texture->OrthoBlit(ul, lr); } + + // scanlines? + + int empire_id = HumanClientApp::GetApp()->EmpireID(); + if (m_scanline_shader && + empire_id != ALL_EMPIRES && + GetOptionsDB().Get<bool>("UI.system-fog-of-war")) + { + float fog_scanline_spacing = static_cast<float>(GetOptionsDB().Get<double>("UI.system-fog-of-war-spacing")); + Universe& universe = GetUniverse(); + + glPushMatrix(); + glLoadIdentity(); + const double TWO_PI = 2.0*3.14159; + glDisable(GL_TEXTURE_2D); + glEnable(GL_LINE_SMOOTH); + glLineWidth(1.5f); + glColor(GetOptionsDB().Get<StreamableColor>("UI.unowned-starlane-colour").ToClr()); + m_scanline_shader->Use(); + m_scanline_shader->Bind("scanline_spacing", fog_scanline_spacing); + + for (std::map<int, FieldIcon*>::const_iterator it = m_field_icons.begin(); + it != m_field_icons.end(); ++it) + { + if (universe.GetObjectVisibilityByEmpire(it->first, empire_id) > VIS_BASIC_VISIBILITY) + continue; + + const FieldIcon* icon = it->second; + const int ARC_SIZE = Value(icon->Width()); + + GG::Pt ul = icon->UpperLeft(), lr = icon->LowerRight(); + GG::Pt size = lr - ul; + GG::Pt half_size = GG::Pt(size.x / 2, size.y / 2); + GG::Pt middle = ul + half_size; + + GG::Pt circle_size = GG::Pt(static_cast<GG::X>(ARC_SIZE), + static_cast<GG::Y>(ARC_SIZE)); + GG::Pt circle_half_size = GG::Pt(circle_size.x / 2, circle_size.y / 2); + GG::Pt circle_ul = middle - circle_half_size; + GG::Pt circle_lr = circle_ul + circle_size; + CircleArc(circle_ul, circle_lr, 0.0, TWO_PI, true); + } + + m_scanline_shader->stopUse(); + glDisable(GL_LINE_SMOOTH); + glEnable(GL_TEXTURE_2D); + glPopMatrix(); + glLineWidth(1.0f); + } + glPopMatrix(); } |
From: <geo...@us...> - 2013-06-07 22:54:38
|
Revision: 6123 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6123&view=rev Author: geoffthemedio Date: 2013-06-07 22:54:32 +0000 (Fri, 07 Jun 2013) Log Message: ----------- Tweaked order of rendering of fields and not visible fields' scanlines. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-06-07 17:44:43 UTC (rev 6122) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-06-07 22:54:32 UTC (rev 6123) @@ -1129,12 +1129,26 @@ } void MapWnd::RenderFields() { + // render fields in 3 steps: + // 1) not visible field textures + // 2) scanlines on not visible fields + // 3) visible field textures + + const Universe& universe = GetUniverse(); + int empire_id = HumanClientApp::GetApp()->EmpireID(); + + glEnable(GL_TEXTURE_2D); glPushMatrix(); glLoadIdentity(); glColor(GG::CLR_WHITE); + + // draw not visible fields first for (std::map<int, FieldIcon*>::const_iterator it = m_field_icons.begin(); it != m_field_icons.end(); ++it) { + if (universe.GetObjectVisibilityByEmpire(it->first, empire_id) > VIS_BASIC_VISIBILITY) + continue; + const FieldIcon* icon = it->second; GG::Pt ul = icon->UpperLeft(); GG::Pt lr = icon->LowerRight(); @@ -1143,24 +1157,13 @@ texture->OrthoBlit(ul, lr); } - // scanlines? - - int empire_id = HumanClientApp::GetApp()->EmpireID(); + // if possible, draw scanlines for not visible fields if (m_scanline_shader && empire_id != ALL_EMPIRES && GetOptionsDB().Get<bool>("UI.system-fog-of-war")) { + m_scanline_shader->Use(); float fog_scanline_spacing = static_cast<float>(GetOptionsDB().Get<double>("UI.system-fog-of-war-spacing")); - Universe& universe = GetUniverse(); - - glPushMatrix(); - glLoadIdentity(); - const double TWO_PI = 2.0*3.14159; - glDisable(GL_TEXTURE_2D); - glEnable(GL_LINE_SMOOTH); - glLineWidth(1.5f); - glColor(GetOptionsDB().Get<StreamableColor>("UI.unowned-starlane-colour").ToClr()); - m_scanline_shader->Use(); m_scanline_shader->Bind("scanline_spacing", fog_scanline_spacing); for (std::map<int, FieldIcon*>::const_iterator it = m_field_icons.begin(); @@ -1171,8 +1174,10 @@ const FieldIcon* icon = it->second; const int ARC_SIZE = Value(icon->Width()); + const double TWO_PI = 2.0*3.14159; + GG::Pt ul = icon->UpperLeft(); + GG::Pt lr = icon->LowerRight(); - GG::Pt ul = icon->UpperLeft(), lr = icon->LowerRight(); GG::Pt size = lr - ul; GG::Pt half_size = GG::Pt(size.x / 2, size.y / 2); GG::Pt middle = ul + half_size; @@ -1182,16 +1187,28 @@ GG::Pt circle_half_size = GG::Pt(circle_size.x / 2, circle_size.y / 2); GG::Pt circle_ul = middle - circle_half_size; GG::Pt circle_lr = circle_ul + circle_size; + CircleArc(circle_ul, circle_lr, 0.0, TWO_PI, true); } m_scanline_shader->stopUse(); - glDisable(GL_LINE_SMOOTH); - glEnable(GL_TEXTURE_2D); - glPopMatrix(); - glLineWidth(1.0f); } + // draw visible fields over top without scanline shader + for (std::map<int, FieldIcon*>::const_iterator it = m_field_icons.begin(); + it != m_field_icons.end(); ++it) + { + if (universe.GetObjectVisibilityByEmpire(it->first, empire_id) <= VIS_BASIC_VISIBILITY) + continue; + + const FieldIcon* icon = it->second; + GG::Pt ul = icon->UpperLeft(); + GG::Pt lr = icon->LowerRight(); + boost::shared_ptr<GG::Texture> texture = icon->FieldTexture(); + if (texture) + texture->OrthoBlit(ul, lr); + } + glPopMatrix(); } |
From: <geo...@us...> - 2013-06-18 06:48:52
|
Revision: 6167 http://sourceforge.net/p/freeorion/code/6167 Author: geoffthemedio Date: 2013-06-18 06:48:46 +0000 (Tue, 18 Jun 2013) Log Message: ----------- Added support for right-clicking on systems to enact moderator action to set all objects in system's ownership. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-06-18 04:50:43 UTC (rev 6166) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-06-18 06:48:46 UTC (rev 6167) @@ -3818,8 +3818,26 @@ net.SendMessage(ModeratorActionMessage(player_id, Moderator::RemoveStarlane(system_id, selected_system_id))); } + } else if (mas == MAS_SetOwner) { + int empire_id = m_moderator_wnd->SelectedEmpire(); + const System* system = GetSystem(system_id); + if (!system) + return; + std::vector<int> object_ids = system->FindObjectIDs(); + + for (std::vector<int>::const_iterator it = object_ids.begin(); + it != object_ids.end(); ++it) + { + const UniverseObject* obj = GetUniverseObject(*it); + if (!obj) + continue; + UniverseObjectType obj_type = obj->ObjectType(); + if (obj_type >= OBJ_BUILDING && obj_type < OBJ_SYSTEM) { + net.SendMessage(ModeratorActionMessage(player_id, + Moderator::SetOwner(*it, empire_id))); + } + } } - return; } if (!m_in_production_view_mode && FleetUIManager::GetFleetUIManager().ActiveFleetWnd()) { |
From: <geo...@us...> - 2013-06-22 23:09:14
|
Revision: 6185 http://sourceforge.net/p/freeorion/code/6185 Author: geoffthemedio Date: 2013-06-22 23:09:12 +0000 (Sat, 22 Jun 2013) Log Message: ----------- Removed code that moved newly created fleet icons to bottom of GUI stack, which was intended to prevent them from being rendered over the sidepanel and sitrep, but which apparently isn't needed anymore, and which was causing fleet buttons to be placed under field icons, which was sometimes making them non-clickable. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-06-22 15:35:20 UTC (rev 6184) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-06-22 23:09:12 UTC (rev 6185) @@ -3471,7 +3471,6 @@ m_fleet_buttons[(*fleet_it)->ID()] = fb; AttachChild(fb); - MoveChildDown(fb); // so fleet buttons won't show over sidepanel or sitrep window GG::Connect(fb->LeftClickedSignal, boost::bind(&MapWnd::FleetButtonLeftClicked, this, fb)); GG::Connect(fb->RightClickedSignal, boost::bind(&MapWnd::FleetButtonRightClicked, this, fb)); } @@ -3507,7 +3506,6 @@ m_fleet_buttons[(*fleet_it)->ID()] = fb; AttachChild(fb); - MoveChildDown(fb); // so fleet buttons won't show over sidepanel or sitrep window GG::Connect(fb->LeftClickedSignal, boost::bind(&MapWnd::FleetButtonLeftClicked, this, fb)); GG::Connect(fb->RightClickedSignal, boost::bind(&MapWnd::FleetButtonRightClicked, this, fb)); } @@ -3544,7 +3542,6 @@ m_fleet_buttons[(*fleet_it)->ID()] = fb; AttachChild(fb); - MoveChildDown(fb); // so fleet buttons won't show over sidepanel or sitrep window GG::Connect(fb->LeftClickedSignal, boost::bind(&MapWnd::FleetButtonLeftClicked, this, fb)); GG::Connect(fb->RightClickedSignal, boost::bind(&MapWnd::FleetButtonRightClicked, this, fb)); } |
From: <geo...@us...> - 2013-06-30 21:01:04
|
Revision: 6214 http://sourceforge.net/p/freeorion/code/6214 Author: geoffthemedio Date: 2013-06-30 21:01:01 +0000 (Sun, 30 Jun 2013) Log Message: ----------- Added resetting of sitrep panel displayed turn to MapWnd cleanup. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-06-30 18:19:06 UTC (rev 6213) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-06-30 21:01:01 UTC (rev 6214) @@ -4274,6 +4274,7 @@ m_FPS->Hide(); m_scale_line->Hide(); m_zoom_slider->Hide(); + m_sitrep_panel->ShowSitRepsForTurn(INVALID_GAME_TURN); } void MapWnd::Sanitize() { |
From: <dil...@us...> - 2013-07-08 06:31:44
|
Revision: 6227 http://sourceforge.net/p/freeorion/code/6227 Author: dilvish-fo Date: 2013-07-08 06:31:42 +0000 (Mon, 08 Jul 2013) Log Message: ----------- fixes slight gaps in intersection points of empire detection circles Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-07-07 02:37:42 UTC (rev 6226) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-07-08 06:31:42 UTC (rev 6227) @@ -1743,7 +1743,7 @@ 0.0, TWO_PI, true); } glStencilFunc(GL_GREATER, 0x2, 0xff); - glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); + glStencilOp(GL_DECR, GL_KEEP, GL_KEEP); for (std::size_t i = 0; i < circles_in_this_colour.size(); ++i) { CircleArc(circles_in_this_colour[i].first + UNIT, circles_in_this_colour[i].second - UNIT, 0.0, TWO_PI, false); |
From: <dil...@us...> - 2013-07-08 16:49:03
|
Revision: 6228 http://sourceforge.net/p/freeorion/code/6228 Author: dilvish-fo Date: 2013-07-08 16:48:59 +0000 (Mon, 08 Jul 2013) Log Message: ----------- reduced opacity of detection circle fill color Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-07-08 06:31:42 UTC (rev 6227) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-07-08 16:48:59 UTC (rev 6228) @@ -1696,7 +1696,7 @@ { if (const Empire* empire = Empires().Lookup(it->first.first)) { GG::Clr circle_colour = empire->Color(); - circle_colour.a = 64; + circle_colour.a = 24; GG::Pt circle_centre = ScreenCoordsFromUniversePosition(it->first.second.first, it->first.second.second); double radius = it->second*ZoomFactor(); @@ -1736,7 +1736,8 @@ glClear(GL_STENCIL_BUFFER_BIT); glStencilOp(GL_INCR, GL_INCR, GL_INCR); glStencilFunc(GL_EQUAL, 0x0, 0xff); - glColor(it->first); + GG::Clr circle_colour = it->first; + glColor(circle_colour); const std::vector<std::pair<GG::Pt, GG::Pt> >& circles_in_this_colour = it->second; for (std::size_t i = 0; i < circles_in_this_colour.size(); ++i) { CircleArc(circles_in_this_colour[i].first, circles_in_this_colour[i].second, @@ -1744,6 +1745,8 @@ } glStencilFunc(GL_GREATER, 0x2, 0xff); glStencilOp(GL_DECR, GL_KEEP, GL_KEEP); + circle_colour.a = 64; + glColor(circle_colour); for (std::size_t i = 0; i < circles_in_this_colour.size(); ++i) { CircleArc(circles_in_this_colour[i].first + UNIT, circles_in_this_colour[i].second - UNIT, 0.0, TWO_PI, false); |
From: <dil...@us...> - 2013-07-28 17:54:18
|
Revision: 6280 http://sourceforge.net/p/freeorion/code/6280 Author: dilvish-fo Date: 2013-07-28 17:54:15 +0000 (Sun, 28 Jul 2013) Log Message: ----------- cleans up a wayward place where population projections were being done, which was leaving some planet settings modified & sometimes throwing off things such as the Philospher planet. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-07-28 15:08:54 UTC (rev 6279) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-07-28 17:54:15 UTC (rev 6280) @@ -4180,29 +4180,6 @@ // refresh meters of planets in currently selected system, as changing selected fleets // may have changed which species a planet should have population estimates shown for - int sidepanel_system_id = SidePanel::SystemID(); - if (sidepanel_system_id == INVALID_OBJECT_ID) - return; - - // todo: update only target population meters - - int this_client_empire_id = HumanClientApp::GetApp()->EmpireID(); - const std::set<int>& this_client_known_destroyed_objects = GetUniverse().EmpireKnownDestroyedObjectIDs(this_client_empire_id); - - std::vector<int> planets = Objects().FindObjectIDs<Planet>(); - std::vector<int> system_planets; system_planets.reserve(16); // arbitrary number big enough for all planets in a system - for (std::vector<int>::const_iterator it = planets.begin(); it != planets.end(); ++it) { - if (this_client_known_destroyed_objects.find(*it) != this_client_known_destroyed_objects.end()) - continue; - const Planet* planet = GetPlanet(*it); - if (!planet) - continue; - if (planet->SystemID() != sidepanel_system_id) - continue; - system_planets.push_back(*it); - } - - UpdateMeterEstimates(system_planets); SidePanel::Update(); } @@ -4959,104 +4936,13 @@ } void MapWnd::UpdateMeterEstimates(const std::vector<int>& objects_vec) { - // add this player ownership to all planets in the objects_vec that aren't - // currently colonized. this way, any effects the player knows about that - // would act on those planets if the player colonized them include those - // planets in their scope. This lets effects from techs the player knows - // alter the max population of planet that is displayed to the player, even - // if those effects have a condition that causes them to only act on - // planets the player owns (so as to not improve enemy planets if a player - // reseraches a tech that should only benefit him/herself) + // causes meters to be updated when appropriate, such as after a focus change, + // which would affect target meters Logger().debugStream() << "MapWnd::UpdateMeterEstimates"; - int empire_id = HumanClientApp::GetApp()->EmpireID(); GetUniverse().InhibitUniverseObjectSignals(true); - - std::string colony_ship_species; - // remember which planes are temporarily modified so it can be undone after updating meter estimates - std::vector<Planet*> ownership_modified_planets; - std::vector<Planet*> species_modified_planets; - - - if (const Ship* ship = ValidSelectedColonyShip(SidePanel::SystemID())) { - // there is a selected colony ship suitable for the visible system - if (ship->CanColonize() && ship->OwnedBy(empire_id) && !ship->SpeciesName().empty()) { - // selected ship: exists, is a colony ship, is owned by this client's player - // is in a system, and has a usable species. - - const std::string& species_name = ship->SpeciesName(); - int ship_system_id = ship->SystemID(); - - // get all planets the player knows about that aren't yet colonized - // (aren't owned by anyone) and are otherwise valid colonization - // targets for the selected ship. Add the current player's ownership - // to all, while remembering which planets this is done to (so it - // can be undone later) - for (std::vector<int>::const_iterator it = objects_vec.begin(); it != objects_vec.end(); ++it) { - Planet* planet = GetPlanet(*it); - if (!planet || - (!planet->Unowned() && !planet->OwnedBy(empire_id)) || - planet->SystemID() != ship_system_id || - planet->CurrentMeterValue(METER_POPULATION) > 0.0) - { continue; } - - PlanetEnvironment planet_env_for_colony_species = planet->EnvironmentForSpecies(species_name); - if (planet_env_for_colony_species > PE_GOOD || planet_env_for_colony_species < PE_HOSTILE) - continue; - - if (planet->Unowned()) { - ownership_modified_planets.push_back(planet); - planet->SetOwner(empire_id); - } - if (planet->SpeciesName().empty()) { - species_modified_planets.push_back(planet); - planet->SetSpecies(species_name); - } - } - } - } else if (FleetUIManager::GetFleetUIManager().SelectedShipIDs().empty()) { - // no suitable colony ship selected. instead, for each planet being - // updated, attempt to find a colony ship for it, and use that ship's - // species for meter estimates. - for (std::vector<int>::const_iterator it = objects_vec.begin(); it != objects_vec.end(); ++it) { - Planet* planet = GetPlanet(*it); - if (!planet || - (!planet->Unowned() && !planet->OwnedBy(empire_id)) || - planet->CurrentMeterValue(METER_POPULATION) > 0.0) - { continue; } - - // attempt to find colony ship for this planet - const Ship* ship = GetShip(AutomaticallyChosenColonyShip(*it)); - if (!ship) - continue; - - const std::string& species_name = ship->SpeciesName(); - - if (planet->Unowned()) { - ownership_modified_planets.push_back(planet); - planet->SetOwner(empire_id); - } - if (planet->SpeciesName().empty()) { - species_modified_planets.push_back(planet); - planet->SetSpecies(species_name); - } - } - } - - - // update meter estimates with temporary ownership / species set GetUniverse().UpdateMeterEstimates(objects_vec); - - - // undo any temporary changes from above - for (std::vector<Planet*>::iterator it = ownership_modified_planets.begin(); - it != ownership_modified_planets.end(); ++it) - { (*it)->SetOwner(ALL_EMPIRES); } - for (std::vector<Planet*>::iterator it = species_modified_planets.begin(); - it != species_modified_planets.end(); ++it) - { (*it)->SetSpecies(""); } - GetUniverse().InhibitUniverseObjectSignals(false); } |
From: <dil...@us...> - 2013-08-27 16:01:57
|
Revision: 6374 http://sourceforge.net/p/freeorion/code/6374 Author: dilvish-fo Date: 2013-08-27 16:01:53 +0000 (Tue, 27 Aug 2013) Log Message: ----------- Per forum discussions, made detection circles default to On, and changed default core starlane multiplier to 4. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-08-24 20:35:39 UTC (rev 6373) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-08-27 16:01:53 UTC (rev 6374) @@ -108,7 +108,7 @@ db.Add("UI.show-galaxy-map-zoom-slider", UserStringNop("OPTIONS_DB_GALAXY_MAP_ZOOM_SLIDER"), false, Validator<bool>()); db.Add("UI.optimized-system-rendering", UserStringNop("OPTIONS_DB_OPTIMIZED_SYSTEM_RENDERING"), true, Validator<bool>()); db.Add("UI.starlane-thickness", UserStringNop("OPTIONS_DB_STARLANE_THICKNESS"), 2.0, RangedStepValidator<double>(0.25, 0.25, 10.0)); - db.Add("UI.starlane-core-multiplier", UserStringNop("OPTIONS_DB_STARLANE_CORE"), 6.0, RangedStepValidator<double>(1.0, 1.0, 10.0)); + db.Add("UI.starlane-core-multiplier", UserStringNop("OPTIONS_DB_STARLANE_CORE"), 4.0, RangedStepValidator<double>(1.0, 1.0, 10.0)); db.Add("UI.resource-starlane-colouring", UserStringNop("OPTIONS_DB_RESOURCE_STARLANE_COLOURING"), true, Validator<bool>()); db.Add("UI.fleet-supply-lines", UserStringNop("OPTIONS_DB_FLEET_SUPPLY_LINES"), true, Validator<bool>()); db.Add("UI.fleet-supply-line-width", UserStringNop("OPTIONS_DB_FLEET_SUPPLY_LINE_WIDTH"), 3.0, RangedStepValidator<double>(0.25, 0.25, 10.0)); @@ -116,7 +116,7 @@ db.Add("UI.fleet-supply-line-dot-rate", UserStringNop("OPTIONS_DB_FLEET_SUPPLY_LINE_DOT_RATE"), 0.02, RangedStepValidator<double>(0.01, 0.01, 0.1)); db.Add("UI.unowned-starlane-colour", UserStringNop("OPTIONS_DB_UNOWNED_STARLANE_COLOUR"), StreamableColor(GG::Clr(72, 72, 72, 255)), Validator<StreamableColor>()); - db.Add("UI.show-detection-range", UserStringNop("OPTIONS_DB_GALAXY_MAP_DETECTION_RANGE"), false, Validator<bool>()); + db.Add("UI.show-detection-range", UserStringNop("OPTIONS_DB_GALAXY_MAP_DETECTION_RANGE"), true, Validator<bool>()); db.Add("UI.system-fog-of-war", UserStringNop("OPTIONS_DB_UI_SYSTEM_FOG"), true, Validator<bool>()); db.Add("UI.system-fog-of-war-spacing", UserStringNop("OPTIONS_DB_UI_SYSTEM_FOG_SPACING"), 4.0, RangedStepValidator<double>(0.25, 1.5, 8.0)); |
From: <dil...@us...> - 2013-09-14 18:52:07
|
Revision: 6415 http://sourceforge.net/p/freeorion/code/6415 Author: dilvish-fo Date: 2013-09-14 18:52:03 +0000 (Sat, 14 Sep 2013) Log Message: ----------- detection circle/region perimeters made more noticeable Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-09-12 04:39:49 UTC (rev 6414) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-09-14 18:52:03 UTC (rev 6415) @@ -1747,8 +1747,8 @@ } glStencilFunc(GL_GREATER, 0x2, 0xff); glStencilOp(GL_DECR, GL_KEEP, GL_KEEP); - circle_colour.a = 64; - glColor(circle_colour); + circle_colour.a = 84; + glColor(GG::LightColor(GG::LightColor(circle_colour))); for (std::size_t i = 0; i < circles_in_this_colour.size(); ++i) { CircleArc(circles_in_this_colour[i].first + UNIT, circles_in_this_colour[i].second - UNIT, 0.0, TWO_PI, false); |
From: <geo...@us...> - 2013-10-19 21:08:05
|
Revision: 6457 http://sourceforge.net/p/freeorion/code/6457 Author: geoffthemedio Date: 2013-10-19 21:08:01 +0000 (Sat, 19 Oct 2013) Log Message: ----------- Small patch by Rawng hiding moderator actions window when leaving a game. Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-10-19 21:07:33 UTC (rev 6456) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-10-19 21:08:01 UTC (rev 6457) @@ -4253,6 +4253,7 @@ HideSitRep(); HidePedia(); HideObjects(); + HideModeratorActions(); m_pedia_panel->ClearItems(); // deletes all pedia items in the memory m_toolbar->Hide(); m_FPS->Hide(); |
From: <dil...@us...> - 2013-10-27 16:08:49
|
Revision: 6486 http://sourceforge.net/p/freeorion/code/6486 Author: dilvish-fo Date: 2013-10-27 16:08:46 +0000 (Sun, 27 Oct 2013) Log Message: ----------- changed MapWnd pedia lookups so that looking up a ship design from the fleet window or a sitrep, or looking up techs, buildingtypes, parttypes and hulltypes form sitreps, now simply displays info in the normal pedia panel rather than also opening up the ProductionWnd or ResearchWnd Modified Paths: -------------- trunk/FreeOrion/UI/MapWnd.cpp Modified: trunk/FreeOrion/UI/MapWnd.cpp =================================================================== --- trunk/FreeOrion/UI/MapWnd.cpp 2013-10-27 16:01:24 UTC (rev 6485) +++ trunk/FreeOrion/UI/MapWnd.cpp 2013-10-27 16:08:46 UTC (rev 6486) @@ -2755,33 +2755,53 @@ } void MapWnd::ShowTech(const std::string& tech_name) { - if (!m_research_wnd->Visible()) - ToggleResearch(); - m_research_wnd->ShowTech(tech_name); + if (m_research_wnd->Visible()) { + m_research_wnd->ShowTech(tech_name); + } else { + if (!m_pedia_panel->Visible()) + TogglePedia(); + m_pedia_panel->SetTech(tech_name); + } } void MapWnd::ShowBuildingType(const std::string& building_type_name) { - if (!m_production_wnd->Visible()) - ToggleProduction(); - m_production_wnd->ShowBuildingTypeInEncyclopedia(building_type_name); + if (m_production_wnd->Visible()) { + m_production_wnd->ShowBuildingTypeInEncyclopedia(building_type_name); + } else { + if (!m_pedia_panel->Visible()) + TogglePedia(); + m_pedia_panel->SetBuildingType(building_type_name); + } } void MapWnd::ShowPartType(const std::string& part_type_name) { - if (!m_design_wnd->Visible()) - ToggleDesign(); - m_design_wnd->ShowPartTypeInEncyclopedia(part_type_name); + if (m_design_wnd->Visible()) { + m_design_wnd->ShowPartTypeInEncyclopedia(part_type_name); + } else { + if (!m_pedia_panel->Visible()) + TogglePedia(); + m_pedia_panel->SetPartType(part_type_name); + } } void MapWnd::ShowHullType(const std::string& hull_type_name) { - if (!m_design_wnd->Visible()) - ToggleDesign(); - m_design_wnd->ShowHullTypeInEncyclopedia(hull_type_name); + if (m_design_wnd->Visible()) { + m_design_wnd->ShowHullTypeInEncyclopedia(hull_type_name); + } else { + if (!m_pedia_panel->Visible()) + TogglePedia(); + m_pedia_panel->SetHullType(hull_type_name); + } } void MapWnd::ShowShipDesign(int design_id) { - if (!m_production_wnd->Visible()) - ToggleProduction(); - m_production_wnd->ShowShipDesignInEncyclopedia(design_id); + if (m_production_wnd->Visible()) { + m_production_wnd->ShowShipDesignInEncyclopedia(design_id); + } else { + if (!m_pedia_panel->Visible()) + TogglePedia(); + m_pedia_panel->SetDesign(design_id); + } } void MapWnd::ShowSpecial(const std::string& special_name) { |