nargil
21-08-2009 13:01:56
Did I forget about something ?
void DialogueGui::responseClick( MyGUI::WidgetPtr _sender, int left, int top, MyGUI::MouseButton btn )
is never called.
void DialogueGui::responseClick( MyGUI::WidgetPtr _sender, int left, int top, MyGUI::MouseButton btn )
is never called.
class DialogueGui : public wraps::BaseLayout
{
public:
DialogueGui(const std::string& _layout);
void ShowDialogue(Ogre::String dialogueName, Character* speaker);
MyGUI::WidgetPtr getBaseWidget() {return mMainWidget;}
protected:
MyGUI::EditPtr mDialogue;
MyGUI::EditPtr mResponses;
MyGUI::StaticImagePtr mImage;
void responseClick(MyGUI::WidgetPtr _sender, int left, int top, MyGUI::MouseButton btn);
};
DialogueGui::DialogueGui( const std::string& _layout ) : BaseLayout(_layout, nullptr)
{
assignWidget(mResponses,"_Responses");
assignWidget(mImage,"_Image");
assignWidget(mDialogue,"_Dialogue");
mDialogue->setEditStatic(true);
mResponses->setEditStatic(true);
mResponses->eventMouseButtonPressed = MyGUI::newDelegate(this, &DialogueGui::responseClick);
}
void DialogueGui::ShowDialogue( Ogre::String dialogueName, Character* speaker )
{
//cut
}
void DialogueGui::responseClick( MyGUI::WidgetPtr _sender, int left, int top, MyGUI::MouseButton btn )
{
std::cout << "x: " << left << " y: " << top << std::endl;
}
void GuiManager::showDialogue( Ogre::String dialogueEntry, Character* speaker )
{
GameEngine::getSingletonPtr()->setGameState(GS_MENU);
mGuiState=GUISTATE_Dialogue;
mDialogueGUI = new DialogueGui("Dialogue.layout");
mDialogueGUI->getBaseWidget()->eventMouseButtonClick = newDelegate(this, &GuiManager::hideDialogue);
MyGUI::WindowPtr mm = mDialogueGUI->getBaseWidget()->castType<MyGUI::Window>(true);
mm->setRealPosition(0.5,0.5);
MyGUI::IntPoint p = mm->getPosition();
mm->setPosition(p.left - mm->getWidth()/2, p.top - mm->getHeight()/2);
MyGUI::InputManager::getInstance().setKeyFocusWidget(mm);
mGUI->showPointer();
mDialogueGUI->ShowDialogue(dialogueEntry, speaker);
}
<?xml version="1.0" encoding="UTF-8"?>
<MyGUI type="Layout">
<Widget type="Window" skin="WindowCS" position="576 232 640 480" layer="Overlapped" name="_Main">
<Widget type="Edit" skin="WordWrap" position="10 300 620 150" layer="Overlapped" name="_Responses"/>
<Widget type="Edit" skin="WordWrap" position="250 10 380 280" layer="Overlapped" name="_Dialogue"/>
<Widget type="StaticImage" skin="StaticImage" position="10 10 240 280" layer="Overlapped" name="_Image"/>
</Widget>
</MyGUI>