PopulationPanel::PopulationPanel(GG::X w, int object_id) : AccordionPanel(w, GG::Y(ClientUI::Pts()*2)), m_popcenter_id(object_id), m_meter_stats(), m_multi_icon_value_indicator(nullptr), m_multi_meter_status_bar(nullptr) { SetName("PopulationPanel"); std::shared_ptr<const PopCenter> pop = GetPopCenter(); if (!pop) throw std::invalid_argument("Attempted to construct a PopulationPanel with an object id is not a PopCenter"); m_expand_button->LeftClickedSignal.connect( boost::bind(&PopulationPanel::ExpandCollapseButtonPressed, this)); const auto obj = GetUniverseObject(m_popcenter_id); if (!obj) { ErrorLogger() << "Invalid object id " << m_popcenter_id; return; } // small meter indicators - for use when panel is collapsed m_meter_stats.push_back( std::make_pair(METER_POPULATION, new StatisticIcon(ClientUI::SpeciesIcon(pop->SpeciesName()), obj->InitialMeterValue(METER_POPULATION), 3, false, MeterIconSize().x, MeterIconSize().y))); m_meter_stats.push_back( std::make_pair(METER_HAPPINESS, new StatisticIcon(ClientUI::MeterIcon(METER_HAPPINESS), obj->InitialMeterValue(METER_HAPPINESS), 3, false, MeterIconSize().x, MeterIconSize().y))); m_meter_stats.push_back( std::make_pair(METER_CONSTRUCTION, new StatisticIcon(ClientUI::MeterIcon(METER_CONSTRUCTION), obj->InitialMeterValue(METER_CONSTRUCTION), 3, false, MeterIconSize().x, MeterIconSize().y))); // meter and production indicators std::vector<std::pair<MeterType, MeterType>> meters; for (std::pair<MeterType, StatisticIcon*>& meter_stat : m_meter_stats) { meter_stat.second->InstallEventFilter(this); AttachChild(meter_stat.second); meters.push_back(std::make_pair(meter_stat.first, AssociatedMeterType(meter_stat.first))); } // attach and show meter bars and large resource indicators m_multi_icon_value_indicator = new MultiIconValueIndicator(Width() - 2*EDGE_PAD, m_popcenter_id, meters); m_multi_meter_status_bar = new MultiMeterStatusBar(Width() - 2*EDGE_PAD, m_popcenter_id, meters); // determine if this panel has been created yet. std::map<int, bool>::iterator it = s_expanded_map.find(m_popcenter_id); if (it == s_expanded_map.end()) s_expanded_map[m_popcenter_id] = false; // if not, default to collapsed state Refresh(); }
PopulationPanel::PopulationPanel(GG::X w, int object_id) : AccordionPanel(w, GG::Y(ClientUI::Pts()*2)), m_popcenter_id(object_id), m_meter_stats(), m_multi_icon_value_indicator(0), m_multi_meter_status_bar(0) { SetName("PopulationPanel"); TemporaryPtr<const PopCenter> pop = GetPopCenter(); if (!pop) throw std::invalid_argument("Attempted to construct a PopulationPanel with an object id is not a PopCenter"); GG::Connect(m_expand_button->LeftClickedSignal, &PopulationPanel::ExpandCollapseButtonPressed, this); // small meter indicators - for use when panel is collapsed m_meter_stats.push_back( std::make_pair(METER_POPULATION, new StatisticIcon(ClientUI::SpeciesIcon(pop->SpeciesName()), 0, 3, false, GG::X0, GG::Y0, MeterIconSize().x, MeterIconSize().y))); m_meter_stats.push_back( std::make_pair(METER_HAPPINESS, new StatisticIcon(ClientUI::MeterIcon(METER_HAPPINESS), 0, 3, false, GG::X0, GG::Y0, MeterIconSize().x, MeterIconSize().y))); m_meter_stats.push_back( std::make_pair(METER_CONSTRUCTION, new StatisticIcon(ClientUI::MeterIcon(METER_CONSTRUCTION), 0, 3, false, GG::X0, GG::Y0, MeterIconSize().x, MeterIconSize().y))); // meter and production indicators std::vector<std::pair<MeterType, MeterType> > meters; for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { AttachChild(it->second); meters.push_back(std::make_pair(it->first, AssociatedMeterType(it->first))); } // attach and show meter bars and large resource indicators m_multi_icon_value_indicator = new MultiIconValueIndicator(Width() - 2*EDGE_PAD, m_popcenter_id, meters); m_multi_meter_status_bar = new MultiMeterStatusBar(Width() - 2*EDGE_PAD, m_popcenter_id, meters); m_meter_stats[0].second->InstallEventFilter(this); // determine if this panel has been created yet. std::map<int, bool>::iterator it = s_expanded_map.find(m_popcenter_id); if (it == s_expanded_map.end()) s_expanded_map[m_popcenter_id] = false; // if not, default to collapsed state Refresh(); }
void ResourcePanel::CompleteConstruction() { AccordionPanel::CompleteConstruction(); SetName("ResourcePanel"); auto res = GetResCenter(); if (!res) throw std::invalid_argument("Attempted to construct a ResourcePanel with an UniverseObject that is not a ResourceCenter"); m_expand_button->LeftClickedSignal.connect( boost::bind(&ResourcePanel::ExpandCollapseButtonPressed, this)); const auto obj = GetUniverseObject(m_rescenter_id); if (!obj) { ErrorLogger() << "Invalid object id " << m_rescenter_id; return; } // meter and production indicators std::vector<std::pair<MeterType, MeterType>> meters; // small meter indicators - for use when panel is collapsed for (MeterType meter : {METER_INDUSTRY, METER_RESEARCH, METER_SUPPLY, METER_STOCKPILE}) { auto stat = GG::Wnd::Create<StatisticIcon>( ClientUI::MeterIcon(meter), obj->InitialMeterValue(meter), 3, false, MeterIconSize().x, MeterIconSize().y); stat->InstallEventFilter(shared_from_this()); AttachChild(stat); m_meter_stats.push_back({meter, stat}); meters.push_back({meter, AssociatedMeterType(meter)}); } // attach and show meter bars and large resource indicators m_multi_meter_status_bar = GG::Wnd::Create<MultiMeterStatusBar>(Width() - 2*EDGE_PAD, m_rescenter_id, meters); m_multi_icon_value_indicator = GG::Wnd::Create<MultiIconValueIndicator>(Width() - 2*EDGE_PAD, m_rescenter_id, meters); // determine if this panel has been created yet. auto it = s_expanded_map.find(m_rescenter_id); if (it == s_expanded_map.end()) s_expanded_map[m_rescenter_id] = false; // if not, default to collapsed state Refresh(); }
ResourcePanel::ResourcePanel(GG::X w, int object_id) : AccordionPanel(w), m_rescenter_id(object_id), m_meter_stats(), m_multi_icon_value_indicator(0), m_multi_meter_status_bar(0) { SetName("ResourcePanel"); TemporaryPtr<const ResourceCenter> res = GetResCenter(); if (!res) throw std::invalid_argument("Attempted to construct a ResourcePanel with an UniverseObject that is not a ResourceCenter"); SetChildClippingMode(ClipToClient); GG::Connect(m_expand_button->LeftClickedSignal, &ResourcePanel::ExpandCollapseButtonPressed, this); // small meter indicators - for use when panel is collapsed m_meter_stats.push_back(std::make_pair(METER_INDUSTRY, new StatisticIcon(ClientUI::MeterIcon(METER_INDUSTRY), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_RESEARCH, new StatisticIcon(ClientUI::MeterIcon(METER_RESEARCH), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_CONSTRUCTION, new StatisticIcon(ClientUI::MeterIcon(METER_CONSTRUCTION), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_TRADE, new StatisticIcon(ClientUI::MeterIcon(METER_TRADE), 0, 3, false))); // meter and production indicators std::vector<std::pair<MeterType, MeterType> > meters; for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { AttachChild(it->second); meters.push_back(std::make_pair(it->first, AssociatedMeterType(it->first))); } // attach and show meter bars and large resource indicators m_multi_meter_status_bar = new MultiMeterStatusBar(Width() - 2*EDGE_PAD, m_rescenter_id, meters); m_multi_icon_value_indicator = new MultiIconValueIndicator(Width() - 2*EDGE_PAD, m_rescenter_id, meters); // determine if this panel has been created yet. std::map<int, bool>::iterator it = s_expanded_map.find(m_rescenter_id); if (it == s_expanded_map.end()) s_expanded_map[m_rescenter_id] = false; // if not, default to collapsed state Refresh(); }
MilitaryPanel::MilitaryPanel(GG::X w, int planet_id) : AccordionPanel(w, GG::Y(ClientUI::Pts()*2)), m_planet_id(planet_id), m_meter_stats(), m_multi_icon_value_indicator(0), m_multi_meter_status_bar(0) { SetName("MilitaryPanel"); TemporaryPtr<const Planet> planet = GetPlanet(); if (!planet) throw std::invalid_argument("Attempted to construct a MilitaryPanel with an object id is not a Planet"); GG::Connect(m_expand_button->LeftClickedSignal, &MilitaryPanel::ExpandCollapseButtonPressed, this); // small meter indicators - for use when panel is collapsed m_meter_stats.push_back(std::make_pair(METER_SHIELD, new StatisticIcon(ClientUI::MeterIcon(METER_SHIELD), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_DEFENSE, new StatisticIcon(ClientUI::MeterIcon(METER_DEFENSE), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_TROOPS, new StatisticIcon(ClientUI::MeterIcon(METER_TROOPS), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_DETECTION, new StatisticIcon(ClientUI::MeterIcon(METER_DETECTION), 0, 3, false))); m_meter_stats.push_back(std::make_pair(METER_STEALTH, new StatisticIcon(ClientUI::MeterIcon(METER_STEALTH), 0, 3, false))); // meter and production indicators std::vector<std::pair<MeterType, MeterType> > meters; for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { AttachChild(it->second); meters.push_back(std::make_pair(it->first, AssociatedMeterType(it->first))); } // attach and show meter bars and large resource indicators m_multi_meter_status_bar = new MultiMeterStatusBar(Width() - 2*EDGE_PAD, m_planet_id, meters); m_multi_icon_value_indicator = new MultiIconValueIndicator(Width() - 2*EDGE_PAD, m_planet_id, meters); // determine if this panel has been created yet. std::map<int, bool>::iterator it = s_expanded_map.find(m_planet_id); if (it == s_expanded_map.end()) s_expanded_map[m_planet_id] = false; // if not, default to collapsed state Refresh(); }
void ResourcePanel::Update() { // remove any old browse wnds for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { it->second->ClearBrowseInfoWnd(); m_multi_icon_value_indicator->ClearToolTip(it->first); } TemporaryPtr<const UniverseObject> obj = GetUniverseObject(m_rescenter_id); if (!obj) { ErrorLogger() << "BuildingPanel::Update couldn't get object with id " << m_rescenter_id; return; } // meter bar displays resource stats m_multi_meter_status_bar->Update(); m_multi_icon_value_indicator->Update(); // tooltips boost::shared_ptr<GG::BrowseInfoWnd> browse_wnd; for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { it->second->SetValue(obj->InitialMeterValue(it->first)); browse_wnd = boost::shared_ptr<GG::BrowseInfoWnd>(new MeterBrowseWnd(m_rescenter_id, it->first, AssociatedMeterType(it->first))); it->second->SetBrowseInfoWnd(browse_wnd); m_multi_icon_value_indicator->SetToolTip(it->first, browse_wnd); } std::sort(m_meter_stats.begin(), m_meter_stats.end(), sortByMeterValue); }
void ResourcePanel::Update() { // remove any old browse wnds for (auto& meter_stat : m_meter_stats) { meter_stat.second->ClearBrowseInfoWnd(); m_multi_icon_value_indicator->ClearToolTip(meter_stat.first); } auto obj = GetUniverseObject(m_rescenter_id); if (!obj) { ErrorLogger() << "BuildingPanel::Update couldn't get object with id " << m_rescenter_id; return; } // meter bar displays resource stats m_multi_meter_status_bar->Update(); m_multi_icon_value_indicator->Update(); // tooltips for (auto& meter_stat : m_meter_stats) { meter_stat.second->SetValue(obj->InitialMeterValue(meter_stat.first)); auto browse_wnd = GG::Wnd::Create<MeterBrowseWnd>(m_rescenter_id, meter_stat.first, AssociatedMeterType(meter_stat.first)); meter_stat.second->SetBrowseInfoWnd(browse_wnd); m_multi_icon_value_indicator->SetToolTip(meter_stat.first, browse_wnd); } std::sort(m_meter_stats.begin(), m_meter_stats.end(), SortByMeterValue); }
void PopulationPanel::Update() { // remove any old browse wnds for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { it->second->ClearBrowseInfoWnd(); m_multi_icon_value_indicator->ClearToolTip(it->first); } TemporaryPtr<const PopCenter> pop = GetPopCenter(); if (!pop) { ErrorLogger() << "PopulationPanel::Update couldn't get PopCenter or couldn't get UniverseObject"; return; } // meter bar displays population stats m_multi_meter_status_bar->Update(); m_multi_icon_value_indicator->Update(); // tooltips boost::shared_ptr<GG::BrowseInfoWnd> browse_wnd; for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { it->second->SetValue(pop->InitialMeterValue(it->first)); browse_wnd = boost::shared_ptr<GG::BrowseInfoWnd>(new MeterBrowseWnd(m_popcenter_id, it->first, AssociatedMeterType(it->first))); it->second->SetBrowseInfoWnd(browse_wnd); m_multi_icon_value_indicator->SetToolTip(it->first, browse_wnd); } }
void PopulationPanel::Update() { // remove any old browse wnds for (std::pair<MeterType, StatisticIcon*>& meter_stat : m_meter_stats) { meter_stat.second->ClearBrowseInfoWnd(); m_multi_icon_value_indicator->ClearToolTip(meter_stat.first); } std::shared_ptr<const PopCenter> pop = GetPopCenter(); if (!pop) { ErrorLogger() << "PopulationPanel::Update couldn't get PopCenter or couldn't get UniverseObject"; return; } // meter bar displays population stats m_multi_meter_status_bar->Update(); m_multi_icon_value_indicator->Update(); // tooltips std::shared_ptr<GG::BrowseInfoWnd> browse_wnd; for (std::pair<MeterType, StatisticIcon*>& meter_stat : m_meter_stats) { meter_stat.second->SetValue(pop->InitialMeterValue(meter_stat.first)); browse_wnd = std::make_shared<MeterBrowseWnd>(m_popcenter_id, meter_stat.first, AssociatedMeterType(meter_stat.first)); meter_stat.second->SetBrowseInfoWnd(browse_wnd); m_multi_icon_value_indicator->SetToolTip(meter_stat.first, browse_wnd); } }
void MilitaryPanel::Update() { TemporaryPtr<const UniverseObject> obj = GetUniverseObject(m_planet_id); if (!obj) { ErrorLogger() << "MilitaryPanel::Update coudln't get object with id " << m_planet_id; return; } // meter bar displays military stats m_multi_meter_status_bar->Update(); m_multi_icon_value_indicator->Update(); // tooltips boost::shared_ptr<GG::BrowseInfoWnd> browse_wnd; for (std::vector<std::pair<MeterType, StatisticIcon*> >::iterator it = m_meter_stats.begin(); it != m_meter_stats.end(); ++it) { it->second->SetValue(obj->InitialMeterValue(it->first)); browse_wnd = boost::shared_ptr<GG::BrowseInfoWnd>(new MeterBrowseWnd(m_planet_id, it->first, AssociatedMeterType(it->first))); it->second->SetBrowseInfoWnd(browse_wnd); m_multi_icon_value_indicator->SetToolTip(it->first, browse_wnd); } }
void PopulationPanel::Update() { // remove any old browse wnds for (auto& meter_stat : m_meter_stats) { meter_stat.second->ClearBrowseInfoWnd(); m_multi_icon_value_indicator->ClearToolTip(meter_stat.first); } auto pop = GetPopCenter(); if (!pop) { ErrorLogger() << "PopulationPanel::Update couldn't get PopCenter or couldn't get UniverseObject"; return; } // meter bar displays population stats m_multi_meter_status_bar->Update(); m_multi_icon_value_indicator->Update(); // tooltips for (auto& meter_stat : m_meter_stats) { meter_stat.second->SetValue(pop->InitialMeterValue(meter_stat.first)); auto browse_wnd = GG::Wnd::Create<MeterBrowseWnd>(m_popcenter_id, meter_stat.first, AssociatedMeterType(meter_stat.first)); meter_stat.second->SetBrowseInfoWnd(browse_wnd); m_multi_icon_value_indicator->SetToolTip(meter_stat.first, browse_wnd); } }