From 72c6d19d7f4a3b40a5521cdd361278b4d5514043 Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 10 Mar 2020 13:26:01 -0700 Subject: [PATCH] Menu now works --- BaseButtonInstance.cpp | 6 +++++- ButtonListener.cpp | 1 + ButtonListener.h | 3 ++- G3DTest.vcproj | 16 ++++++++++++---- GuiRoot.cpp | 21 +++++++++++++++++++-- GuiRoot.h | 1 + Tool.h | 5 +++-- ToolbarListener.cpp | 23 +++++++++++++++++++++++ ToolbarListener.h | 13 +++++++++++++ 9 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 ToolbarListener.cpp create mode 100644 ToolbarListener.h diff --git a/BaseButtonInstance.cpp b/BaseButtonInstance.cpp index b1fb23f..8c92859 100644 --- a/BaseButtonInstance.cpp +++ b/BaseButtonInstance.cpp @@ -20,7 +20,11 @@ void BaseButtonInstance::render(RenderDevice* rd) BaseButtonInstance::~BaseButtonInstance(void) { - delete listener; + if(listener != NULL && listener->doDelete) + { + delete listener; + listener = NULL; + } } void BaseButtonInstance::setButtonListener(ButtonListener* buttonListener) diff --git a/ButtonListener.cpp b/ButtonListener.cpp index 8d6c5d0..7d1f9e9 100644 --- a/ButtonListener.cpp +++ b/ButtonListener.cpp @@ -4,6 +4,7 @@ ButtonListener::ButtonListener() { + doDelete = true; } ButtonListener::~ButtonListener(void) diff --git a/ButtonListener.h b/ButtonListener.h index bbf2e40..b334c63 100644 --- a/ButtonListener.h +++ b/ButtonListener.h @@ -1,6 +1,6 @@ #pragma once //#include "Application.h" -//#include "BaseButtonInstance.h" +#include "BaseButtonInstance.h" class BaseButtonInstance; @@ -10,6 +10,7 @@ class ButtonListener ButtonListener(); ~ButtonListener(void); virtual void onButton1MouseClick(BaseButtonInstance*); + bool doDelete; //virtual void onMouseOver(); //TODO //virtual void onMouseOut(); //TODO //virtual void onButton1MouseDown(); //TODO diff --git a/G3DTest.vcproj b/G3DTest.vcproj index 606f513..cd1ef4d 100644 --- a/G3DTest.vcproj +++ b/G3DTest.vcproj @@ -302,10 +302,6 @@ RelativePath=".\StringFunctions.cpp" > - - @@ -357,6 +353,10 @@ RelativePath=".\TextButtonInstance.cpp" > + + @@ -393,6 +393,10 @@ RelativePath=".\RotateButtonListener.cpp" > + + + + doDelete = false; g_fntdominant = GFont::fromFile(GetFileInPath("/content/font/dominant.fnt")); g_fntlighttrek = GFont::fromFile(GetFileInPath("/content/font/lighttrek.fnt")); @@ -51,6 +54,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0) button->setAllColorsSame(); button->boxOutlineColorOvr = Color3(0,255,255); button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F); + button->setButtonListener(toolbar); + toolbar->addButtonRef(button); button = makeTextButton(); @@ -66,7 +71,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0) button->setAllColorsSame(); button->boxOutlineColorOvr = Color3(0,255,255); button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F); - + button->setButtonListener(toolbar); + toolbar->addButtonRef(button); button = makeTextButton(); button->boxBegin = Vector2(0, -72); @@ -81,6 +87,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0) button->setAllColorsSame(); button->boxOutlineColorOvr = Color3(0,255,255); button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F); + button->setButtonListener(toolbar); + toolbar->addButtonRef(button); button = makeTextButton(); button->boxBegin = Vector2(0, -96); @@ -95,6 +103,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0) button->setAllColorsSame(); button->boxOutlineColorOvr = Color3(0,255,255); button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F); + button->setButtonListener(toolbar); + toolbar->addButtonRef(button); button = makeTextButton(); button->boxBegin = Vector2(0, -120); @@ -109,6 +119,8 @@ GuiRoot::GuiRoot() : _message(""), _messageTime(0) button->setAllColorsSame(); button->boxOutlineColorOvr = Color3(0,255,255); button->boxColorDn = Color4(button->boxColor.r,button->boxColor.g,button->boxColor.b, 0.2F); + button->setButtonListener(toolbar); + toolbar->addButtonRef(button); //Top bar button = makeTextButton(); @@ -503,6 +515,11 @@ void GuiRoot::update() } } +GuiRoot::~GuiRoot() +{ + delete toolbar; +} + void GuiRoot::onMouseLeftUp(G3D::RenderDevice* renderDevice, int x,int y) { std::vector instances_2D = this->getAllChildren(); diff --git a/GuiRoot.h b/GuiRoot.h index 546c5b5..a19339f 100644 --- a/GuiRoot.h +++ b/GuiRoot.h @@ -9,6 +9,7 @@ class GuiRoot : public Instance { public: GuiRoot(); + GuiRoot::~GuiRoot(); TextButtonInstance* makeTextButton(); void drawButtons(RenderDevice* rd); ImageButtonInstance* makeImageButton(G3D::TextureRef newImage, G3D::TextureRef overImage, G3D::TextureRef downImage, G3D::TextureRef disableImage); diff --git a/Tool.h b/Tool.h index 4489938..2336dbe 100644 --- a/Tool.h +++ b/Tool.h @@ -11,6 +11,7 @@ public: void OnButton1MouseUp(); void OnButton2MouseUp(); void OnButton3MouseUp(); - void OnKeyPress(); - void OnKeyRelease(); + void OnMouseScroll(); + void OnKeyDown(); + void OnKeyUp(); }; diff --git a/ToolbarListener.cpp b/ToolbarListener.cpp new file mode 100644 index 0000000..f551275 --- /dev/null +++ b/ToolbarListener.cpp @@ -0,0 +1,23 @@ +#include "ToolbarListener.h" +#include "Globals.h" +#include "StringFunctions.h" +#include "Application.h" + +void ToolbarListener::onButton1MouseClick(BaseButtonInstance* btn) +{ + if(TextButtonInstance* button = dynamic_cast(btn)) + { + for(size_t i = 0; i < btns.size(); i++) + btns[i]->selected = false; + button->selected = true; + if(button->title == "Model") g_usableApp->navigateToolbox("http://androdome.com/res/ClientToolbox.php"); + else if(button->title == "Surface") g_usableApp->navigateToolbox(GetFileInPath("/content/page/surface.html")); + else if(button->title == "Color") g_usableApp->navigateToolbox(GetFileInPath("/content/page/color.html")); + else if(button->title == "Controller") g_usableApp->navigateToolbox(GetFileInPath("/content/page/controller.html")); + else if(button->title == "Hopper") g_usableApp->navigateToolbox(GetFileInPath("/content/page/hopper.html")); + } +} +void ToolbarListener::addButtonRef(BaseButtonInstance* button) +{ + btns.push_back(button); +} \ No newline at end of file diff --git a/ToolbarListener.h b/ToolbarListener.h new file mode 100644 index 0000000..21079a4 --- /dev/null +++ b/ToolbarListener.h @@ -0,0 +1,13 @@ +#pragma once +#include "buttonlistener.h" +#pragma once +#include + +class ToolbarListener : public ButtonListener +{ +public: + void onButton1MouseClick(BaseButtonInstance* button); + void addButtonRef(BaseButtonInstance* button); +private: + std::vector btns; +};