// event checkBoxCheckedChanged(checkBoxName) bool OnCheckboxCheckStateChanged(const CEGUI::EventArgs &eventArgs) { CEvents * pEvents = g_pClient->GetEvents(); String eventName("checkBoxCheckedChanged"); if(!pEvents->IsEventRegistered(eventName)) return false; CEGUI::Window * pWindow = static_cast<const CEGUI::WindowEventArgs&>(eventArgs).window; CSquirrel * pScript = g_pClient->GetClientScriptManager()->GetGUIManager()->GetScript(pWindow); CSquirrelArguments pArguments; pArguments.push(pWindow->getName().c_str()); pEvents->Call(eventName, &pArguments, pScript); return true; }
// event buttonClick(buttonName, bState) // TODO: remove it. We have better alternative guiClick (OnClick) for any gui element bool OnButtonClick(const CEGUI::EventArgs &eventArgs) { CEvents * pEvents = g_pClient->GetEvents(); String eventName("buttonClick"); if(!pEvents->IsEventRegistered(eventName)) return false; CEGUI::Window * pWindow = static_cast<const CEGUI::WindowEventArgs&>(eventArgs).window; CSquirrel * pScript = g_pClient->GetClientScriptManager()->GetGUIManager()->GetScript(pWindow); CSquirrelArguments pArguments; pArguments.push(pWindow->getName().c_str()); pArguments.push(0); // FIXME or what? pEvents->Call(eventName, &pArguments, pScript); return true; }
// event guiMouseLeave(guiName) bool OnMouseLeaves(const CEGUI::EventArgs &eventArgs) { CEvents * pEvents = g_pClient->GetEvents(); String eventName("guiMouseLeave"); if(!pEvents->IsEventRegistered(eventName)) return false; const CEGUI::MouseEventArgs eArgs = static_cast<const CEGUI::MouseEventArgs&>(eventArgs); CEGUI::Window * pWindow = eArgs.window; CSquirrel * pScript = g_pClient->GetClientScriptManager()->GetGUIManager()->GetScript(pWindow); CSquirrelArguments pArguments; pArguments.push(pWindow->getName().c_str()); pEvents->Call(eventName, &pArguments, pScript); return true; }
// event guiKeyPress(string guiName, string key, string keyState) bool OnKeyPress(const CEGUI::KeyEventArgs &eArgs, String keyState) { CEvents * pEvents = g_pClient->GetEvents(); String eventName("guiKeyPress"); if(!pEvents->IsEventRegistered(eventName)) return false; CEGUI::Window * pWindow = eArgs.window; CSquirrel * pScript = g_pClient->GetClientScriptManager()->GetGUIManager()->GetScript(pWindow); CEGUI::Key::Scan keyCode = eArgs.scancode; CSquirrelArguments pArguments; pArguments.push(eArgs.window->getName().c_str()); pArguments.push(GetKeyNameByScan(eArgs.scancode)); pArguments.push(keyState); CSquirrelArgument pReturn = pEvents->Call(eventName, &pArguments, pScript); return pReturn.GetBool(); }
// event windowClose(windowName) bool OnWindowClose(const CEGUI::EventArgs &eventArgs) { CEvents * pEvents = g_pClient->GetEvents(); String eventName("windowClose"); if(!pEvents->IsEventRegistered(eventName)) return false; CEGUI::Window * pWindow = static_cast<const CEGUI::WindowEventArgs&>(eventArgs).window; CSquirrel * pScript = g_pClient->GetClientScriptManager()->GetGUIManager()->GetScript(pWindow); CSquirrelArguments pArguments; pArguments.push(pWindow->getName().c_str()); // Event handler must return 1 to close window, otherwise, 0. CSquirrelArgument pReturn = pEvents->Call(eventName, &pArguments, pScript); if(pReturn.GetInteger()) pWindow->hide(); return true; }
// event rowClick(string guiName) bool OnRowClick(const CEGUI::EventArgs &eventArgs) { CEvents * pEvents = g_pClient->GetEvents(); String eventName ("rowClick"); if(!pEvents->IsEventRegistered(eventName)) return false; const CEGUI::WindowEventArgs eArgs = static_cast<const CEGUI::WindowEventArgs&>(eventArgs); CEGUI::Window * pWindow = eArgs.window; CSquirrel * pScript = g_pClient->GetClientScriptManager()->GetGUIManager()->GetScript(pWindow); CEGUI::MultiColumnList * pMultiColumnList = static_cast<CEGUI::MultiColumnList*>(eArgs.window); int iItemID = pMultiColumnList->getItemRowIndex(pMultiColumnList->getFirstSelectedItem()); CSquirrelArguments pArguments; pArguments.push(eArgs.window->getName().c_str()); // Window Name pArguments.push(iItemID); // Row CLogFile::Printf("Value: %i",iItemID); pEvents->Call(eventName, &pArguments, pScript); return true; }