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 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); }