void SectorView::InitObject() { SetTransparency(true); m_lineVerts.Reset(new Graphics::VertexArray(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_POSITION, 500)); Gui::Screen::PushFont("OverlayFont"); m_clickableLabels = new Gui::LabelSet(); m_clickableLabels->SetLabelColor(Color(.7f,.7f,.7f,0.75f)); Add(m_clickableLabels, 0, 0); Gui::Screen::PopFont(); m_sectorLabel = new Gui::Label(""); Add(m_sectorLabel, 2, Gui::Screen::GetHeight()-Gui::Screen::GetFontHeight()*2-66); m_distanceLabel = new Gui::Label(""); Add(m_distanceLabel, 2, Gui::Screen::GetHeight()-Gui::Screen::GetFontHeight()-66); m_zoomInButton = new Gui::ImageButton("icons/zoom_in.png"); m_zoomInButton->SetToolTip(Lang::ZOOM_IN); m_zoomInButton->SetRenderDimensions(30, 22); Add(m_zoomInButton, 700, 5); m_zoomLevelLabel = (new Gui::Label(""))->Color(0.27f, 0.86f, 0.92f); Add(m_zoomLevelLabel, 640, 5); m_zoomOutButton = new Gui::ImageButton("icons/zoom_out.png"); m_zoomOutButton->SetToolTip(Lang::ZOOM_OUT); m_zoomOutButton->SetRenderDimensions(30, 22); Add(m_zoomOutButton, 732, 5); Add(new Gui::Label(Lang::SEARCH), 650, 500); m_searchBox = new Gui::TextEntry(); m_searchBox->onKeyPress.connect(sigc::mem_fun(this, &SectorView::OnSearchBoxKeyPress)); Add(m_searchBox, 700, 500); m_disk.Reset(new Graphics::Drawables::Disk(Pi::renderer, Color::WHITE, 0.2f)); m_infoBox = new Gui::VBox(); m_infoBox->SetTransparency(false); m_infoBox->SetBgColor(0.05f, 0.05f, 0.12f, 0.5f); m_infoBox->SetSpacing(10.0f); Add(m_infoBox, 5, 5); // 1. holds info about current, selected, targeted systems Gui::VBox *locationsBox = new Gui::VBox(); locationsBox->SetSpacing(5.f); // 1.1 current system Gui::VBox *systemBox = new Gui::VBox(); Gui::HBox *hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); Gui::Button *b = new Gui::SolidButton(); b->onClick.connect(sigc::mem_fun(this, &SectorView::GotoCurrentSystem)); hbox->PackEnd(b); hbox->PackEnd((new Gui::Label(Lang::CURRENT_SYSTEM))->Color(1.0f, 1.0f, 1.0f)); systemBox->PackEnd(hbox); hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); m_currentSystemLabels.systemName = (new Gui::Label(""))->Color(1.0f, 1.0f, 0.0f); m_currentSystemLabels.distance = (new Gui::Label(""))->Color(1.0f, 0.0f, 0.0f); hbox->PackEnd(m_currentSystemLabels.systemName); hbox->PackEnd(m_currentSystemLabels.distance); systemBox->PackEnd(hbox); m_currentSystemLabels.starType = (new Gui::Label(""))->Color(1.0f, 0.0f, 1.0f); m_currentSystemLabels.shortDesc = (new Gui::Label(""))->Color(1.0f, 0.0f, 1.0f); systemBox->PackEnd(m_currentSystemLabels.starType); systemBox->PackEnd(m_currentSystemLabels.shortDesc); locationsBox->PackEnd(systemBox); // 1.2 selected system systemBox = new Gui::VBox(); hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); b = new Gui::SolidButton(); b->onClick.connect(sigc::mem_fun(this, &SectorView::GotoSelectedSystem)); hbox->PackEnd(b); hbox->PackEnd((new Gui::Label(Lang::SELECTED_SYSTEM))->Color(1.0f, 1.0f, 1.0f)); systemBox->PackEnd(hbox); hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); m_selectedSystemLabels.systemName = (new Gui::Label(""))->Color(1.0f, 1.0f, 0.0f); m_selectedSystemLabels.distance = (new Gui::Label(""))->Color(1.0f, 0.0f, 0.0f); hbox->PackEnd(m_selectedSystemLabels.systemName); hbox->PackEnd(m_selectedSystemLabels.distance); systemBox->PackEnd(hbox); m_selectedSystemLabels.starType = (new Gui::Label(""))->Color(1.0f, 0.0f, 1.0f); m_selectedSystemLabels.shortDesc = (new Gui::Label(""))->Color(1.0f, 0.0f, 1.0f); systemBox->PackEnd(m_selectedSystemLabels.starType); systemBox->PackEnd(m_selectedSystemLabels.shortDesc); locationsBox->PackEnd(systemBox); // 1.3 targeted system systemBox = new Gui::VBox(); hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); b = new Gui::SolidButton(); b->onClick.connect(sigc::mem_fun(this, &SectorView::GotoHyperspaceTarget)); hbox->PackEnd(b); hbox->PackEnd((new Gui::Label(Lang::HYPERSPACE_TARGET))->Color(1.0f, 1.0f, 1.0f)); m_hyperspaceLockLabel = (new Gui::Label(""))->Color(1.0f, 1.0f, 1.0f); hbox->PackEnd(m_hyperspaceLockLabel); systemBox->PackEnd(hbox); hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); m_targetSystemLabels.systemName = (new Gui::Label(""))->Color(1.0f, 1.0f, 0.0f); m_targetSystemLabels.distance = (new Gui::Label(""))->Color(1.0f, 0.0f, 0.0f); hbox->PackEnd(m_targetSystemLabels.systemName); hbox->PackEnd(m_targetSystemLabels.distance); systemBox->PackEnd(hbox); m_targetSystemLabels.starType = (new Gui::Label(""))->Color(1.0f, 0.0f, 1.0f); m_targetSystemLabels.shortDesc = (new Gui::Label(""))->Color(1.0f, 0.0f, 1.0f); systemBox->PackEnd(m_targetSystemLabels.starType); systemBox->PackEnd(m_targetSystemLabels.shortDesc); locationsBox->PackEnd(systemBox); m_infoBox->PackEnd(locationsBox); // 2. holds options for displaying systems Gui::VBox *filterBox = new Gui::VBox(); // 2.1 Draw vertical lines hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); m_drawSystemLegButton = (new Gui::ToggleButton()); m_drawSystemLegButton->SetPressed(false); // TODO: replace with var hbox->PackEnd(m_drawSystemLegButton); Gui::Label *label = (new Gui::Label(Lang::DRAW_VERTICAL_LINES))->Color(1.0f, 1.0f, 1.0f); hbox->PackEnd(label); filterBox->PackEnd(hbox); // 2.2 Draw planet labels hbox = new Gui::HBox(); hbox->SetSpacing(5.0f); m_drawOutRangeLabelButton = new Gui::ToggleButton(); m_drawOutRangeLabelButton->SetPressed(false); // TODO: replace with var hbox->PackEnd(m_drawOutRangeLabelButton); label = (new Gui::Label(Lang::DRAW_OUT_RANGE_LABELS))->Color(1.0f, 1.0f, 1.0f); hbox->PackEnd(label); filterBox->PackEnd(hbox); m_infoBox->PackEnd(filterBox); m_onMouseButtonDown = Pi::onMouseButtonDown.connect(sigc::mem_fun(this, &SectorView::MouseButtonDown)); UpdateSystemLabels(m_currentSystemLabels, m_current); UpdateSystemLabels(m_selectedSystemLabels, m_selected); UpdateSystemLabels(m_targetSystemLabels, m_hyperspaceTarget); UpdateHyperspaceLockLabel(); m_factionBox = new Gui::VBox(); m_factionBox->SetTransparency(false); m_factionBox->SetBgColor(0.05f, 0.05f, 0.12f, 0.5f); m_factionBox->SetSpacing(5.0f); m_factionBox->HideAll(); Add(m_factionBox, 5, 5); }
StationShipEquipmentForm::StationShipEquipmentForm(FormController *controller) : FaceForm(controller) { m_station = Pi::player->GetDockedWith(); SetTitle(stringf(Lang::SOMEWHERE_SHIP_EQUIPMENT, formatarg("station", m_station->GetLabel()))); Gui::VScrollBar *scroll = new Gui::VScrollBar(); Gui::VScrollPortal *portal = new Gui::VScrollPortal(450); scroll->SetAdjustment(&portal->vscrollAdjust); int NUM_ITEMS = 0; const float YSEP = floor(Gui::Screen::GetFontHeight() * 1.5f); for (int i=Equip::FIRST_SHIPEQUIP; i<=Equip::LAST_SHIPEQUIP; i++) { if (m_station->GetStock(static_cast<Equip::Type>(i))) NUM_ITEMS++; } Gui::VBox *outerbox = new Gui::VBox(); Gui::Fixed *innerbox = new Gui::Fixed(450, NUM_ITEMS*YSEP); innerbox->SetTransparency(true); for (int i=Equip::FIRST_SHIPEQUIP, num=0; i<=Equip::LAST_SHIPEQUIP; i++) { Equip::Type type = static_cast<Equip::Type>(i); int stock = m_station->GetStock(type); if (!stock) continue; Gui::Label *l = new Gui::Label(EquipType::types[i].name); if (EquipType::types[i].description) { l->SetToolTip(EquipType::types[i].description); } innerbox->Add(l,0,num*YSEP); innerbox->Add(new Gui::Label(format_money(m_station->GetPrice(type))), 200, num*YSEP); innerbox->Add(new Gui::Label(format_money(REMOVAL_VALUE_PERCENT * m_station->GetPrice(type) / 100)), 275, num*YSEP); innerbox->Add(new Gui::Label(stringf(Lang::NUMBER_TONNES, formatarg("mass", EquipType::types[i].mass))), 360, num*YSEP); ButtonPair pair; pair.type = type; pair.add = new Gui::SolidButton(); pair.add->onClick.connect(sigc::bind(sigc::mem_fun(this, &StationShipEquipmentForm::FitItem), type)); innerbox->Add(pair.add, 400, num*YSEP); pair.remove = new Gui::SolidButton(); pair.remove->onClick.connect(sigc::bind(sigc::mem_fun(this, &StationShipEquipmentForm::RemoveItem), type)); innerbox->Add(pair.remove, 420, num*YSEP); m_buttons.push_back(pair); num++; } portal->Add(innerbox); Gui::Fixed *heading = new Gui::Fixed(470, Gui::Screen::GetFontHeight()); const float *col = Gui::Theme::Colors::tableHeading; heading->Add((new Gui::Label(Lang::ITEM))->Color(col), 0, 0); heading->Add((new Gui::Label(Lang::PRICE_TO_FIT))->Color(col), 200, 0); heading->Add((new Gui::Label(Lang::PRICE_TO_REMOVE))->Color(col), 275, 0); heading->Add((new Gui::Label(Lang::WT))->Color(col), 360, 0); heading->Add((new Gui::Label(Lang::FIT))->Color(col), 400, 0); heading->Add((new Gui::Label(Lang::REMOVE))->Color(col), 420, 0); outerbox->PackEnd(heading); Gui::HBox *body = new Gui::HBox(); body->PackEnd(portal); body->PackEnd(scroll); outerbox->PackEnd(body); outerbox->SetSpacing(YSEP-Gui::Screen::GetFontHeight()); Add(outerbox, 0, 0); }