void CDisplayInfo::HyperUpdate() { Ui::CWindow* pw; Ui::CEdit* edit; Ui::CButton* button; bool bEnable; pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4)); if ( pw == 0 ) return; edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1)); if ( edit == 0 ) return; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_HOME)); if ( button != 0 ) { bEnable = edit->HyperTest(EVENT_HYPER_HOME); button->SetState(STATE_ENABLE, bEnable); } button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_PREV)); if ( button != 0 ) { bEnable = edit->HyperTest(EVENT_HYPER_PREV); button->SetState(STATE_ENABLE, bEnable); } button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_NEXT)); if ( button != 0 ) { bEnable = edit->HyperTest(EVENT_HYPER_NEXT); button->SetState(STATE_ENABLE, bEnable); } }
void CDisplayText::HideText(bool bHide) { Ui::CWindow* pw; Ui::CGroup* pg; Ui::CLabel* pl; Ui::CButton* pb; int i; m_bHide = bHide; pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW2)); if ( pw == 0 ) return; for ( i=0 ; i<MAXDTLINE ; i++ ) { pg = static_cast<Ui::CGroup*>(pw->SearchControl(EventType(EVENT_DT_GROUP0+i))); if ( pg != 0 ) { pg->SetState(STATE_VISIBLE, !bHide); } pl = static_cast<Ui::CLabel*>(pw->SearchControl(EventType(EVENT_DT_LABEL0+i))); if ( pl != 0 ) { pl->SetState(STATE_VISIBLE, !bHide); } pb = static_cast<CButton*>(pw->SearchControl(EventType(EVENT_DT_VISIT0+i))); if ( pb != 0 ) { pb->SetState(STATE_VISIBLE, !bHide); } } }
void CDisplayInfo::UpdateCopyButton() { Ui::CWindow* pw; Ui::CButton* button; Ui::CEdit* edit; int c1, c2; //? if ( m_index != SATCOM_LOADING ) return; pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4)); if ( pw == 0 ) return; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_COPY)); if ( button == 0 ) return; edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1)); if ( edit == 0 ) return; edit->GetCursor(c1, c2); button->SetState(STATE_ENABLE, c1!=c2); }
void CDisplayInfo::UpdateIndexButton() { Ui::CWindow* pw; Ui::CButton* button; Ui::CGroup* group; Ui::CEdit* edit; Math::Point pos, dim; char* filename; static int table[SATCOM_MAX] = { 0, // SATCOM_HUSTON 1, // SATCOM_SAT -1, // SATCOM_OBJECT 2, // SATCOM_LOADING 3, // SATCOM_PROG 4, // SATCOM_SOLUCE }; pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4)); if ( pw == 0 ) return; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_HUSTON)); if ( button != 0 ) { button->SetState(STATE_CHECK, m_index==SATCOM_HUSTON); filename = m_main->GetDisplayInfoName(SATCOM_HUSTON); button->SetState(STATE_VISIBLE, filename[0]!=0); } button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SAT)); if ( button != 0 ) { button->SetState(STATE_CHECK, m_index==SATCOM_SAT); filename = m_main->GetDisplayInfoName(SATCOM_SAT); button->SetState(STATE_VISIBLE, filename[0]!=0); } //? button = (CButton*)pw->SearchControl(EVENT_SATCOM_OBJECT); //? if ( button != 0 ) //? { //? button->SetState(STATE_CHECK, m_index==SATCOM_OBJECT); //? filename = m_main->GetDisplayInfoName(SATCOM_OBJECT); //? button->SetState(STATE_VISIBLE, filename[0]!=0); //? } button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_LOADING)); if ( button != 0 ) { button->SetState(STATE_CHECK, m_index==SATCOM_LOADING); filename = m_main->GetDisplayInfoName(SATCOM_LOADING); button->SetState(STATE_VISIBLE, filename[0]!=0); } button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_PROG)); if ( button != 0 ) { button->SetState(STATE_CHECK, m_index==SATCOM_PROG); filename = m_main->GetDisplayInfoName(SATCOM_PROG); button->SetState(STATE_VISIBLE, filename[0]!=0); } button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SOLUCE)); if ( button != 0 ) { button->SetState(STATE_CHECK, m_index==SATCOM_SOLUCE); filename = m_main->GetDisplayInfoName(SATCOM_SOLUCE); button->SetState(STATE_VISIBLE, filename[0]!=0 && m_bSoluce); } group = static_cast<Ui::CGroup*>(pw->SearchControl(EVENT_LABEL1)); if ( group != 0 ) { if ( m_index == -1 ) { group->ClearState(STATE_VISIBLE); } else { group->SetState(STATE_VISIBLE); pos.x = (50.0f+10.0f+48.0f-3.0f)/640.0f; pos.y = (30.0f+10.0f+24.0f+10.0f+324.0f-48.0f-1.0f)/480.0f; pos.y -= (48.0f+4.0f)/480.0f*table[m_index]; dim.x = 15.0f/640.0f; dim.y = 48.0f/480.0f; group->SetPos(pos); group->SetDim(dim); } } #if 0 button = (CButton*)pw->SearchControl(EVENT_HYPER_COPY); if ( button != 0 ) { button->SetState(STATE_VISIBLE, m_index==SATCOM_LOADING); } #endif edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1)); if ( edit != 0 ) { //? edit->SetHiliteCap(m_index==SATCOM_LOADING); edit->SetHighlightCap(true); } UpdateCopyButton(); }
void CDisplayInfo::StartDisplayInfo(std::string filename, int index, bool bSoluce) { Gfx::Light light; Math::Point pos, dim; Ui::CWindow* pw; Ui::CEdit* edit; Ui::CButton* button; Ui::CSlider* slider; CMotionToto* toto; m_index = index; m_bSoluce = bSoluce; m_bEditLock = m_main->GetEditLock(); if ( m_bEditLock ) // edition running program? { pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW3)); if ( pw != 0 ) { pw->ClearState(STATE_ENABLE); // CStudio inactive } } m_main->SetEditLock(true, false); m_main->SetEditFull(false); m_bInitPause = m_pause->GetPauseType(); m_pause->SetPause(PAUSE_SATCOM); m_infoCamera = m_camera->GetType(); m_camera->SetType(Gfx::CAM_TYPE_INFO); pos = m_infoActualPos = m_infoFinalPos; dim = m_infoActualDim = m_infoFinalDim; pw = m_interface->CreateWindows(pos, dim, 4, EVENT_WINDOW4); if ( pw == 0 ) return; //? pw->SetClosable(true); //? GetResource(RES_TEXT, RT_DISINFO_TITLE, res); //? pw->SetName(res); //? pw->SetMinDim(Math::Point(0.56f, 0.40f)); //? pw->SetMaximized(m_bInfoMaximized); //? pw->SetMinimized(m_bInfoMinimized); //? m_main->SetEditFull(m_bInfoMaximized); edit = pw->CreateEdit(pos, dim, 0, EVENT_EDIT1); if ( edit == 0 ) return; edit->SetState(STATE_SHADOW); edit->SetMultiFont(true); edit->SetMaxChar(10000); edit->SetFontType(Gfx::FONT_COLOBOT); edit->SetSoluceMode(bSoluce); edit->ReadText(filename.c_str()); edit->HyperHome(filename.c_str()); edit->SetEditCap(false); // just to see! edit->SetHighlightCap(false); edit->SetFocus(true); ViewDisplayInfo(); button = pw->CreateButton(pos, dim, 128+57, EVENT_SATCOM_HUSTON); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 128+58, EVENT_SATCOM_SAT); button->SetState(STATE_SHADOW); //? button = pw->CreateButton(pos, dim, 128+59, EVENT_SATCOM_OBJECT); //? button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 53, EVENT_SATCOM_LOADING); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 128+60, EVENT_SATCOM_PROG); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 20, EVENT_SATCOM_SOLUCE); button->SetState(STATE_SHADOW); pw->CreateGroup(pos, dim, 18, EVENT_LABEL1); // arrow > pw->CreateGroup(pos, dim, 19, EVENT_LABEL2); // symbol SatCom button = pw->CreateButton(pos, dim, 55, EVENT_HYPER_PREV); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 48, EVENT_HYPER_NEXT); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 30, EVENT_HYPER_HOME); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 82, EVENT_HYPER_SIZE1); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 83, EVENT_HYPER_SIZE2); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 90, EVENT_HYPER_SIZE3); button->SetState(STATE_SHADOW); button = pw->CreateButton(pos, dim, 91, EVENT_HYPER_SIZE4); button->SetState(STATE_SHADOW); slider = pw->CreateSlider(pos, dim, 0, EVENT_STUDIO_SIZE); slider->SetState(STATE_SHADOW); slider->SetVisibleValue((m_main->GetFontSize()-9.0f)/15.0f); button = pw->CreateButton(pos, dim, 61, EVENT_HYPER_COPY); button->SetState(STATE_SHADOW); HyperUpdate(); button = pw->CreateButton(pos, dim, -1, EVENT_OBJECT_INFOOK); button->SetState(STATE_SHADOW); button->SetState(STATE_SIMPLY); button->SetState(STATE_DEFAULT); pw->CreateGroup(pos, dim, 21, EVENT_LABEL3); // symbol stand-by AdjustDisplayInfo(m_infoActualPos, m_infoActualDim); UpdateIndexButton(); m_engine->SetDrawWorld(false); // doesn't draw anything in the interface m_engine->SetDrawFront(true); // toto draws on the interface m_particle->SetFrameUpdate(Gfx::SH_WORLD, false); // particles break into world m_toto = SearchToto(); if ( m_toto != 0 ) { m_toto->SetDrawFront(true); toto = static_cast<CMotionToto*>(m_toto->GetMotion()); if ( toto != 0 ) { toto->StartDisplayInfo(); } } light.type = Gfx::LIGHT_DIRECTIONAL; light.ambient = Gfx::Color(0.0f, 0.0f, 0.0f); light.diffuse = Gfx::Color(1.0f, 0.1f, 0.1f); light.direction = Math::Vector(1.0f, 0.0f, 1.0f); m_lightSuppl = m_light->CreateLight(); m_light->SetLight(m_lightSuppl, light); m_light->SetLightExcludeType(m_lightSuppl, Gfx::ENG_OBJTYPE_TERRAIN); }