void CControlTestDialog::OnBnClickedButtonTestImageButton() { // TODO: 在此添加控件通知处理程序代码 this->ResetTest(); CUIButton *pBtn = new CUIButton(); m_pTestWnd = pBtn; CRect rcClient; this->GetClientRect( rcClient ); const CRect rcSt( 20,80, rcClient.Width()-20, 120 ); pBtn->Create( _T( "" ), WS_CHILD | WS_VISIBLE, rcSt, this, 1000 ); tstring strAppDir = ParsePath( GetModulePath().c_str() ).m_strDirectory; tstring strLogoPath= strAppDir + _T( "res\\chs\\btn_login_normal.jpg" ); tstring strDisPath = strAppDir + _T( "res\\chs\\btn_login_direct.jpg" ); pBtn->SetImage( strLogoPath.c_str(), strLogoPath.c_str(), strDisPath.c_str() ); pBtn->SetTransparentMask( TRUE, RGB( 255,0,255) ); pBtn->ShowWindow( SW_SHOW ); }
void SetValue(bool value) { (**sizer).Set(option_key, value); button->SetText(value?label_true:label_false); button->SetBrowseText(value?tip_true:tip_false); parent->DoLayout(); parent->ChangedSignal(); }
void CUIStatsListItem::XmlInit(const char *path, CUIXml &uiXml) { CUIXmlInit xml_init; // CUIStatic *pStatic; CUIButton *pButton; string256 buf; strconcat(sizeof(buf),buf, path, ":static"); int tabsCount = uiXml.GetNodesNum(path, 0, "static"); XML_NODE* tab_node = uiXml.NavigateToNode(path,0); uiXml.SetLocalRoot(tab_node); for (int i = 0; i < tabsCount; ++i) { pButton = new CUIButton(); pButton->SetAutoDelete(true); xml_init.InitStatic(uiXml, "static", i, pButton); pButton->SetTextAlignment(CGameFont::alLeft); AttachChild(pButton); FieldsVector.push_back(pButton); } FieldsVector[0]->SetEllipsis(1, 0); }
CUIButton* CScriptXmlInit::InitButton(LPCSTR path, CUIWindow* parent){ CUIButton* pWnd = xr_new<CUIButton>(); CUIXmlInit::InitButton(m_xml, path, 0, pWnd); pWnd->SetAutoDelete(true); _attach_child(pWnd, parent); //. if(parent) parent->AttachChild(pWnd); return pWnd; }
void CStartScene::OnLoad() { CUIButton* pbtn1 = (CUIButton*)get("btn1"); pbtn1->AddClickListen(this,(OnBtnClick)&CStartScene::OnBtn1Click); CUIButton* pbtn2 = (CUIButton*)get("btn2"); pbtn2->AddClickListen(this,(OnBtnClick)&CStartScene::OnBtn2Click); CUIButton* pbtn3 = (CUIButton*)get("btn3"); pbtn3->AddClickListen(this,(OnBtnClick)&CStartScene::OnBtn3Click); CUIButton* pbtn4 = (CUIButton*)get("btn4"); pbtn4->AddClickListen(this,(OnBtnClick)&CStartScene::OnBtn4Click); CUIButton* pbtn5 = (CUIButton*)get("btn5"); pbtn5->AddClickListen(this,(OnBtnClick)&CStartScene::OnBtn5Click); CUIButton* pbtnlist = (CUIButton*)get("list"); pbtnlist->AddClickListen(this,(OnBtnClick)&CStartScene::OnBtnListClick); CUIButton* pbtntetris = (CUIButton*)get("tetris"); pbtntetris->AddClickListen(this,(OnBtnClick)&CStartScene::OnTetrisClick); mtimerid = sUIFrame.GetTimerMgr()->CreateTimer(this,100); }
void CUIComboBox::AddButton(CUIButton& button, uint32_t pos){ uint32_t exray = 14; if(this->getMCbar()){ exray += this->getMCbar()->getHight(); } while (true){ if (this->_buttons.find(pos) == this->_buttons.end()){ this->_buttons[pos] = &button; button.SetX(5); button.SetY(exray+(pos*_spreadY)); button.setWight(this->_wight); button.setHight(_spreadY); this->add(button); cerr<<"addbutton"<<endl; break; }else{ pos+=1; } } }
void CUITrade::initialize() { CUIButton* pClose = (CUIButton*)findUI("btn_close"); if (pClose) { CmdTradeClose* pCmd = new CmdTradeClose; pCmd->setData(this); pClose->SetCommandUp(pCmd); } CUIButton* pCancel = (CUIButton*)findUI("btn_cancel"); if (pCancel) { CmdTradeClose* pCmd = new CmdTradeClose; pCmd->setData(this); pCancel->SetCommandUp(pCmd); } m_pBtnOk = (CUIButton*)findUI("btn_ok"); if (m_pBtnOk) { CmdTradeSend* pCmd = new CmdTradeSend; pCmd->setData(this); m_pBtnOk->SetCommandUp(pCmd); } m_pDragArea = findUI("base_drag_area"); m_pTextTitle = (CUIText*)findUI("text_title"); m_pList[eLIST_AMEND_ITEM] = (CUIList*)findUI("list_amend"); m_pList[eLIST_AMEND_CONDITION] = (CUIList*)findUI("list_amend_condition"); m_pBaseAmendInfo = findUI("base_amend_info"); }
void CImageTestScene::OnLoad() { CUIButton* pbtn = (CUIButton*)get("back"); pbtn->AddClickListen(this,(OnBtnClick)&CImageTestScene::OnBtnbackClick); pbtn = (CUIButton*)get("ScaleX"); pbtn->AddClickListen(this,(OnBtnClick)&CImageTestScene::OnBtnScaleXClick); pbtn = (CUIButton*)get("ScaleY"); pbtn->AddClickListen(this,(OnBtnClick)&CImageTestScene::OnBtnScaleYClick); pbtn = (CUIButton*)get("SkewX"); pbtn->AddClickListen(this,(OnBtnClick)&CImageTestScene::OnBtnSkewXClick); pbtn = (CUIButton*)get("SkewY"); pbtn->AddClickListen(this,(OnBtnClick)&CImageTestScene::OnBtnSkewYClick); pbtn = (CUIButton*)get("Rotate"); pbtn->AddClickListen(this,(OnBtnClick)&CImageTestScene::OnBtnRotateClick); }
void CMainMenuState::Input(void) { if (CInputManager::GetInstance()->IsKeyPressed(eControls::MouseLeft)) { //CUIElement* mouseElement = m_pGUI->GetElementAt(CInputManager::GetInstance( )->GetMousePosition( )); std::vector<CUIElement*> elements; m_pGUI->GetElementsAt(CInputManager::GetInstance()->GetMousePosition(), elements); for (unsigned int i = 0; i < elements.size(); i++) { if (dynamic_cast<CUIButton*>(elements[i])) { CUIButton* button = (CUIButton*)elements[i]; if (button->GetText() == "Start") { QueueStateChange(STATE_CH_MAINMENU); } else if (button->GetText() == "How to Play") { QueueStateChange(STATE_CH_CONTROLS); } else if (button->GetText() == "Credits") { QueueStateChange(STATE_CH_CREDITS); } else if (button->GetText() == "Options") { QueueStateChange(STATE_CH_OPTIONS); } else if (button->GetText() == "Achievements") { QueueStateChange(STATE_CH_ACHIEVEMENTS); } else if (button->GetText() == "Leaderboards") { QueueStateChange(STATE_CH_HIGHSCORE); } else if (button->GetText() == "Quit") { QueueStateChange(STATE_CH_EXIT); } } } } else if (CInputManager::GetInstance()->IsKeyPressed(eControls::Enter)) { if (true == m_bSelectMode) { QueueStateChange(STATE_CH_PLAY); m_bEndlessMode = false; CPathSearch::GetInstance()->HandleLoading(!m_bEndlessMode); } else { QueueStateChange(STATE_CH_MAINMENU); } } if (true == m_bSelectMode) { if (true == m_pBack->GetPressed()) { QueueStateChange(STATE_CH_MAINMENU); } if (true == m_pCampaign->GetPressed()) { QueueStateChange(STATE_CH_PLAY); m_bEndlessMode = false; CPathSearch::GetInstance()->HandleLoading(!m_bEndlessMode); } if (true == m_pEndless->GetPressed()) { QueueStateChange(STATE_CH_PLAY); m_bEndlessMode = true; CPathSearch::GetInstance()->HandleLoading(!m_bEndlessMode); } } }
// ---------------------------------------------------------------------------- // Name : OpenSelectResource() // Desc : iType = 1 채굴, iType = 2 채집, iType = 3 차지 // ---------------------------------------------------------------------------- void CUISelectResource::OpenSelectResource( int npcIndex, int iType ) { if(iType == -1) return; if( IsVisible() ) { ResetSelectResource(); OpenSelectResource(npcIndex, iType); return; } CEntityProperty *pEP = CEntity::GetPlayerEntity(0)->PropertyForTypeAndID(CEntityProperty::EPT_BOOL, 221); if(pEP) { ENTITYPROPERTY( &*CEntity::GetPlayerEntity(0), pEP->ep_slOffset, BOOL) = FALSE; } pEP = CEntity::GetPlayerEntity(0)->PropertyForTypeAndID(CEntityProperty::EPT_INDEX, 222); if(pEP) { ENTITYPROPERTY( &*CEntity::GetPlayerEntity(0), pEP->ep_slOffset, INDEX) = -1; } ResetSelectResource(); m_iResourceType = iType; m_iClientNPCIndex = npcIndex; if(iType == 4 ) //수집이면 패스 { StartProduct(); ResetSelectResource(); } else { FLOAT fTexWidth = m_ptdBaseTexture->GetPixWidth(); FLOAT fTexHeight = m_ptdBaseTexture->GetPixHeight(); CUIButton TempUIButton; TempUIButton.SetUV( UBS_IDLE, 0, 117, 131, 138, fTexWidth, fTexHeight ); TempUIButton.SetUV( UBS_CLICK, 0, 140, 131, 161, fTexWidth, fTexHeight ); TempUIButton.CopyUV( UBS_IDLE, UBS_ON ); TempUIButton.CopyUV( UBS_IDLE, UBS_DISABLE ); const int iStartX = 20; const int iStartY = 30; int iCurPosX = iStartX; int iCurPosY = iStartY; CTString strName; for(INDEX i=0; i<2; ++i) { strName = i?_S( 1972, "선택 생산" ):_S( 1973, "무작위 생산" ); TempUIButton.Create(this, strName, iCurPosX, iCurPosY, BUTTON_WIDTH, BUTTON_HEIGHT ); m_vectorResourceList.push_back(TempUIButton); iCurPosY += BUTTON_HEIGHT + BUTTON_SPAN; } int nHeight = m_vectorResourceList.size() * (BUTTON_HEIGHT + BUTTON_SPAN) + TITLEBAR_HEIGHT + 10; SetSize( m_nWidth, nHeight ); CUIManager::getSingleton()->RearrangeOrder( UI_SELECTRESOURCE, TRUE ); } // 시작 되면 키보드 이동 막기 [3/26/2013 Ranma] m_bKeyMove = false; return; }
// ---------------------------------------------------------------------------- // Name : MouseMessage() // Desc : // ---------------------------------------------------------------------------- WMSG_RESULT CUISelectResource::MouseMessage( MSG *pMsg ) { WMSG_RESULT wmsgResult; // Title bar static BOOL bTitleBarClick = FALSE; // Item clicked static BOOL bLButtonDownInItem = FALSE; // Mouse point static int nOldX, nOldY; int nX = LOWORD( pMsg->lParam ); int nY = HIWORD( pMsg->lParam ); // Mouse message switch( pMsg->message ) { case WM_MOUSEMOVE: { if( IsInside( nX, nY ) ) CUIManager::getSingleton()->SetMouseCursorInsideUIs(); int ndX = nX - nOldX; int ndY = nY - nOldY; // Move shop if( bTitleBarClick && ( pMsg->wParam & MK_LBUTTON ) ) { nOldX = nX; nOldY = nY; Move( ndX, ndY ); return WMSG_SUCCESS; } // Close Button if( m_btnClose.MouseMessage( pMsg ) != WMSG_FAIL ) return WMSG_SUCCESS; for(int i = 0; i < m_vectorResourceList.size(); ++i) { if( (wmsgResult = m_vectorResourceList[i].MouseMessage( pMsg ) )!= WMSG_FAIL ) { return WMSG_SUCCESS; } } } break; case WM_LBUTTONDOWN: { if( IsInside( nX, nY ) ) { CUIManager* pUIManager = CUIManager::getSingleton(); nOldX = nX; nOldY = nY; // Close button if( m_btnClose.MouseMessage( pMsg ) != WMSG_FAIL ) { // Nothing } // Title bar else if( IsInsideRect( nX, nY, m_rcTitle ) ) { bTitleBarClick = TRUE; } else { std::vector<CUIButton>::iterator end = m_vectorResourceList.end(); std::vector<CUIButton>::iterator it = m_vectorResourceList.begin(); for(; it != end; ++it) { if( (*it).MouseMessage( pMsg ) != WMSG_FAIL )//button 누름 { int dist = std::distance(m_vectorResourceList.begin(), it); if( m_bSelectType ) { if( dist == PRODUCT_TYPE_RANDOM ) { StartProduct(); ResetSelectResource(); } else if( dist == PRODUCT_TYPE_SELECT ) { m_bSelectType = FALSE; CTString strName; CUIButton TempUIButton; TempUIButton.SetUV( UBS_IDLE, 0, 117, 131, 138, m_ptdBaseTexture->GetPixWidth(), m_ptdBaseTexture->GetPixHeight() ); TempUIButton.SetUV( UBS_CLICK, 0, 140, 131, 161, m_ptdBaseTexture->GetPixWidth(), m_ptdBaseTexture->GetPixHeight() ); TempUIButton.CopyUV( UBS_IDLE, UBS_ON ); TempUIButton.CopyUV( UBS_IDLE, UBS_DISABLE ); m_vectorResourceList.clear(); int iCurPosY = 30; for(INDEX i=0; i<3; ++i) { strName = _pNetwork->GetItemData( g_iProductItemDBIndex[m_iResourceType-1][i] )->GetName(); TempUIButton.Create(this, strName, 20, iCurPosY, BUTTON_WIDTH, BUTTON_HEIGHT ); m_vectorResourceList.push_back(TempUIButton); iCurPosY += BUTTON_HEIGHT + BUTTON_SPAN; } int nHeight = m_vectorResourceList.size() * (BUTTON_HEIGHT + BUTTON_SPAN) + TITLEBAR_HEIGHT + 10; SetSize( m_nWidth, nHeight ); pUIManager->RearrangeOrder( UI_SELECTRESOURCE, TRUE ); } } else { StartProduct( dist ); ResetSelectResource(); } return WMSG_SUCCESS; } } } pUIManager->RearrangeOrder( UI_SELECTRESOURCE, TRUE ); return WMSG_SUCCESS; } else { ResetSelectResource(); m_bKeyMove = true; } } break; case WM_LBUTTONUP: { bTitleBarClick = FALSE; // Close button if( (wmsgResult = m_btnClose.MouseMessage( pMsg ) ) != WMSG_FAIL ) { if(wmsgResult == WMSG_COMMAND) { ResetSelectResource(); m_bKeyMove = true; } return WMSG_SUCCESS; } else { for(int i = 0; i < m_vectorResourceList.size(); ++i) { if( (wmsgResult = m_vectorResourceList[i].MouseMessage( pMsg ) )!= WMSG_FAIL ) { if(wmsgResult == WMSG_COMMAND) { } return WMSG_SUCCESS; } } } } break; } return WMSG_FAIL; }
////////////////////////////////////////////////////////////////////////// // high level scripting interface ////////////////////////////////////////////////////////////////////////// HRESULT CUIWindow::ScCallMethod(CScScript* Script, CScStack *Stack, CScStack *ThisStack, char *Name) { ////////////////////////////////////////////////////////////////////////// // GetWidget / GetControl ////////////////////////////////////////////////////////////////////////// if(strcmp(Name, "GetWidget")==0 || strcmp(Name, "GetControl")==0) { Stack->CorrectParams(1); CScValue* val = Stack->Pop(); if(val->GetType()==VAL_INT) { int widget= val->GetInt(); if(widget<0 || widget>=m_Widgets.GetSize()) Stack->PushNULL(); else Stack->PushNative(m_Widgets[widget], true); } else { for(int i=0; i<m_Widgets.GetSize(); i++) { if(CBPlatform::stricmp(m_Widgets[i]->m_Name, val->GetString())==0) { Stack->PushNative(m_Widgets[i], true); return S_OK; } } Stack->PushNULL(); } return S_OK; } ////////////////////////////////////////////////////////////////////////// // SetInactiveFont ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SetInactiveFont")==0) { Stack->CorrectParams(1); if(m_FontInactive) Game->m_FontStorage->RemoveFont(m_FontInactive); m_FontInactive = Game->m_FontStorage->AddFont(Stack->Pop()->GetString()); Stack->PushBool(m_FontInactive!=NULL); return S_OK; } ////////////////////////////////////////////////////////////////////////// // SetInactiveImage ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "SetInactiveImage")==0) { Stack->CorrectParams(1); SAFE_DELETE(m_ImageInactive); m_ImageInactive = new CBSprite(Game); char* Filename = Stack->Pop()->GetString(); if(!m_ImageInactive || FAILED(m_ImageInactive->LoadFile(Filename))) { SAFE_DELETE(m_ImageInactive); Stack->PushBool(false); } else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GetInactiveImage ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GetInactiveImage")==0) { Stack->CorrectParams(0); if(!m_ImageInactive || !m_ImageInactive->m_Filename) Stack->PushNULL(); else Stack->PushString(m_ImageInactive->m_Filename); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GetInactiveImageObject ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GetInactiveImageObject")==0) { Stack->CorrectParams(0); if(!m_ImageInactive) Stack->PushNULL(); else Stack->PushNative(m_ImageInactive, true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // Close ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "Close")==0) { Stack->CorrectParams(0); Stack->PushBool(SUCCEEDED(Close())); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GoExclusive ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GoExclusive")==0) { Stack->CorrectParams(0); GoExclusive(); Script->WaitFor(this); Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // GoSystemExclusive ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "GoSystemExclusive")==0) { Stack->CorrectParams(1); char* Event = Stack->Pop()->GetString(); GoSystemExclusive(); if (Event != NULL) { ApplyEvent(Event); } Script->WaitFor(this); Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // Center ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "Center")==0) { Stack->CorrectParams(0); m_PosX = (Game->m_Renderer->m_Width - m_Width) / 2; m_PosY = (Game->m_Renderer->m_Height - m_Height) / 2; Stack->PushNULL(); return S_OK; } ////////////////////////////////////////////////////////////////////////// // LoadFromFile ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "LoadFromFile")==0) { Stack->CorrectParams(1); CScValue* Val = Stack->Pop(); Cleanup(); if(!Val->IsNULL()) { Stack->PushBool(SUCCEEDED(LoadFile(Val->GetString()))); } else Stack->PushBool(true); return S_OK; } ////////////////////////////////////////////////////////////////////////// // CreateButton ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "CreateButton")==0) { Stack->CorrectParams(1); CScValue* Val = Stack->Pop(); CUIButton* Btn = new CUIButton(Game); if(!Val->IsNULL()) Btn->SetName(Val->GetString()); Stack->PushNative(Btn, true); Btn->m_Parent = this; m_Widgets.Add(Btn); return S_OK; } ////////////////////////////////////////////////////////////////////////// // CreateStatic ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "CreateStatic")==0) { Stack->CorrectParams(1); CScValue* Val = Stack->Pop(); CUIText* Sta = new CUIText(Game); if(!Val->IsNULL()) Sta->SetName(Val->GetString()); Stack->PushNative(Sta, true); Sta->m_Parent = this; m_Widgets.Add(Sta); return S_OK; } ////////////////////////////////////////////////////////////////////////// // CreateEditor ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "CreateEditor")==0) { Stack->CorrectParams(1); CScValue* Val = Stack->Pop(); CUIEdit* Edi = new CUIEdit(Game); if(!Val->IsNULL()) Edi->SetName(Val->GetString()); Stack->PushNative(Edi, true); Edi->m_Parent = this; m_Widgets.Add(Edi); return S_OK; } ////////////////////////////////////////////////////////////////////////// // CreateWindow ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "CreateWindow")==0) { Stack->CorrectParams(1); CScValue* Val = Stack->Pop(); CUIWindow* Win = new CUIWindow(Game); if(!Val->IsNULL()) Win->SetName(Val->GetString()); Stack->PushNative(Win, true); Win->m_Parent = this; m_Widgets.Add(Win); return S_OK; } ////////////////////////////////////////////////////////////////////////// // DeleteControl / DeleteButton / DeleteStatic / DeleteEditor / DeleteWindow ////////////////////////////////////////////////////////////////////////// else if(strcmp(Name, "DeleteControl")==0 || strcmp(Name, "DeleteButton")==0 || strcmp(Name, "DeleteStatic")==0 || strcmp(Name, "DeleteEditor")==0 || strcmp(Name, "DeleteWindow")==0) { Stack->CorrectParams(1); CScValue* val = Stack->Pop(); CUIObject* obj = (CUIObject*)val->GetNative(); for(int i=0; i<m_Widgets.GetSize(); i++) { if(m_Widgets[i]==obj) { delete m_Widgets[i]; m_Widgets.RemoveAt(i); if(val->GetType()==VAL_VARIABLE_REF) val->SetNULL(); } } Stack->PushNULL(); return S_OK; } else if SUCCEEDED(Game->WindowScriptMethodHook(this, Script, Stack, Name)) return S_OK; else return CUIObject::ScCallMethod(Script, Stack, ThisStack, Name);
TOKEN_DEF_END ////////////////////////////////////////////////////////////////////////// HRESULT CUIWindow::LoadBuffer(BYTE* Buffer, bool Complete) { TOKEN_TABLE_START(commands) TOKEN_TABLE (WINDOW) TOKEN_TABLE (ALPHA_COLOR) TOKEN_TABLE (ALPHA) TOKEN_TABLE (TEMPLATE) TOKEN_TABLE (DISABLED) TOKEN_TABLE (VISIBLE) TOKEN_TABLE (BACK_INACTIVE) TOKEN_TABLE (BACK) TOKEN_TABLE (IMAGE_INACTIVE) TOKEN_TABLE (IMAGE) TOKEN_TABLE (FONT_INACTIVE) TOKEN_TABLE (FONT) TOKEN_TABLE (TITLE_ALIGN) TOKEN_TABLE (TITLE_RECT) TOKEN_TABLE (TITLE) TOKEN_TABLE (DRAG_RECT) TOKEN_TABLE (X) TOKEN_TABLE (Y) TOKEN_TABLE (WIDTH) TOKEN_TABLE (HEIGHT) TOKEN_TABLE (FADE_ALPHA) TOKEN_TABLE (FADE_COLOR) TOKEN_TABLE (CURSOR) TOKEN_TABLE (NAME) TOKEN_TABLE (BUTTON) TOKEN_TABLE (STATIC) TOKEN_TABLE (TRANSPARENT) TOKEN_TABLE (SCRIPT) TOKEN_TABLE (CAPTION) TOKEN_TABLE (PARENT_NOTIFY) TOKEN_TABLE (MENU) TOKEN_TABLE (IN_GAME) TOKEN_TABLE (CLIP_CONTENTS) TOKEN_TABLE (PAUSE_MUSIC) TOKEN_TABLE (EDITOR_PROPERTY) TOKEN_TABLE (EDIT) TOKEN_TABLE_END BYTE* params; int cmd=2; CBParser parser(Game); int FadeR=0, FadeG=0, FadeB=0, FadeA=0; int ar=0, ag=0, ab=0, alpha=0; if(Complete) { if(parser.GetCommand ((char**)&Buffer, commands, (char**)¶ms)!=TOKEN_WINDOW) { Game->LOG(0, "'WINDOW' keyword expected."); return E_FAIL; } Buffer = params; } while (cmd >= PARSERR_TOKENNOTFOUND && (cmd = parser.GetCommand ((char**)&Buffer, commands, (char**)¶ms)) >= PARSERR_TOKENNOTFOUND) { switch (cmd) { case TOKEN_TEMPLATE: if(FAILED(LoadFile((char*)params))) cmd = PARSERR_GENERIC; break; case TOKEN_NAME: SetName((char*)params); break; case TOKEN_CAPTION: SetCaption((char*)params); break; case TOKEN_BACK: SAFE_DELETE(m_Back); m_Back = new CUITiledImage(Game); if(!m_Back || FAILED(m_Back->LoadFile((char*)params))) { SAFE_DELETE(m_Back); cmd = PARSERR_GENERIC; } break; case TOKEN_BACK_INACTIVE: SAFE_DELETE(m_BackInactive); m_BackInactive = new CUITiledImage(Game); if(!m_BackInactive || FAILED(m_BackInactive->LoadFile((char*)params))) { SAFE_DELETE(m_BackInactive); cmd = PARSERR_GENERIC; } break; case TOKEN_IMAGE: SAFE_DELETE(m_Image); m_Image = new CBSprite(Game); if(!m_Image || FAILED(m_Image->LoadFile((char*)params))) { SAFE_DELETE(m_Image); cmd = PARSERR_GENERIC; } break; case TOKEN_IMAGE_INACTIVE: SAFE_DELETE(m_ImageInactive); m_ImageInactive = new CBSprite(Game); if(!m_ImageInactive || FAILED(m_ImageInactive->LoadFile((char*)params))) { SAFE_DELETE(m_ImageInactive); cmd = PARSERR_GENERIC; } break; case TOKEN_FONT: if(m_Font) Game->m_FontStorage->RemoveFont(m_Font); m_Font = Game->m_FontStorage->AddFont((char*)params); if(!m_Font) cmd = PARSERR_GENERIC; break; case TOKEN_FONT_INACTIVE: if(m_FontInactive) Game->m_FontStorage->RemoveFont(m_FontInactive); m_FontInactive = Game->m_FontStorage->AddFont((char*)params); if(!m_FontInactive) cmd = PARSERR_GENERIC; break; case TOKEN_TITLE: SetText((char*)params); Game->m_StringTable->Expand(&m_Text); break; case TOKEN_TITLE_ALIGN: if(CBPlatform::stricmp((char*)params, "left")==0) m_TitleAlign = TAL_LEFT; else if(CBPlatform::stricmp((char*)params, "right")==0) m_TitleAlign = TAL_RIGHT; else m_TitleAlign = TAL_CENTER; break; case TOKEN_TITLE_RECT: parser.ScanStr((char*)params, "%d,%d,%d,%d", &m_TitleRect.left, &m_TitleRect.top, &m_TitleRect.right, &m_TitleRect.bottom); break; case TOKEN_DRAG_RECT: parser.ScanStr((char*)params, "%d,%d,%d,%d", &m_DragRect.left, &m_DragRect.top, &m_DragRect.right, &m_DragRect.bottom); break; case TOKEN_X: parser.ScanStr((char*)params, "%d", &m_PosX); break; case TOKEN_Y: parser.ScanStr((char*)params, "%d", &m_PosY); break; case TOKEN_WIDTH: parser.ScanStr((char*)params, "%d", &m_Width); break; case TOKEN_HEIGHT: parser.ScanStr((char*)params, "%d", &m_Height); break; case TOKEN_CURSOR: SAFE_DELETE(m_Cursor); m_Cursor = new CBSprite(Game); if(!m_Cursor || FAILED(m_Cursor->LoadFile((char*)params))) { SAFE_DELETE(m_Cursor); cmd = PARSERR_GENERIC; } break; case TOKEN_BUTTON: { CUIButton* btn = new CUIButton(Game); if(!btn || FAILED(btn->LoadBuffer(params, false))) { SAFE_DELETE(btn); cmd = PARSERR_GENERIC; } else { btn->m_Parent = this; m_Widgets.Add(btn); } } break; case TOKEN_STATIC: { CUIText* text = new CUIText(Game); if(!text || FAILED(text->LoadBuffer(params, false))) { SAFE_DELETE(text); cmd = PARSERR_GENERIC; } else { text->m_Parent = this; m_Widgets.Add(text); } } break; case TOKEN_EDIT: { CUIEdit* edit = new CUIEdit(Game); if(!edit || FAILED(edit->LoadBuffer(params, false))) { SAFE_DELETE(edit); cmd = PARSERR_GENERIC; } else { edit->m_Parent = this; m_Widgets.Add(edit); } } break; case TOKEN_WINDOW: { CUIWindow* win = new CUIWindow(Game); if(!win || FAILED(win->LoadBuffer(params, false))) { SAFE_DELETE(win); cmd = PARSERR_GENERIC; } else { win->m_Parent = this; m_Widgets.Add(win); } } break; case TOKEN_TRANSPARENT: parser.ScanStr((char*)params, "%b", &m_Transparent); break; case TOKEN_SCRIPT: AddScript((char*)params); break; case TOKEN_PARENT_NOTIFY: parser.ScanStr((char*)params, "%b", &m_ParentNotify); break; case TOKEN_PAUSE_MUSIC: parser.ScanStr((char*)params, "%b", &m_PauseMusic); break; case TOKEN_DISABLED: parser.ScanStr((char*)params, "%b", &m_Disable); break; case TOKEN_VISIBLE: parser.ScanStr((char*)params, "%b", &m_Visible); break; case TOKEN_MENU: parser.ScanStr((char*)params, "%b", &m_IsMenu); break; case TOKEN_IN_GAME: parser.ScanStr((char*)params, "%b", &m_InGame); break; case TOKEN_CLIP_CONTENTS: parser.ScanStr((char*)params, "%b", &m_ClipContents); break; case TOKEN_FADE_COLOR: parser.ScanStr((char*)params, "%d,%d,%d", &FadeR, &FadeG, &FadeB); m_FadeBackground = true; break; case TOKEN_FADE_ALPHA: parser.ScanStr((char*)params, "%d", &FadeA); m_FadeBackground = true; break; case TOKEN_EDITOR_PROPERTY: ParseEditorProperty(params, false); break; case TOKEN_ALPHA_COLOR: parser.ScanStr((char*)params, "%d,%d,%d", &ar, &ag, &ab); break; case TOKEN_ALPHA: parser.ScanStr((char*)params, "%d", &alpha); break; default: if(FAILED(Game->WindowLoadHook(this, (char**)&Buffer, (char**)params))) { cmd = PARSERR_GENERIC; } } } if (cmd == PARSERR_TOKENNOTFOUND) { Game->LOG(0, "Syntax error in WINDOW definition"); return E_FAIL; } if (cmd == PARSERR_GENERIC) { Game->LOG(0, "Error loading WINDOW definition"); return E_FAIL; } CorrectSize(); if(alpha != 0 && ar==0 && ag == 0 && ab == 0) { ar = ag = ab = 255; } m_AlphaColor = DRGBA(ar, ag, ab, alpha); if(m_FadeBackground) m_FadeColor = DRGBA(FadeR, FadeG, FadeB, FadeA); m_FocusedWidget = NULL; return S_OK; }
void CDrawTextTextScene::OnLoad() { CUIButton* back = (CUIButton*)get("back"); back->AddClickListen(this,(OnBtnClick)&CDrawTextTextScene::OnBtnbackClick); }