void CMainMap::ZoomMap() { CWindow* pw; CMap* pm; CSlider* ps; float zoom; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW1)); if (pw == nullptr) return; pm = static_cast<CMap*>(pw->SearchControl(EVENT_OBJECT_MAP)); if (pm == nullptr) return; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_OBJECT_MAPZOOM)); if (ps == nullptr) return; zoom = ps->GetVisibleValue(); zoom = powf(zoom, 2.0f); zoom = ZOOM_MIN+zoom*(ZOOM_MAX - ZOOM_MIN); pm->SetZoom(zoom); DimMap(); }
void CScreenSetupGame::ChangeSetupButtons() { CWindow* pw; CSlider* ps; CList* pli; float value; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_AUTOSAVE_INTERVAL)); if ( ps != nullptr ) { value = ps->GetVisibleValue(); m_main->SetAutosaveInterval(static_cast<int>(round(value))); } ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_AUTOSAVE_SLOTS)); if ( ps != nullptr ) { value = ps->GetVisibleValue(); m_main->SetAutosaveSlots(static_cast<int>(round(value))); } pli = static_cast<CList*>(pw->SearchControl(EVENT_INTERFACE_LANGUAGE)); if ( pli != nullptr ) { m_settings->SetLanguage(static_cast<Language>(pli->GetSelect()-1)); // TODO: A really ugly way to apply the change immediately m_main->ChangePhase(m_main->GetPhase()); } }
CSlider* CSlider::create() { CSlider* pRet = new CSlider(); if( pRet && pRet->init() ) { pRet->autorelease(); return pRet; } CC_SAFE_DELETE(pRet); return NULL; }
CSlider* CSlider::create(const char* pSlider, const char* pProgress) { CSlider* pRet = new CSlider(); if( pRet && pRet->initWithSlider(pSlider, pProgress) ) { pRet->autorelease(); return pRet; } CC_SAFE_DELETE(pRet); return NULL; }
NS_MAIN_BEGIN void MsgBox::onLoadScene() { SpriteFrameCache::getInstance()->addSpriteFramesWithFile("main/mainui.plist"); TuiManager::getInstance()->parseScene(this,"panel_msgbox",PATH_MAIN); //注册事件 CButton *pBtnClose = (CButton*)getControl(PANEL_MSGBOX, BTN_CLOSE); pBtnClose->setOnClickListener(this,ccw_click_selector(MsgBox::event_btn_close)); CSlider *pSlider = (CSlider*)getControl(PANEL_MSGBOX,SLIDER_TEST); pSlider->setOnValueChangedListener(this,ccw_valuechanged_selector(MsgBox::event_slider_test)); }
void CGUIWindow::LoadSlider (CSlider** slider_aux, CXMLTreeNode& pNewNode, const Vect2i& screenResolution, CTextureManager* tm) { //<Slider name="debug_fps" posx="0" posy="2" height="10" width="10" visible="true" active="true" value="0.5" buttonH="10" buttonW="10" // button_normal="blabla" button_over="bla" button_clicked"bla" button_deactivated="bla" quad="bla" // OnOverAction="" OnClickedAction="" OnChangeValue="" OnSaveValue="blabl" OnLoadValue="" Literal="blabla" widthOffset="" heightOffset=""/> CSlider* slider; 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); float value = pNewNode.GetFloatProperty("value", 0.f); float buttonH = pNewNode.GetFloatProperty("buttonH", 10.f); float buttonW = pNewNode.GetFloatProperty("buttonW", 10.f); std::string button_normal = pNewNode.GetPszProperty("button_normal", ""); std::string button_over = pNewNode.GetPszProperty("button_over", ""); std::string button_clicked = pNewNode.GetPszProperty("button_clicked", ""); std::string button_deactivated = pNewNode.GetPszProperty("button_deactivated", ""); std::string quad = pNewNode.GetPszProperty("quad", ""); std::string OnChangeValue = pNewNode.GetPszProperty("OnChangeValue", ""); std::string OnClickedAction = pNewNode.GetPszProperty("OnClickedAction", ""); std::string OnOverAction = pNewNode.GetPszProperty("OnOverAction", ""); std::string OnSaveValue = pNewNode.GetPszProperty("OnSaveValue", ""); std::string OnLoadValue = pNewNode.GetPszProperty("OnLoadValue", ""); 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(button_normal); CTexture* over = tm->GetTexture(button_over); CTexture* deac = tm->GetTexture(button_deactivated); CTexture* clicked = tm->GetTexture(button_clicked); CTexture* back = tm->GetTexture(quad); uint32 widthOffset = (uint32) (screenResolution.x * 0.01f * widthOffsetPercent ); uint32 heightOffset = (uint32) (screenResolution.y * 0.01f * heightOffsetPercent ); slider = new CSlider( screenResolution.y, screenResolution.x, h, w, Vect2f(posx,posy), buttonW, buttonH, value, l_literal, heightOffset, widthOffset, visible, activated); slider->SetName(name); slider->SetButtonTextures(normal, over, clicked, deac); slider->SetBackGroundTexture(back); slider->SetOnChangeValueAction(OnChangeValue); slider->SetOnClickedAction(OnClickedAction); slider->SetOnOverAction(OnOverAction); slider->SetOnLoadValueAction(OnLoadValue); slider->SetOnSaveValueAction(OnSaveValue); *slider_aux = slider; }
NS_MAIN_BEGIN void MsgBox::onLoadScene() { //setAutoRemoveUnusedTexture(true); TuiManager::getInstance()->parseScene(this,"panel_msgbox",PATH_MAIN); //注册事件 CButton *pBtnClose = (CButton*)getControl(PANEL_MSGBOX,BTN_CLOSE); pBtnClose->setOnClickListener(this,ccw_click_selector(MsgBox::event_btn_close)); CSlider *pSlider = (CSlider*)getControl(PANEL_MSGBOX,SLIDER_TEST); pSlider->setOnValueChangedListener(this,ccw_valuechanged_selector(MsgBox::event_slider_test)); CProgressBar *pProg = (CProgressBar*)this->getControl(PANEL_MSGBOX,PROG_HP); pProg->setShowValueLabel(true); }
void CScreenApperance::ColorPerso() { CWindow* pw; CSlider* ps; Gfx::Color color; PlayerApperance& apperance = m_main->GetPlayerProfile()->GetApperance(); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; color.a = 0.0f; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCRa)); if ( ps != nullptr ) color.r = ps->GetVisibleValue()/255.0f; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCGa)); if ( ps != nullptr ) color.g = ps->GetVisibleValue()/255.0f; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCBa)); if ( ps != nullptr ) color.b = ps->GetVisibleValue()/255.0f; if ( m_apperanceTab == 1 ) apperance.colorCombi = color; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCRb)); if ( ps != nullptr ) color.r = ps->GetVisibleValue()/255.0f; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCGb)); if ( ps != nullptr ) color.g = ps->GetVisibleValue()/255.0f; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCBb)); if ( ps != nullptr ) color.b = ps->GetVisibleValue()/255.0f; if ( m_apperanceTab == 0 ) apperance.colorHair = color; else apperance.colorBand = color; }
void CMainMap::MapEnable(bool bEnable) { CWindow* pw; CMap* pm; CSlider* ps; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW1)); if (pw == nullptr) return; pm = static_cast<CMap*>(pw->SearchControl(EVENT_OBJECT_MAP)); if (pm != nullptr) pm->SetEnable(bEnable); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_OBJECT_MAPZOOM)); if (ps != nullptr) ps->SetState(STATE_ENABLE, bEnable); }
CSlider* TuiManager::createSlider(float tag,int max,int min,int cur, const char* bg, const char* progress, const char* thumb, float x, float y, float rotation, int isUseFrame){ CSlider *pSlider = NULL; if (isUseFrame){ pSlider = CSlider::createSpriteFrame(thumb, progress); pSlider->setBackgroundSpriteFrameName(bg); }else{ pSlider = CSlider::create(thumb,progress); pSlider->setBackgroundImage(bg); } pSlider->setRotation(rotation); pSlider->setPosition(Vec2(x,-y)); pSlider->setMinValue(min); pSlider->setMaxValue(max); pSlider->setValue(cur); pSlider->setTag(tag); return pSlider; }
void CMainMap::ShowMap(bool bShow) { CWindow* pw; CMap* pm; CSlider* ps; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW1)); if (pw == nullptr) return; if (bShow) { DimMap(); } else { pm = static_cast<CMap*>(pw->SearchControl(EVENT_OBJECT_MAP)); if (pm != nullptr) pm->ClearState(STATE_VISIBLE); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_OBJECT_MAPZOOM)); if (ps != nullptr) ps->ClearState(STATE_VISIBLE); } }
void CScreenSetupSound::ChangeSetupButtons() { CWindow* pw; CSlider* ps; float value; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_VOLSOUND)); if ( ps != nullptr ) { value = ps->GetVisibleValue(); m_sound->SetAudioVolume(static_cast<int>(value)); } ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_VOLMUSIC)); if ( ps != nullptr ) { value = ps->GetVisibleValue(); m_sound->SetMusicVolume(static_cast<int>(value)); } }
void CScreenSetupSound::CreateInterface() { CWindow* pw; CLabel* pl; CSlider* psl; CButton* pb; Math::Point pos, ddim; std::string name; CScreenSetup::CreateInterface(); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; pos.x = ox+sx*3; pos.y = 0.55f; ddim.x = dim.x*4.0f; ddim.y = 18.0f/480.0f; psl = pw->CreateSlider(pos, ddim, 0, EVENT_INTERFACE_VOLSOUND); psl->SetState(STATE_SHADOW); psl->SetLimit(0.0f, MAXVOLUME); psl->SetArrowStep(1.0f); pos.y += ddim.y; GetResource(RES_EVENT, EVENT_INTERFACE_VOLSOUND, name); pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL1, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.x = ox+sx*3; pos.y = 0.40f; ddim.x = dim.x*4.0f; ddim.y = 18.0f/480.0f; psl = pw->CreateSlider(pos, ddim, 0, EVENT_INTERFACE_VOLMUSIC); psl->SetState(STATE_SHADOW); psl->SetLimit(0.0f, MAXVOLUME); psl->SetArrowStep(1.0f); pos.y += ddim.y; GetResource(RES_EVENT, EVENT_INTERFACE_VOLMUSIC, name); pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL2, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); ddim.x = dim.x*3; ddim.y = dim.y*1; pos.x = ox+sx*10; pos.y = oy+sy*2; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_SILENT); pb->SetState(STATE_SHADOW); pos.x += ddim.x; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_NOISY); pb->SetState(STATE_SHADOW); UpdateSetupButtons(); }
void CMainMap::DimMap() { CWindow* pw; CMap* pm; CSlider* ps; Math::Point pos, dim; float value; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW1)); if (pw == nullptr) return; pm = static_cast<CMap*>(pw->SearchControl(EVENT_OBJECT_MAP)); if (pm == nullptr) return; pm->SetState(STATE_VISIBLE, (m_mapMode != 0)); dim.x = 100.0f/640.0f; dim.y = 100.0f/480.0f; pos.x = 540.0f/640.0f; pos.y = 0.0f/480.0f; pm->SetPos(pos); pm->SetDim(dim); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_OBJECT_MAPZOOM)); if (ps != nullptr) { ps->SetState(STATE_VISIBLE, (m_mapMode != 0)); dim.x = SCROLL_WIDTH; dim.y = 66.0f / 480.0f; pos.x = 523.0f / 640.0f; pos.y = 3.0f / 480.0f; ps->SetPos(pos); ps->SetDim(dim); value = pm->GetZoom(); value = (value-ZOOM_MIN) / (ZOOM_MAX-ZOOM_MIN); value = powf(value, 0.5f); ps->SetVisibleValue(value); ps->SetArrowStep(0.2f); } }
void CScreenSetupGame::UpdateSetupButtons() { CWindow* pw; CCheck* pc; CSlider* ps; CList* pli; pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_TOOLTIP)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_settings->GetTooltips()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_GLINT)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_settings->GetInterfaceGlint()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_RAIN)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_settings->GetInterfaceRain()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_BGPAUSE)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_settings->GetFocusLostPause()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_EDITMODE)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_engine->GetEditIndentMode()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_EDITVALUE)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_engine->GetEditIndentValue()>2); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_SOLUCE4)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_settings->GetSoluce4()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_MOVIES)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_settings->GetMovies()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_SCROLL)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_camera->GetOldCameraScroll()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_INVERTX)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_camera->GetCameraInvertX()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_INVERTY)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_camera->GetCameraInvertY()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_EFFECT)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_camera->GetEffect()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_BLOOD)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_camera->GetBlood()); } pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_AUTOSAVE_ENABLE)); if ( pc != nullptr ) { pc->SetState(STATE_CHECK, m_main->GetAutosave()); } ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_AUTOSAVE_INTERVAL)); if ( ps != nullptr ) { ps->SetState(STATE_ENABLE, m_main->GetAutosave()); ps->SetVisibleValue(m_main->GetAutosaveInterval()); } ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_AUTOSAVE_SLOTS)); if ( ps != nullptr ) { ps->SetState(STATE_ENABLE, m_main->GetAutosave()); ps->SetVisibleValue(m_main->GetAutosaveSlots()); } pli = static_cast<CList*>(pw->SearchControl(EVENT_INTERFACE_LANGUAGE)); if ( pli != nullptr ) { pli->SetSelect(1+m_settings->GetLanguage()); } }
void SliderDialog::createNewSlider() { // allow the user to create more than one slider std::vector<const CCopasiObject*> objects = CCopasiSelectionDialog::getObjectVector(this, CQSimpleSelectionTree::InitialTime | CQSimpleSelectionTree::Parameters); std::vector<CSlider*>* pVector = getCSlidersForCurrentFolderId(); std::vector<const CCopasiObject*>::const_iterator it = objects.begin(), endit = objects.end(); bool yesToAll = false; bool noToAll = false; // create the sliders for all the selected objects // first we need the task object because we need it later to associate the // later with the correct task CCopasiObject* object = (CCopasiObject*)getTaskForFolderId(mCurrentFolderId); if (!object) return; CCopasiObject* pTmpObject = NULL; while (it != endit) { // create a new slider assert((*it) != NULL); pTmpObject = const_cast<CCopasiObject*>(determineCorrectObjectForSlider(*it)); CSlider* pCSlider = new CSlider("slider", (*CCopasiRootContainer::getDatamodelList())[0]); if (pCSlider) { pCSlider->setSliderObject(pTmpObject); pCSlider->setAssociatedEntityKey(object->getKey()); // check if a slider for that object already exists and if so, prompt // the user what to do CSlider* pEquivalentSlider = equivalentSliderExists(pCSlider); if (pEquivalentSlider != NULL) { CopasiSlider* pCopasiSlider = NULL; // if the user has specified yesToAll, we reset the ranges of all // duplicate sliders if (yesToAll) { pEquivalentSlider->resetRange(); // update the slider widget pCopasiSlider = findCopasiSliderForCSlider(pEquivalentSlider); assert(pCopasiSlider != NULL); if (pCopasiSlider != NULL) { pCopasiSlider->updateSliderData(); } } // if the user has not specified noToAll, we need to prompt else if (!noToAll) { QMessageBox::StandardButton result = CQMessageBox::information(NULL, "Slider Exists", "A slider for this object already exists.\n\nDo you want to reset the range of the slider?", QMessageBox::Yes | QMessageBox::No | QMessageBox::YesToAll | QMessageBox::NoToAll, QMessageBox::No); // check the answer and maybe set some flags switch (result) { case QMessageBox::YesToAll: // set the flag yesToAll = true; case QMessageBox::Yes: // reset the range pEquivalentSlider->resetRange(); // update the slider widget pCopasiSlider = findCopasiSliderForCSlider(pEquivalentSlider); assert(pCopasiSlider != NULL); if (pCopasiSlider != NULL) { pCopasiSlider->updateSliderData(); } break; case QMessageBox::NoToAll: // set the flag noToAll = true; break; case QMessageBox::No: // do nothing else break; default: // do nothing break; } } delete pCSlider; } else { std::vector<CCopasiContainer*> listOfContainers; assert(CCopasiRootContainer::getDatamodelList()->size() > 0); listOfContainers.push_back((*CCopasiRootContainer::getDatamodelList())[0]->getModel()); pCSlider->compile(listOfContainers); pCSlider->resetRange(); addSlider(pCSlider); mChanged = true; } } ++it; } delete pVector; }
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; }
CSlider* TuiManager::createSlider(float tag, const char* bg,const char* progress,const char* thumb,float x,float y,float rotation){ CSlider *pSlider = NULL; if(m_isUseSpriteFrame){ pSlider = CSlider::create(); pSlider->setBackgroundSpriteFrameName(bg); pSlider->setProgressSpriteFrameName(progress); pSlider->setSliderSpriteFrameName(thumb); }else{ pSlider = CSlider::create(thumb,progress); pSlider->setBackgroundImage(bg); } pSlider->setRotation(rotation); pSlider->setPosition(Point(x,-y)); pSlider->setMinValue(0); pSlider->setMaxValue(100); pSlider->setValue(15); pSlider->setTag(tag); return pSlider; }
void CDisplayInfo::AdjustDisplayInfo(Math::Point wpos, Math::Point wdim) { CWindow* pw; CEdit* edit; CButton* button; CSlider* slider; CGroup* group; Math::Point pos, dim; wpos.x = 50.0f / 640.0f; wpos.y = 30.0f / 480.0f; wdim.x = 540.0f / 640.0f; wdim.y = 420.0f / 480.0f; pw = static_cast<Ui::CWindow*>(m_interface->SearchControl(EVENT_WINDOW4)); if ( pw != 0 ) { pw->SetPos(wpos); pw->SetDim(wdim); wdim = pw->GetDim(); } pos.x = (50.0f + 10.0f) / 640.0f; pos.y = (30.0f + 10.0f + 24.0f + 10.0f + 324.0f - 48.0f) / 480.0f; dim.x = 48.0f / 640.0f; dim.y = 48.0f / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_HUSTON)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.y -= (48.0f + 4.0f) / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SAT)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } //? pos.y -= (48.0f+4.0f)/480.0f; //? button = (CButton*)pw->SearchControl(EVENT_SATCOM_OBJECT); //? if ( button != 0 ) //? { //? button->SetPos(pos); //? button->SetDim(dim); //? } pos.y -= (48.0f + 4.0f) / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_LOADING)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.y -= (48.0f + 4.0f) / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_PROG)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.y -= (48.0f + 4.0f) / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_SATCOM_SOLUCE)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x = (50.0f + 10.0f + 5.0f) / 640.0f; pos.y = (30.0f + 10.0f + 4.0f) / 480.0f; dim.x = (48.0f - 10.0f) / 640.0f; dim.y = 24.0f / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_OBJECT_INFOOK)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x = (50.0f + 10.0f + 48.0f + 10.0f) / 640.0f; pos.y = (30.0f + 10.0f) / 480.0f; dim.x = 462.0f / 640.0f; dim.y = 358.0f / 480.0f; edit = static_cast<Ui::CEdit*>(pw->SearchControl(EVENT_EDIT1)); if ( edit != 0 ) { edit->SetPos(pos); edit->SetDim(dim); } pos.x = (50.0f + 10.0f + 48.0f + 10.0f) / 640.0f; pos.y = (30.0f + 10.0f + 358.0f + 10.0f) / 480.0f; dim.x = 32.0f / 640.0f; dim.y = 32.0f / 480.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_PREV)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 35.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_NEXT)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 35.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_HOME)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 50.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE1)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 35.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE2)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 35.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE3)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 35.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_SIZE4)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x += 35.0f / 640.0f; dim.x = 18.0f / 640.0f; slider = static_cast<Ui::CSlider*>(pw->SearchControl(EVENT_STUDIO_SIZE)); if ( slider != 0 ) { slider->SetPos(pos); slider->SetDim(dim); } pos.x += 50.0f / 640.0f; dim.x = 32.0f / 640.0f; button = static_cast<Ui::CButton*>(pw->SearchControl(EVENT_HYPER_COPY)); if ( button != 0 ) { button->SetPos(pos); button->SetDim(dim); } pos.x = (50.0f + 10.0f) / 640.0f; pos.y = (30.0f + 10.0f + 24.0f + 10.0f + 324.0f + 6.0f) / 480.0f; dim.x = 48.0f / 640.0f; dim.y = 40.0f / 480.0f; group = static_cast<Ui::CGroup*>(pw->SearchControl(EVENT_LABEL2)); // symbol SatCom if ( group != 0 ) { group->SetPos(pos); group->SetDim(dim); } pos.x = (50.0f + 10.0f + 14.0f) / 640.0f; pos.y = (30.0f + 10.0f + 6.0f) / 480.0f; dim.x = 20.0f / 640.0f; dim.y = 20.0f / 480.0f; group = static_cast<Ui::CGroup*>(pw->SearchControl(EVENT_LABEL3)); // symbol stand-by if ( group != 0 ) { group->SetPos(pos); group->SetDim(dim); } }
void CPopupMenu::Draw (HSURFACE hScreen) { // would a flashing cursor be visible? LTBOOL bFlashingVisible = fmod (m_pClientDE->GetTime(), CURSORBLINKTIME) < (CURSORBLINKTIME / 2.0f); // draw the background to the screen m_pClientDE->DrawSurfaceToSurface (hScreen, m_hBackground, NULL, m_nLeft, m_nTop); // create the font and color we may need for any edit controls... HSTRING hstrFont = m_pClientDE->FormatString (IDS_INGAMEFONT); HLTFONT hFont = m_pClientDE->CreateFont (m_pClientDE->GetStringData(hstrFont), 8, 16, LTFALSE, LTFALSE, LTFALSE); m_pClientDE->FreeString (hstrFont); HLTCOLOR hForeText = m_pClientDE->SetupColor1 (1.0f, 1.0f, 1.0f, LTFALSE); // if a title exists, draw it int nCurrentY = BORDERSIZE + m_nTopMargin; if (m_hTitle) { uint32 nWidth, nHeight; m_pClientDE->GetSurfaceDims (m_hTitle, &nWidth, &nHeight); LTRect rcSrc; rcSrc.left = 0; rcSrc.top = 0; rcSrc.right = nWidth; rcSrc.bottom = nHeight; if ((int)nWidth > Width() - (BORDERSIZE << 1) - m_nLeftMargin) { rcSrc.right -= nWidth - (Width() - (BORDERSIZE << 1) - m_nLeftMargin); } if (nCurrentY + (int)nHeight > Height() - BORDERSIZE) { rcSrc.bottom -= (nCurrentY + nHeight) - (Height() - BORDERSIZE); } m_pClientDE->DrawSurfaceToSurface (hScreen, m_hTitle, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft, BORDERSIZE + m_nTopMargin + m_nTop); nCurrentY += (int) nHeight + m_nTopMargin; } // draw each item uint32 nCurrentItem = m_nFirstItem; while (nCurrentItem < m_nItems && nCurrentY < m_nBottom) { // get this item's width and clamp it if necessary uint32 nWidth, nHeight; m_pClientDE->GetSurfaceDims (m_itemArray[nCurrentItem].hSurface, &nWidth, &nHeight); LTRect rcSrc; rcSrc.left = 0; rcSrc.top = 0; rcSrc.right = nWidth; rcSrc.bottom = nHeight; if ((int)nWidth > Width() - (BORDERSIZE << 1) - m_nLeftMargin) { rcSrc.right -= nWidth - (Width() - (BORDERSIZE << 1) - m_nLeftMargin); } if (nCurrentY + m_itemArray[nCurrentItem].nHeight > Height() - BORDERSIZE) { rcSrc.bottom -= (nCurrentY + m_itemArray[nCurrentItem].nHeight) - (Height() - BORDERSIZE); } if (nCurrentItem == m_nSelection) { //HLTCOLOR hRed = m_pClientDE->SetupColor2 (1.0f, 0.0f, 0.0f, LTFALSE); //m_pClientDE->DrawSurfaceSolidColor (hScreen, m_itemArray[nCurrentItem].hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft, nCurrentY + m_nTop, NULL, hRed); m_pClientDE->DrawSurfaceToSurface (hScreen, m_itemArray[nCurrentItem].hSelected, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft, nCurrentY + m_nTop); } else { if (!m_itemArray[nCurrentItem].bEnabled) { //HLTCOLOR hDisabledColor = m_pClientDE->SetupColor2 (0.3f, 0.3f, 0.3f, LTFALSE); //m_pClientDE->DrawSurfaceSolidColor (hScreen, m_itemArray[nCurrentItem].hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft, nCurrentY + m_nTop, NULL, hDisabledColor); m_pClientDE->DrawSurfaceToSurface (hScreen, m_itemArray[nCurrentItem].hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft, nCurrentY + m_nTop); } else { m_pClientDE->DrawSurfaceToSurface (hScreen, m_itemArray[nCurrentItem].hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft, nCurrentY + m_nTop); } } // if this item is an edit control, draw the editable string... if (m_itemArray[nCurrentItem].nType == Edit && m_itemArray[nCurrentItem].pData) { char* pString = ((nCurrentItem == m_nSelection) && m_bEditing) ? m_strEdit : (char*)m_itemArray[nCurrentItem].pData; if (strlen (pString) == 0) { nWidth = 0; } else { HSURFACE hSurface = LTNULL; if (m_bEditing && nCurrentItem == m_nSelection) { hSurface = CTextHelper::CreateSurfaceFromString (m_pClientDE, hFont, m_strEdit, hForeText); } else { hSurface = CTextHelper::CreateSurfaceFromString (m_pClientDE, hFont, (char*)m_itemArray[nCurrentItem].pData, hForeText); } // get the source rect and clip it if necessary m_pClientDE->GetSurfaceDims (hSurface, &nWidth, &nHeight); rcSrc.right = nWidth; rcSrc.bottom = nHeight; if (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth > (Width() - (BORDERSIZE << 1) - m_nLeftMargin)) { rcSrc.right -= (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth) - (Width() - (BORDERSIZE << 1) - m_nLeftMargin); } if (nCurrentY + (int)nHeight > Height() - BORDERSIZE) { rcSrc.bottom -= (nCurrentY + (int)nHeight) - (Height() - BORDERSIZE); } m_pClientDE->DrawSurfaceToSurface (hScreen, hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft + m_itemArray[nCurrentItem].nSecondColumn, nCurrentY + m_nTop); m_pClientDE->DeleteSurface (hSurface); } // if we're editing, draw a flashing cursor if (m_bEditing && bFlashingVisible && nCurrentItem == m_nSelection) { rcSrc.right = m_cxCursor; // if we're editing, we should be able to assume that we don't need to clip vertically if (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth + (int)m_cxCursor > (Width() - (BORDERSIZE << 1) - m_nLeftMargin)) { rcSrc.right -= (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth + (int)m_cxCursor) - (Width() - (BORDERSIZE << 1) - m_nLeftMargin); } m_pClientDE->DrawSurfaceToSurface (hScreen, m_hCursor, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft + m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth, nCurrentY + m_nTop); } } // if this item is a multiple-choice control, draw the selected string... if (m_itemArray[nCurrentItem].nType == Multiple && m_itemArray[nCurrentItem].pData) { // find the current string char* pList = new char [strlen ((char*)m_itemArray[nCurrentItem].pData) + 1]; strcpy (pList, (char*)m_itemArray[nCurrentItem].pData); char* ptr = strtok (pList, "|");// put the delimeter in the string resources!!!! for (uint32 i = 0; i < m_itemArray[nCurrentItem].nData; i++) { ptr = strtok (NULL, "|"); assert (ptr); } HSURFACE hSurface = CTextHelper::CreateSurfaceFromString (m_pClientDE, hFont, ptr, hForeText); delete [] pList; // get the source rect and clip it if necessary m_pClientDE->GetSurfaceDims (hSurface, &nWidth, &nHeight); rcSrc.right = nWidth; rcSrc.bottom = nHeight; if (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth > (Width() - (BORDERSIZE << 1) - m_nLeftMargin)) { rcSrc.right -= (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth) - (Width() - (BORDERSIZE << 1) - m_nLeftMargin); } if (nCurrentY + (int)nHeight > Height() - BORDERSIZE) { rcSrc.bottom -= (nCurrentY + (int)nHeight) - (Height() - BORDERSIZE); } m_pClientDE->DrawSurfaceToSurface (hScreen, hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft + m_itemArray[nCurrentItem].nSecondColumn, nCurrentY + m_nTop); m_pClientDE->DeleteSurface (hSurface); } // if this item is a KeyConfig control, draw the associated key... if (m_itemArray[nCurrentItem].nType == KeyConfig && m_itemArray[nCurrentItem].pData) { HSURFACE hSurface = LTNULL; if (nCurrentItem == m_nSelection && m_bConfiguring) { hSurface = CTextHelper::CreateSurfaceFromString (m_pClientDE, hFont, "Press a key...", hForeText); } else { hSurface = CTextHelper::CreateSurfaceFromString (m_pClientDE, hFont, (char*)m_itemArray[nCurrentItem].pData, hForeText); } // get the source rect and clip it if necessary m_pClientDE->GetSurfaceDims (hSurface, &nWidth, &nHeight); rcSrc.right = nWidth; rcSrc.bottom = nHeight; if (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth > (Width() - (BORDERSIZE << 1) - m_nLeftMargin)) { rcSrc.right -= (m_itemArray[nCurrentItem].nSecondColumn + (int)nWidth) - (Width() - (BORDERSIZE << 1) - m_nLeftMargin); } if (nCurrentY + (int)nHeight > Height() - BORDERSIZE) { rcSrc.bottom -= (nCurrentY + (int)nHeight) - (Height() - BORDERSIZE); } m_pClientDE->DrawSurfaceToSurface (hScreen, hSurface, &rcSrc, BORDERSIZE + m_nLeftMargin + m_nLeft + m_itemArray[nCurrentItem].nSecondColumn, nCurrentY + m_nTop); m_pClientDE->DeleteSurface (hSurface); } // if this item is a Slider, draw the slider... if (m_itemArray[nCurrentItem].nType == Slider && m_itemArray[nCurrentItem].pData) { CSlider* pSlider = (CSlider*) m_itemArray[nCurrentItem].pData; int nHeight = pSlider->GetHeight(); int y = (m_itemArray[nCurrentItem].nHeight - nHeight) / 2; if (y + nCurrentY + nHeight <= Height() - BORDERSIZE) { pSlider->Draw (hScreen, BORDERSIZE + m_nLeftMargin + m_nLeft + m_itemArray[nCurrentItem].nSecondColumn, m_nTop + nCurrentY + y); } } // increment the current y value and go on to the next item... nCurrentY += m_itemArray[nCurrentItem].nHeight; if (nCurrentY < Height() - BORDERSIZE) m_nLastItem = nCurrentItem; nCurrentItem++; } // clean up m_pClientDE->DeleteFont (hFont); }
void CScreenApperance::CreateInterface() { CWindow* pw; CLabel* pl; CButton* pb; CColor* pco; CSlider* psl; Math::Point pos, ddim; std::string name; pos.x = 0.10f; pos.y = 0.10f; ddim.x = 0.80f; ddim.y = 0.80f; pw = m_interface->CreateWindows(pos, ddim, 12, EVENT_WINDOW5); GetResource(RES_TEXT, RT_TITLE_PERSO, name); pw->SetName(name); pos.x = 0.10f; pos.y = 0.40f; ddim.x = 0.50f; ddim.y = 0.50f; pw->CreateGroup(pos, ddim, 5, EVENT_INTERFACE_GLINTl); // orange corner pos.x = 0.40f; pos.y = 0.10f; ddim.x = 0.50f; ddim.y = 0.50f; pw->CreateGroup(pos, ddim, 4, EVENT_INTERFACE_GLINTr); // blue corner pos.x = 95.0f/640.0f; pos.y = 108.0f/480.0f; ddim.x = 220.0f/640.0f; ddim.y = 274.0f/480.0f; pw->CreateGroup(pos, ddim, 17, EVENT_NULL); // frame pos.x = 100.0f/640.0f; pos.y = 364.0f/480.0f; ddim.x = 210.0f/640.0f; ddim.y = 14.0f/480.0f; pw->CreateGroup(pos, ddim, 3, EVENT_NULL); // transparent -> gray pos.x = 120.0f/640.0f; pos.y = 364.0f/480.0f; ddim.x = 80.0f/640.0f; ddim.y = 28.0f/480.0f; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_PHEAD); pb->SetState(STATE_SHADOW); pb->SetState(STATE_CARD); pos.x = 210.0f/640.0f; pos.y = 364.0f/480.0f; ddim.x = 80.0f/640.0f; ddim.y = 28.0f/480.0f; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_PBODY); pb->SetState(STATE_SHADOW); pb->SetState(STATE_CARD); pos.x = 100.0f/640.0f; pos.y = 354.0f/480.0f; ddim.x = 210.0f/640.0f; ddim.y = 10.0f/480.0f; pw->CreateGroup(pos, ddim, 1, EVENT_INTERFACE_GLINTb); // orange bar pos.x = 100.0f/640.0f; pos.y = 154.0f/480.0f; ddim.x = 210.0f/640.0f; ddim.y = 200.0f/480.0f; pw->CreateGroup(pos, ddim, 2, EVENT_INTERFACE_GLINTu); // orange -> transparent // Face pos.x = 340.0f/640.0f; pos.y = 356.0f/480.0f; ddim.x = 200.0f/640.0f; ddim.y = 16.0f/480.0f; pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL11, ""); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.x = 340.0f/640.0f; pos.y = 312.0f/480.0f; ddim.x = 44.0f/640.0f; ddim.y = 44.0f/480.0f; pb = pw->CreateButton(pos, ddim, 43, EVENT_INTERFACE_PFACE1); pb->SetState(STATE_SHADOW); pos.x += 50.0f/640.0f; pb = pw->CreateButton(pos, ddim, 46, EVENT_INTERFACE_PFACE4); pb->SetState(STATE_SHADOW); pos.x += 50.0f/640.0f; pb = pw->CreateButton(pos, ddim, 45, EVENT_INTERFACE_PFACE3); pb->SetState(STATE_SHADOW); pos.x += 50.0f/640.0f; pb = pw->CreateButton(pos, ddim, 44, EVENT_INTERFACE_PFACE2); pb->SetState(STATE_SHADOW); // Glasses pos.x = 340.0f/640.0f; pos.y = 270.0f/480.0f; ddim.x = 200.0f/640.0f; ddim.y = 16.0f/480.0f; pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL12, ""); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.x = 340.0f/640.0f; pos.y = 240.0f/480.0f; ddim.x = 30.0f/640.0f; ddim.y = 30.0f/480.0f; for ( int i=0 ; i<6 ; i++ ) { int ti[6] = {11, 179, 180, 181, 182, 183}; pb = pw->CreateButton(pos, ddim, ti[i], static_cast<EventType>(EVENT_INTERFACE_PGLASS0+i)); pb->SetState(STATE_SHADOW); pos.x += (30.0f+2.8f)/640.0f; } // Color A pos.x = 340.0f/640.0f; pos.y = 300.0f/480.0f; ddim.x = 200.0f/640.0f; ddim.y = 16.0f/480.0f; pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL14, ""); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.y = 282.0f/480.0f; ddim.x = 18.0f/640.0f; ddim.y = 18.0f/480.0f; for ( int j=0 ; j<3 ; j++ ) { pos.x = 340.0f/640.0f; for ( int i=0 ; i<3 ; i++ ) { pco = pw->CreateColor(pos, ddim, -1, static_cast<EventType>(EVENT_INTERFACE_PC0a+j*3+i)); pco->SetState(STATE_SHADOW); pos.x += 20.0f/640.0f; } pos.y -= 20.0f/480.0f; } pos.x = 420.0f/640.0f; pos.y = 282.0f/480.0f; ddim.x = 100.0f/640.0f; ddim.y = 18.0f/480.0f; for ( int i=0 ; i<3 ; i++ ) { psl = pw->CreateSlider(pos, ddim, 0, static_cast<EventType>(EVENT_INTERFACE_PCRa+i)); psl->SetState(STATE_SHADOW); psl->SetLimit(0.0f, 255.0f); psl->SetArrowStep(16.0f); pos.y -= 20.0f/480.0f; } // Color B pos.x = 340.0f/640.0f; pos.y = 192.0f/480.0f; ddim.x = 200.0f/640.0f; ddim.y = 16.0f/480.0f; pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL13, ""); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.y = 174.0f/480.0f; ddim.x = 18.0f/640.0f; ddim.y = 18.0f/480.0f; for ( int j=0 ; j<3 ; j++ ) { pos.x = 340.0f/640.0f; for ( int i=0 ; i<3 ; i++ ) { pco = pw->CreateColor(pos, ddim, -1, static_cast<EventType>(EVENT_INTERFACE_PC0b+j*3+i)); pco->SetState(STATE_SHADOW); pos.x += 20.0f/640.0f; } pos.y -= 20.0f/480.0f; } pos.x = 420.0f/640.0f; pos.y = 174.0f/480.0f; ddim.x = 100.0f/640.0f; ddim.y = 18.0f/480.0f; for ( int i=0 ; i<3 ; i++ ) { psl = pw->CreateSlider(pos, ddim, 0, static_cast<EventType>(EVENT_INTERFACE_PCRb+i)); psl->SetState(STATE_SHADOW); psl->SetLimit(0.0f, 255.0f); psl->SetArrowStep(16.0f); pos.y -= 20.0f/480.0f; } // Rotation pos.x = 100.0f/640.0f; pos.y = 113.0f/480.0f; ddim.x = 20.0f/640.0f; ddim.y = 20.0f/480.0f; pb = pw->CreateButton(pos, ddim, 55, EVENT_INTERFACE_PLROT); // < pb->SetState(STATE_SHADOW); pb->SetRepeat(true); pos.x = 290.0f/640.0f; pos.y = 113.0f/480.0f; ddim.x = 20.0f/640.0f; ddim.y = 20.0f/480.0f; pb = pw->CreateButton(pos, ddim, 48, EVENT_INTERFACE_PRROT); // > pb->SetState(STATE_SHADOW); pb->SetRepeat(true); pos.x = 100.0f/640.0f; pos.y = 70.0f/480.0f; ddim.x = 100.0f/640.0f; ddim.y = 32.0f/480.0f; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_POK); pb->SetState(STATE_SHADOW); pos.x = 210.0f/640.0f; pos.y = 70.0f/480.0f; ddim.x =100.0f/640.0f; ddim.y = 32.0f/480.0f; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_PCANCEL); pb->SetState(STATE_SHADOW); pos.x = 340.0f/640.0f; pos.y = 70.0f/480.0f; ddim.x =194.0f/640.0f; ddim.y = 32.0f/480.0f; pb = pw->CreateButton(pos, ddim, -1, EVENT_INTERFACE_PDEF); pb->SetState(STATE_SHADOW); m_apperanceTab = 0; m_apperanceAngle = -0.6f; m_main->GetPlayerProfile()->LoadApperance(); UpdatePerso(); m_main->ScenePerso(); CameraPerso(); }
void CScreenSetupGame::CreateInterface() { CWindow* pw; CLabel* pl; CCheck* pc; CSlider* psl; CList* pli; Math::Point pos, ddim; std::string name; CScreenSetup::CreateInterface(); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; ddim.x = dim.x*6; ddim.y = dim.y*0.5f; pos.x = ox+sx*3; pos.y = 0.65f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_MOVIES); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_SCROLL); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_INVERTX); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_INVERTY); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_EFFECT); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_BLOOD); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_AUTOSAVE_ENABLE); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pos.y -= ddim.y; ddim.x = dim.x*2.5f; psl = pw->CreateSlider(pos, ddim, -1, EVENT_INTERFACE_AUTOSAVE_INTERVAL); psl->SetState(STATE_SHADOW); psl->SetLimit(1.0f, 30.0f); psl->SetArrowStep(1.0f); pos.y += ddim.y/2; GetResource(RES_EVENT, EVENT_INTERFACE_AUTOSAVE_INTERVAL, name); pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL1, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.y -= ddim.y/2; pos.x = ox+sx*3+dim.x*4.0f; psl = pw->CreateSlider(pos, ddim, -1, EVENT_INTERFACE_AUTOSAVE_SLOTS); psl->SetState(STATE_SHADOW); psl->SetLimit(1.0f, 10.0f); psl->SetArrowStep(1.0f); pos.y += ddim.y/2; GetResource(RES_EVENT, EVENT_INTERFACE_AUTOSAVE_SLOTS, name); pl = pw->CreateLabel(pos, ddim, 0, EVENT_LABEL1, name); pl->SetTextAlign(Gfx::TEXT_ALIGN_LEFT); pos.y -= ddim.y/2; ddim.x = dim.x*6; ddim.y = dim.y*0.5f; pos.x = ox+sx*10; pos.y = 0.65f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_TOOLTIP); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_GLINT); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_RAIN); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_BGPAUSE); pc->SetState(STATE_SHADOW); pos.y -= 0.048f; pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_EDITMODE); pc->SetState(STATE_SHADOW); if ( m_simulationSetup ) { pc->SetState(STATE_DEAD); } pos.y -= 0.048f; pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_EDITVALUE); pc->SetState(STATE_SHADOW); ddim.y = dim.y*3.0f; pos.y -= ddim.y; pli = pw->CreateList(pos, ddim, 0, EVENT_INTERFACE_LANGUAGE); pli->SetState(STATE_SHADOW); // TODO: Add something like GetSupportedLanguages() and GetLanguageFriendlyName() for this pli->SetItemName(1+LANGUAGE_ENV, "[System default]"); pli->SetItemName(1+LANGUAGE_ENGLISH, "English"); pli->SetItemName(1+LANGUAGE_FRENCH, "French"); pli->SetItemName(1+LANGUAGE_GERMAN, "German"); pli->SetItemName(1+LANGUAGE_POLISH, "Polish"); pli->SetItemName(1+LANGUAGE_RUSSIAN, "Russian"); UpdateSetupButtons(); }
void CScreenApperance::UpdatePerso() { CWindow* pw; CLabel* pl; CButton* pb; CColor* pc; CSlider* ps; Gfx::Color color; std::string name; int i; PlayerApperance& apperance = m_main->GetPlayerProfile()->GetApperance(); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); if ( pw == nullptr ) return; pb = static_cast<CButton*>(pw->SearchControl(EVENT_INTERFACE_PHEAD)); if ( pb != nullptr ) { pb->SetState(STATE_CHECK, m_apperanceTab==0); } pb = static_cast<CButton*>(pw->SearchControl(EVENT_INTERFACE_PBODY)); if ( pb != nullptr ) { pb->SetState(STATE_CHECK, m_apperanceTab==1); } pl = static_cast<CLabel*>(pw->SearchControl(EVENT_LABEL11)); if ( pl != nullptr ) { if ( m_apperanceTab == 0 ) { pl->SetState(STATE_VISIBLE); GetResource(RES_TEXT, RT_PERSO_FACE, name); pl->SetName(name); } else { pl->ClearState(STATE_VISIBLE); } } pl = static_cast<CLabel*>(pw->SearchControl(EVENT_LABEL12)); if ( pl != nullptr ) { if ( m_apperanceTab == 0 ) { pl->SetState(STATE_VISIBLE); GetResource(RES_TEXT, RT_PERSO_GLASSES, name); pl->SetName(name); } else { pl->ClearState(STATE_VISIBLE); } } pl = static_cast<CLabel*>(pw->SearchControl(EVENT_LABEL13)); if ( pl != nullptr ) { if ( m_apperanceTab == 0 ) GetResource(RES_TEXT, RT_PERSO_HAIR, name); else GetResource(RES_TEXT, RT_PERSO_BAND, name); pl->SetName(name); } pl = static_cast<CLabel*>(pw->SearchControl(EVENT_LABEL14)); if ( pl != nullptr ) { if ( m_apperanceTab == 0 ) { pl->ClearState(STATE_VISIBLE); } else { pl->SetState(STATE_VISIBLE); GetResource(RES_TEXT, RT_PERSO_COMBI, name); pl->SetName(name); } } for ( i=0 ; i<4 ; i++ ) { pb = static_cast<CButton*>(pw->SearchControl(static_cast<EventType>(EVENT_INTERFACE_PFACE1+i))); if ( pb == nullptr ) break; pb->SetState(STATE_VISIBLE, m_apperanceTab==0); pb->SetState(STATE_CHECK, i==apperance.face); } for ( i=0 ; i<10 ; i++ ) { pb = static_cast<CButton*>(pw->SearchControl(static_cast<EventType>(EVENT_INTERFACE_PGLASS0+i))); if ( pb == nullptr ) break; pb->SetState(STATE_VISIBLE, m_apperanceTab==0); pb->SetState(STATE_CHECK, i==apperance.glasses); } for ( i=0 ; i<3*3 ; i++ ) { pc = static_cast<CColor*>(pw->SearchControl(static_cast<EventType>(EVENT_INTERFACE_PC0a+i))); if ( pc == nullptr ) break; if ( m_apperanceTab == 0 ) { pc->ClearState(STATE_VISIBLE); } else { pc->SetState(STATE_VISIBLE); color.r = PERSO_COLOR[3*10*1+3*i+0]/255.0f; color.g = PERSO_COLOR[3*10*1+3*i+1]/255.0f; color.b = PERSO_COLOR[3*10*1+3*i+2]/255.0f; color.a = 0.0f; pc->SetColor(color); pc->SetState(STATE_CHECK, EqColor(color, apperance.colorCombi)); } pc = static_cast<CColor*>(pw->SearchControl(static_cast<EventType>(EVENT_INTERFACE_PC0b+i))); if ( pc == nullptr ) break; color.r = PERSO_COLOR[3*10*2*m_apperanceTab+3*i+0]/255.0f; color.g = PERSO_COLOR[3*10*2*m_apperanceTab+3*i+1]/255.0f; color.b = PERSO_COLOR[3*10*2*m_apperanceTab+3*i+2]/255.0f; color.a = 0.0f; pc->SetColor(color); pc->SetState(STATE_CHECK, EqColor(color, m_apperanceTab?apperance.colorBand:apperance.colorHair)); } for ( i=0 ; i<3 ; i++ ) { ps = static_cast<CSlider*>(pw->SearchControl(static_cast<EventType>(EVENT_INTERFACE_PCRa+i))); if ( ps == nullptr ) break; ps->SetState(STATE_VISIBLE, m_apperanceTab==1); } if ( m_apperanceTab == 1 ) { color = apperance.colorCombi; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCRa)); if ( ps != nullptr ) ps->SetVisibleValue(color.r*255.0f); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCGa)); if ( ps != nullptr ) ps->SetVisibleValue(color.g*255.0f); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCBa)); if ( ps != nullptr ) ps->SetVisibleValue(color.b*255.0f); } if ( m_apperanceTab == 0 ) color = apperance.colorHair; else color = apperance.colorBand; ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCRb)); if ( ps != nullptr ) ps->SetVisibleValue(color.r*255.0f); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCGb)); if ( ps != nullptr ) ps->SetVisibleValue(color.g*255.0f); ps = static_cast<CSlider*>(pw->SearchControl(EVENT_INTERFACE_PCBb)); if ( ps != nullptr ) ps->SetVisibleValue(color.b*255.0f); }