boost::shared_ptr<GG::Texture> FleetSizeIcon(unsigned int fleet_size, FleetButton::SizeType size_type) { if (fleet_size < 1u) fleet_size = 1u; // because there's no zero-ship icon, and the one-ship icon is (as of this writing) blank, so is fitting for zero ships if (size_type == FleetButton::FLEET_BUTTON_NONE) return boost::shared_ptr<GG::Texture>(); if (size_type == FleetButton::FLEET_BUTTON_TINY) { if (fleet_size > 1u) return ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "fleet" / "tiny-fleet-multi.png", false); else return ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "fleet" / "tiny-fleet.png", false); } std::string size_prefix = FleetIconSizePrefix(size_type); if (size_prefix.empty()) return boost::shared_ptr<GG::Texture>(); boost::shared_ptr<GG::Texture> texture_temp = ClientUI::GetClientUI()->GetModuloTexture( ClientUI::ArtDir() / "icons" / "fleet", (size_prefix + "tail-"), FleetSizeIconNumber(fleet_size), false); glBindTexture(GL_TEXTURE_2D, texture_temp->OpenGLId()); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glBindTexture(GL_TEXTURE_2D, 0); return texture_temp; }
std::vector<boost::shared_ptr<GG::Texture> > FleetHeadIcons(const std::vector< TemporaryPtr<const Fleet> >& fleets, FleetButton::SizeType size_type) { if (size_type == FleetButton::FLEET_BUTTON_NONE || size_type == FleetButton::FLEET_BUTTON_TINY) return std::vector<boost::shared_ptr<GG::Texture> >(); // get file name prefix for appropriate size of icon std::string size_prefix = FleetIconSizePrefix(size_type); if (size_prefix.empty()) return std::vector<boost::shared_ptr<GG::Texture> >(); // the set of fleets is treated like a fleet that contains all the ships bool hasColonyShips = false; bool hasOutpostShips = false; bool hasTroopShips = false; bool hasMonsters = false; bool hasArmedShips = false; for (std::vector< TemporaryPtr<const Fleet> >::const_iterator fleet_it = fleets.begin(); fleet_it != fleets.end(); ++fleet_it) { const TemporaryPtr<const Fleet> fleet = *fleet_it; if (!fleet) continue; hasColonyShips = hasColonyShips || fleet->HasColonyShips(); hasOutpostShips = hasOutpostShips || fleet->HasOutpostShips(); hasTroopShips = hasTroopShips || fleet->HasTroopShips(); hasMonsters = hasMonsters || fleet->HasMonsters(); hasArmedShips = hasArmedShips || fleet->HasArmedShips(); } // get file name main part depending on type of fleet // symbol type prioritized by the ship type arbitrarily deemed "most important" std::vector<std::string> main_filenames; if (hasMonsters) { if (hasArmedShips) { main_filenames.push_back("head-monster.png"); } else { main_filenames.push_back("head-monster-harmless.png"); } } else { if (hasArmedShips) { main_filenames.push_back("head-warship.png"); } if (hasColonyShips) { main_filenames.push_back("head-colony.png"); } if (hasOutpostShips) { main_filenames.push_back("head-outpost.png"); } if (hasTroopShips) { main_filenames.push_back("head-lander.png"); } } if (main_filenames.empty()) { main_filenames.push_back("head-scout.png"); } std::vector<boost::shared_ptr<GG::Texture> > result; for (std::vector<std::string>::const_iterator it = main_filenames.begin(); it != main_filenames.end(); ++it) { result.push_back(ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "fleet" / (size_prefix + *it), false)); } return result; }
boost::shared_ptr<GG::Texture> FleetSizeIcon(unsigned int fleet_size, FleetButton::SizeType size_type) { if (fleet_size < 1u) fleet_size = 1u; // because there's no zero-ship icon, and the one-ship icon is (as of this writing) blank, so is fitting for zero ships if (size_type == FleetButton::FLEET_BUTTON_NONE) return boost::shared_ptr<GG::Texture>(); if (size_type == FleetButton::FLEET_BUTTON_TINY) { if (fleet_size > 1u) return ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "fleet" / "tiny-fleet-multi.png", false); else return ClientUI::GetTexture(ClientUI::ArtDir() / "icons" / "fleet" / "tiny-fleet.png", false); } std::string size_prefix = FleetIconSizePrefix(size_type); if (size_prefix.empty()) return boost::shared_ptr<GG::Texture>(); return ClientUI::GetClientUI()->GetModuloTexture(ClientUI::ArtDir() / "icons" / "fleet", (size_prefix + "tail-"), FleetSizeIconNumber(fleet_size), false); }