void CMainDialog::StartQuestion(const std::string& text, bool warningYes, bool warningNo, bool fireParticles, DialogCallback yes, DialogCallback no) { CWindow* pw; CButton* pb; Math::Point pos, dim, ddim; std::string name; dim.x = 0.7f; dim.y = 0.3f; StartDialog(dim, fireParticles); m_dialogType = DialogType::Question; m_callbackYes = yes; m_callbackNo = no; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW9)); if ( pw == nullptr ) return; pos.x = 0.00f; pos.y = 0.50f; ddim.x = 1.00f; ddim.y = 0.05f; pw->CreateLabel(pos, ddim, -1, EVENT_DIALOG_LABEL, text); pos.x = 0.50f-0.15f-0.02f; pos.y = 0.50f-dim.y/2.0f+0.03f; ddim.x = 0.15f; ddim.y = 0.06f; pb = pw->CreateButton(pos, ddim, -1, EVENT_DIALOG_OK); pb->SetState(STATE_SHADOW); GetResource(RES_TEXT, RT_DIALOG_YES, name); pb->SetName(name); if (warningYes) { pb->SetState(STATE_WARNING); } pos.x = 0.50f+0.02f; pos.y = 0.50f-dim.y/2.0f+0.03f; ddim.x = 0.15f; ddim.y = 0.06f; pb = pw->CreateButton(pos, ddim, -1, EVENT_DIALOG_CANCEL); pb->SetState(STATE_SHADOW); GetResource(RES_TEXT, RT_DIALOG_NO, name); pb->SetName(name); if (warningNo) { pb->SetState(STATE_WARNING); } }
void CMainDialog::StartInformation(const std::string& title, const std::string& text, const std::string& details, bool warning, bool fireParticles, DialogCallback ok) { CWindow* pw; CButton* pb; CLabel* pl; Math::Point pos, dim, ddim; std::string name; dim.x = 0.7f; dim.y = 0.3f; StartDialog(dim, fireParticles); m_dialogType = DialogType::Question; m_callbackYes = ok; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW9)); if ( pw == nullptr ) return; if(!title.empty()) pw->SetName(title); pos.x = 0.00f; pos.y = 0.50f; ddim.x = 1.00f; ddim.y = 0.05f; pl = pw->CreateLabel(pos, ddim, -1, EVENT_DIALOG_LABEL, text); pl->SetFontType(Gfx::FONT_COMMON_BOLD); //TODO: Add \n support in CLabel pos.y -= ddim.y; pl = pw->CreateLabel(pos, ddim, -1, EVENT_DIALOG_LABEL1, details); pl->SetFontSize(10.0f); pos.x = 0.50f-0.075f; pos.y = 0.50f-dim.y/2.0f+0.03f; ddim.x = 0.15f; ddim.y = 0.06f; pb = pw->CreateButton(pos, ddim, -1, EVENT_DIALOG_OK); pb->SetState(STATE_SHADOW); GetResource(RES_TEXT, RT_DIALOG_OK, name); pb->SetName(name); if (warning) { pb->SetState(STATE_WARNING); } }
void CGUIWindow::LoadButton (CButton** button_aux, CXMLTreeNode& pNewNode, const Vect2i& screenResolution, CTextureManager* tm) { //<Button name="play" posx="0" posy="0" height="10" width="10" visible="true" activated="true" // texture_normal="blabla" texture_over="bla" texture_clicked="bla" texture_deactivated="bla" // OnClickedAction="blabla" OnOverAction="blabla" Literal="blabla" widthOffset="" heightOffset=""/> CButton* button; std::string name = pNewNode.GetPszProperty("name", "defaultGuiElement"); float posx = pNewNode.GetFloatProperty("posx", 0.f); float posy = pNewNode.GetFloatProperty("posy", 0.f); float w = pNewNode.GetFloatProperty("width", 50.f); float h = pNewNode.GetFloatProperty("height", 50.f); bool visible = pNewNode.GetBoolProperty("visible", true); bool activated = pNewNode.GetBoolProperty("active", true); std::string texture_normal = pNewNode.GetPszProperty("texture_normal", ""); std::string texture_over = pNewNode.GetPszProperty("texture_over", ""); std::string texture_clicked = pNewNode.GetPszProperty("texture_clicked", ""); std::string texture_deactivated = pNewNode.GetPszProperty("texture_deactivated", ""); std::string OnClickedAction = pNewNode.GetPszProperty("OnClickedAction", ""); std::string OnOverAction = pNewNode.GetPszProperty("OnOverAction", ""); std::string l_literal = pNewNode.GetPszProperty("Literal", ""); float widthOffsetPercent = pNewNode.GetFloatProperty("widthOffset", 0.f); float heightOffsetPercent = pNewNode.GetFloatProperty("heightOffset", 0.f); CTexture* normal = tm->GetTexture(texture_normal); CTexture* over = tm->GetTexture(texture_over); CTexture* clicked = tm->GetTexture(texture_clicked); CTexture* deactivated = tm->GetTexture(texture_deactivated); uint32 widthOffset = (uint32) (screenResolution.x * 0.01f * widthOffsetPercent ); uint32 heightOffset = (uint32) (screenResolution.y * 0.01f * heightOffsetPercent ); button = new CButton(screenResolution.y,screenResolution.x, h, w, Vect2f(posx,posy), l_literal, heightOffset, widthOffset, visible, activated); button->SetName(name); button->SetTextures(normal,over,clicked,deactivated); button->SetOnClickedAction(OnClickedAction); button->SetOnOverAction(OnOverAction); *button_aux = button; }
void CMainDialog::StartPauseMenu() { CWindow* pw; CButton* pb; Math::Point pos, dim; std::string name; StartDialog(Math::Point(0.3f, 0.8f), true); m_dialogType = DialogType::PauseMenu; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW9)); if ( pw == nullptr ) return; pos.x = 0.35f; pos.y = 0.60f; dim.x = 0.30f; dim.y = 0.30f; pw->CreateGroup(pos, dim, 5, EVENT_INTERFACE_GLINTl); // orange corner pos.x = 0.35f; pos.y = 0.10f; dim.x = 0.30f; dim.y = 0.30f; pw->CreateGroup(pos, dim, 4, EVENT_INTERFACE_GLINTr); // blue corner pos.x = 0.40f; dim.x = 0.20f; dim.y = 32.0f/480.0f; pos.y = 0.74f; pb = pw->CreateButton(pos, dim, -1, EVENT_DIALOG_CANCEL); pb->SetState(STATE_SHADOW); GetResource(RES_TEXT, RT_DIALOG_CONTINUE, name); pb->SetName(name); if ( (m_main->GetLevelCategory() == LevelCategory::Missions || // missions ? m_main->GetLevelCategory() == LevelCategory::FreeGame || // free games? m_main->GetLevelCategory() == LevelCategory::CustomLevels ) && // user ? m_main->GetMissionType() != MISSION_CODE_BATTLE ) { pos.y = 0.62f; pb = pw->CreateButton(pos, dim, -1, EVENT_INTERFACE_WRITE); pb->SetState(STATE_SHADOW); if ( m_main->IOIsBusy() ) // current task? { pb->ClearState(STATE_ENABLE); } pos.y = 0.53f; pb = pw->CreateButton(pos, dim, -1, EVENT_INTERFACE_READ); pb->SetState(STATE_SHADOW); if ( !m_main->GetPlayerProfile()->HasAnySavedScene() ) // no file to read? { pb->ClearState(STATE_ENABLE); } pb->SetState(STATE_WARNING); } pos.y = 0.39f; pb = pw->CreateButton(pos, dim, -1, EVENT_INTERFACE_SETUP); pb->SetState(STATE_SHADOW); pos.y = 0.25f; pb = pw->CreateButton(pos, dim, -1, EVENT_INTERFACE_AGAIN); pb->SetState(STATE_SHADOW); pb->SetState(STATE_WARNING); pos.y = 0.16f; pb = pw->CreateButton(pos, dim, -1, EVENT_DIALOG_OK); pb->SetState(STATE_SHADOW); pb->SetState(STATE_WARNING); GetResource(RES_TEXT, RT_DIALOG_ABORT, name); pb->SetName(name); }