Code: Select all
IGUIButton* button;
m_pGUINavigationWindow = m_pGUIEnvironment->addWindow(rect<s32>(0,0,220,415),false,0,0,GUI_NAV_WINDOW);
m_pGUINavigationWindow->setVisible(false);
m_pGUINavigationWindow->setDrawTitlebar(false);
m_pGUINavigationWindow->getCloseButton()->setVisible(false);
m_pGUIEnvironment->addImage(m_pDriver->getTexture("media/navigation.png"),position2di(2,7),true,m_pGUINavigationWindow);
button = m_pGUIEnvironment->addButton (rect<s32>(10,60,100,90),m_pGUINavigationWindow, GT_ALLSTOP, L"Stop", L"Auto-stop Craft");
button->setPressedImage(m_pDriver->getTexture("media/red.png"));
button->setImage(m_pDriver->getTexture("media/blue.png"));
button->setUseAlphaChannel(true);
button->setDrawBorder(0);
Code: Select all
bool CGameManager::OnEvent(const SEvent& event)
{
if (!m_pDriver)
return false;
if (event.EventType == EET_KEY_INPUT_EVENT)
{
events.m_bKeys[event.KeyInput.Key] = event.KeyInput.PressedDown;
// std::cout << "Key: " << event.KeyInput.Key << std::endl;
// std::cout << "Char: " << char(event.KeyInput.Char) << std::endl;
}
if (event.EventType == EET_GUI_EVENT)
{
s32 id = event.GUIEvent.Caller->getID();
IGUIEnvironment* env = m_pDevice->getGUIEnvironment();
switch (event.GUIEvent.EventType)
{
case EGET_ELEMENT_FOCUSED:
{
//
env->setFocus(0);
// return true;
break;
}
case EGET_BUTTON_CLICKED:
{
events.guiButtons[id] = true;
if(id == GT_ALLSTOP)
{
printf("tst\n");
}
env->setFocus(0);
break;
}
case EGET_CHECKBOX_CHANGED:
{
// IGUIElement* root = env->getRootGUIElement();
// IGUICheckBox* checkBox = (IGUICheckBox*)root->getElementFromId(id,true);
events.checkBoxId = id;
env->setFocus(0);
break;
}
case EGET_LISTBOX_CHANGED:
{
IGUIElement* root = env->getRootGUIElement();
IGUIListBox* lBox = (IGUIListBox*)root->getElementFromId(id,true);
if(lBox)
{
events.listBoxItem = lBox->getSelected();
events.listBoxEvent = true;
events.listBoxText = lBox->getListItem(events.listBoxItem );
// events.listBoxText = events.listBoxText.c_str();
env->setFocus(0);
}
break;
}
default:
{
break;
}
}
}
if (event.EventType == irr::EET_MOUSE_INPUT_EVENT)
{
switch (event.MouseInput.Event)
{
case EMIE_LMOUSE_PRESSED_DOWN:
events.MouseState.LeftButtonDown = true;
break;
case EMIE_LMOUSE_LEFT_UP:
events.MouseState.LeftButtonDown = false;
break;
case EMIE_MOUSE_MOVED:
events.MouseState.Position.X = event.MouseInput.X;
events.MouseState.Position.Y = event.MouseInput.Y;
break;
default:
// We won't use the wheel
break;
}
}
return false;
}
Now the odd part. The above is basically a carbon copy of another window, with child buttons and they work perfectly.
Code: Select all
void Gui::targetingWindow(IVideoDriver* m_pDriver)
{
IGUIButton* button;
m_pGUITargetingWindow = m_pGUIEnvironment->addWindow(rect<s32>(0,0,220,415),false,0,0,GUI_TARG_WINDOW);
m_pGUITargetingWindow->setVisible(false);
m_pGUITargetingWindow->setDrawTitlebar(false);
m_pGUITargetingWindow->getCloseButton()->setVisible(false);
m_pGUIEnvironment->addImage(m_pDriver->getTexture("media/targeting.png"),position2di(2,7),true,m_pGUITargetingWindow);
m_pGUIListBox = m_pGUIEnvironment->addListBox(rect<s32>(10,60,200,300),m_pGUITargetingWindow,GUI_TARGET_LIST,true);
m_pGUIListBox->setAutoScrollEnabled(true);
button = m_pGUIEnvironment->addButton (rect<s32>(10,310,100,340),m_pGUITargetingWindow, GT_TRACKTARGET, L"Track", L"Track Target");
button->setPressedImage(m_pDriver->getTexture("media/red.png"));
button->setImage(m_pDriver->getTexture("media/blue.png"));
button->setUseAlphaChannel(true);
button->setDrawBorder(0);
...
blahblahblah
Many thanks.