LoadWizard::LoadWizard(HMODULE module, HWND owner, const xstring& title) : IntrospectBase(DLG_RECORD, module) , Title(title) , SourceInfoDeleg(SourceInfoOp.Info(), *this, &LoadWizard::SourceInfoHandler) { InfoOp = &SourceInfoOp; StartDialog(owner, HWND_DESKTOP); }
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); } }
bool CStudio::EventProcess(const Event &event) { CWindow* pw; CEdit* edit; CSlider* slider; if ( m_dialog != SD_NULL ) // dialogue exists? { return EventDialog(event); } if ( event.type == EVENT_FRAME ) { EventFrame(event); } pw = static_cast< CWindow* >(m_interface->SearchControl(EVENT_WINDOW3)); if ( pw == nullptr ) return false; edit = static_cast<CEdit*>(pw->SearchControl(EVENT_STUDIO_EDIT)); if ( edit == nullptr ) return false; if ( event.type == pw->GetEventTypeClose() ) { Event newEvent = event; newEvent.type = EVENT_STUDIO_OK; m_event->AddEvent(newEvent); } if ( event.type == EVENT_STUDIO_EDIT ) // text modifief? { ColorizeScript(edit); } if ( event.type == EVENT_STUDIO_LIST ) // list clicked? { m_main->StartDisplayInfo(const_cast<char *>(m_helpFilename.c_str()), -1); // TODO change to std::string when RobotMain changes } if ( event.type == EVENT_STUDIO_NEW ) // new? { m_script->New(edit, ""); } if ( event.type == EVENT_STUDIO_OPEN ) // open? { StartDialog(SD_OPEN); } if ( event.type == EVENT_STUDIO_SAVE ) // save? { StartDialog(SD_SAVE); } if ( event.type == EVENT_STUDIO_UNDO ) // undo? { edit->Undo(); } if ( event.type == EVENT_STUDIO_CUT ) // cut? { edit->Cut(); } if ( event.type == EVENT_STUDIO_COPY ) // copy? { edit->Copy(); } if ( event.type == EVENT_STUDIO_PASTE ) // paste? { edit->Paste(); } if ( event.type == EVENT_STUDIO_SIZE ) // size? { slider = static_cast< CSlider* >(pw->SearchControl(EVENT_STUDIO_SIZE)); if ( slider == nullptr ) return false; m_main->SetFontSize(9.0f+slider->GetVisibleValue()*12.0f); ViewEditScript(); } if ( event.type == EVENT_STUDIO_TOOL && // instructions? m_dialog == SD_NULL ) { m_main->StartDisplayInfo(SATCOM_HUSTON, false); } if ( event.type == EVENT_STUDIO_HELP && // help? m_dialog == SD_NULL ) { m_main->StartDisplayInfo(SATCOM_PROG, false); } if ( event.type == EVENT_STUDIO_COMPILE ) // compile? { if ( m_script->GetScript(edit) ) // compile { std::string res; GetResource(RES_TEXT, RT_STUDIO_COMPOK, res); SetInfoText(res, false); } else { std::string error; m_script->GetError(error); SetInfoText(error, false); } } if ( event.type == EVENT_STUDIO_RUN ) // run/stop? { if ( m_script->IsRunning() ) { Event newEvent = event; newEvent.type = EVENT_OBJECT_PROGSTOP; m_event->AddEvent(newEvent); // stop } else { if ( m_script->GetScript(edit) ) // compile { SetInfoText("", false); Event newEvent = event; newEvent.type = EVENT_OBJECT_PROGSTART; m_event->AddEvent(newEvent); // start } else { std::string error; m_script->GetError(error); SetInfoText(error, false); } } } if ( event.type == EVENT_STUDIO_REALTIME ) // real time? { m_bRealTime = !m_bRealTime; m_script->SetStepMode(!m_bRealTime); UpdateFlux(); UpdateButtons(); } if ( event.type == EVENT_STUDIO_STEP ) // step? { m_script->Step(event); } if ( event.type == EVENT_KEY_DOWN ) { if ( event.key.key == m_main->GetInputBinding(INPUT_SLOT_CBOT).primary || event.key.key == m_main->GetInputBinding(INPUT_SLOT_CBOT).secondary ) { if ( m_helpFilename.length() > 0 ) { m_main->StartDisplayInfo(const_cast<char *>(m_helpFilename.c_str()), -1); // TODO change to std::string when RobotMain changes } } } if ( event.type == EVENT_WINDOW3 ) // window is moved? { m_editActualPos = m_editFinalPos = pw->GetPos(); m_editActualDim = m_editFinalDim = pw->GetDim(); m_main->SetWindowPos(m_editActualPos); m_main->SetWindowDim(m_editActualDim); AdjustEditScript(); } if ( event.type == pw->GetEventTypeReduce() ) { if ( m_bEditMinimized ) { m_editFinalPos = m_main->GetWindowPos(); m_editFinalDim = m_main->GetWindowDim(); m_bEditMinimized = false; m_bEditMaximized = false; } else { m_editFinalPos.x = 0.00f; m_editFinalPos.y = -0.44f; m_editFinalDim.x = 1.00f; m_editFinalDim.y = 0.50f; m_bEditMinimized = true; m_bEditMaximized = false; } m_main->SetEditFull(m_bEditMaximized); pw = static_cast< CWindow* >(m_interface->SearchControl(EVENT_WINDOW3)); if ( pw != nullptr ) { pw->SetMaximized(m_bEditMaximized); pw->SetMinimized(m_bEditMinimized); } } if ( event.type == pw->GetEventTypeFull() ) { if ( m_bEditMaximized ) { m_editFinalPos = m_main->GetWindowPos(); m_editFinalDim = m_main->GetWindowDim(); m_bEditMinimized = false; m_bEditMaximized = false; } else { m_editFinalPos.x = 0.00f; m_editFinalPos.y = 0.00f; m_editFinalDim.x = 1.00f; m_editFinalDim.y = 1.00f; m_bEditMinimized = false; m_bEditMaximized = true; } m_main->SetEditFull(m_bEditMaximized); pw = static_cast< CWindow* >(m_interface->SearchControl(EVENT_WINDOW3)); if ( pw != nullptr ) { pw->SetMaximized(m_bEditMaximized); pw->SetMinimized(m_bEditMinimized); } } return true; }
ConfigDialog::ConfigDialog(HWND owner, HMODULE module) : IntrospectBase(DLG_CONFIG, module) , SinkInfoDeleg(SinkInfoOp.Info(), *this, &ConfigDialog::SinkInfoHandler) { InfoOp = &SinkInfoOp; StartDialog(owner, HWND_DESKTOP); }
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); }