I made 2 wrapper classes to make easy the work of handling buttons and windows. The problem is when I show a FrameWindow it becomes inactive, I can't click anywhere inside it not move it.
It was based on wallaber work
GuiObj.h
Code: Select all
#ifndef __GUIOBJ_H__
#define __GUIOBJ_H__
#include "eCGFWPrereqs.h"
#include <CEGUI.h>
#include "GameState.h"
namespace eCGFW
{
///////////////////////////////////////////////////////////
// class StandardButton
// definition: use this class to create standart buttons
// with the playsound function already subscribed
class eCGFW_Export StandardButton
{
CEGUI::PushButton* mButton;
public:
StandardButton(GameState* state, CEGUI::String &name);
~StandardButton();
CEGUI::PushButton* getButton() { return mButton; }
void setText(CEGUI::String text);
bool playClickSound( const CEGUI::EventArgs& e )
{
return _owner->playClickSound(e);
}
void assignPlayClickSound()
{
using namespace CEGUI;
mButton->subscribeEvent( PushButton::EventClicked,
Event::Subscriber( &StandardButton::playClickSound, this));
}
GameState *_owner;
};
///////////////////////////////////////////////////////////
// class BasicDialog
// definition: this is the base for any dialog for the game
class eCGFW_Export BasicDialog
{
public:
BasicDialog(GameState *state, CEGUI::String name);
virtual ~BasicDialog();
void setButtonText(Ogre::String &ok, Ogre::String &cancel)
{
mButtonOK->setText(ok);
mButtonCancel->setText(cancel);
}
virtual void show( Ogre::String& text, Ogre::String& msg )
{
mWasOkClicked = false;
mWindow->setText( (std::string)text );
mText->setText( (std::string)msg );
mWindow->show();
}
virtual void hide()
{
mWindow->hide();
}
bool wasOkClicked() { return mWasOkClicked; }
CEGUI::FrameWindow* getCEGUIWindow() { return mWindow; }
private:
bool okClicked( const CEGUI::EventArgs& e )
{
mWasOkClicked = true;
hide();
return true;
}
bool cancelClicked( const CEGUI::EventArgs& e )
{
hide();
return true;
}
public:
bool mWasOkClicked;
bool mPlaySounds;
CEGUI::FrameWindow* mWindow;
CEGUI::DefaultWindow* mText;
StandardButton* mButtonOK;
StandardButton* mButtonCancel;
GameState *_owner;
};
}
#endif
GuiObj.cpp
Code: Select all
#include "GuiObj.h"
namespace eCGFW
{
StandardButton::StandardButton(GameState* state, CEGUI::String &name)
{
using namespace CEGUI;
_owner = state;
mButton = static_cast<PushButton*>(CEGUI::WindowManager::getSingleton().getWindow(name));
assignPlayClickSound();
}
StandardButton::~StandardButton()
{
using namespace CEGUI;
WindowManager::getSingleton().destroyWindow( mButton );
}
void StandardButton::setText(CEGUI::String text)
{
mButton->setText(text);
}
BasicDialog::BasicDialog(GameState *state, CEGUI::String name)
{
using namespace CEGUI;
// vars
mWasOkClicked = false;
_owner = state;
// create windows
mWindow = static_cast<FrameWindow*>(CEGUI::WindowManager::getSingleton().getWindow(name));
mText = static_cast<DefaultWindow*>(CEGUI::WindowManager::getSingleton().getWindow(name + "/Msg"));
mButtonCancel = new StandardButton(state, name + "/Cancel");
mButtonOK = new StandardButton(state, name + "/OK");
mButtonOK->getButton()->subscribeEvent( PushButton::EventClicked,
Event::Subscriber( &BasicDialog::okClicked, this));
mButtonCancel->getButton()->subscribeEvent( PushButton::EventClicked,
Event::Subscriber( &BasicDialog::cancelClicked, this));
hide();
}
BasicDialog::~BasicDialog()
{
// cleanup.
using namespace CEGUI;
delete mButtonOK;
delete mButtonCancel;
WindowManager::getSingleton().destroyWindow( mWindow );
}
}
mainmenu.xml script
Code: Select all
<?xml version="1.0" ?>
<GUILayout>
<Window Type="DefaultGUISheet" Name="root">
<Window Type="DefaultGUISheet" Name="MainMenu">
<Window Type="TaharezLook/FrameWindow" Name="MainMenu/Career">
<Property Name="UnifiedPosition" Value="{{0.0,0},{0.0,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.23,0},{0.2,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.23,0},{0.2,0}}" />
<Property Name="UnifiedSize" Value="{{0.23,0},{0.2,0}}" />
<Property Name="Text" Value="Career: My Avatar" />
<Property Name="Alpha" Value="0.75" />
<Property Name="CloseButtonEnabled" Value="False" />
<Window Type="TaharezLook/Button" Name="MainMenu/Career/Continue">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.20,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Continue" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Checkbox" Name="MainMenu/Career/AutoSave" >
<Property Name="Text" >Auto-save</Property>
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.50,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Career/SaveBtn">
<Property Name="UnifiedPosition" Value="{{0.5,0},{0.50,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.101,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.101,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.101,0},{0.05,0}}" />
<Property Name="Text" Value="Save" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/ProgressBar" Name="MainMenu/Career/ProgressBar" >
<Property Name="StepSize" Value="0.01" />
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.80,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.03,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.03,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.03,0}}" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
</Window>
<Window Type="TaharezLook/FrameWindow" Name="MainMenu/PlayOnLine">
<Property Name="UnifiedPosition" Value="{{0.0,0},{0.5,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.23,0},{0.2,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.23,0},{0.2,0}}" />
<Property Name="UnifiedSize" Value="{{0.23,0},{0.2,0}}" />
<Property Name="Text" Value="Play OnLine" />
<Property Name="Alpha" Value="0.75" />
<Property Name="CloseButtonEnabled" Value="False" />
<Window Type="TaharezLook/Button" Name="MainMenu/PlayOnLine/Lan">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.4,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Lan" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/PlayOnLine/Internet">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.7,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Internet" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
</Window>
<Window Type="TaharezLook/FrameWindow" Name="MainMenu/Options">
<Property Name="UnifiedPosition" Value="{{0.77,0},{0.0,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.23,0},{0.5,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.23,0},{0.5,0}}" />
<Property Name="UnifiedSize" Value="{{0.23,0},{0.5,0}}" />
<Property Name="Text" Value="Options" />
<Property Name="Alpha" Value="0.75" />
<Property Name="CloseButtonEnabled" Value="False" />
<Window Type="TaharezLook/Button" Name="MainMenu/Options/CarSelection">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.20,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Car Selection" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Options/Avatar">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.3,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Avatar" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Options/Controls">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.4,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Controls" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Options/Video">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.5,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Video" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Options/Audio">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.6,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.205,0},{0.05,0}}" />
<Property Name="Text" Value="Audio" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Quit">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.9,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="Text" Value="Quit" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/Credits">
<Property Name="UnifiedPosition" Value="{{0.8,0},{0.9,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="Text" Value="Credits" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
</Window>
<Window Type="TaharezLook/FrameWindow" Name="MainMenu/DlgQuit">
<Property Name="UnifiedPosition" Value="{{0.2,0},{0.30,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.4,0},{0.2,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.4,0},{0.2,0}}" />
<Property Name="UnifiedSize" Value="{{0.4,0},{0.2,0}}" />
<Property Name="Text" Value="Confirmation" />
<Property Name="Alpha" Value="0.75" />
<Property Name="CloseButtonEnabled" Value="False" />
<Window Type="TaharezLook/StaticText" Name="MainMenu/DlgQuit/Msg">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.1,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="Text" Value="Do you really wanna quit?" />
<Property Name="HorzFormatting" Value="LeftAligned" />
<Property Name="Text" Value="Name" />
<Property Name="FrameEnabled" Value="False" />
<Property Name="BackgroundEnabled" Value="False" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/DlgQuit/OK">
<Property Name="UnifiedPosition" Value="{{0.05,0},{0.4,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="Text" Value="Yes" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
<Window Type="TaharezLook/Button" Name="MainMenu/DlgQuit/Cancel">
<Property Name="UnifiedPosition" Value="{{0.5,0},{0.4,0}}" />
<Property Name="UnifiedMaxSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedMinSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="UnifiedSize" Value="{{0.1,0},{0.05,0}}" />
<Property Name="Text" Value="No" />
<Property Name="InheritsAlpha" Value="False" />
</Window>
</Window>
</Window>
</GUILayout>
Please, is it a bug? Or am I doing something worng with this code?
Thanks,
Dirso