From d854ddfdd45ee8269f4856354416668d725d9328 Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Mon, 7 Apr 2025 19:44:51 -0700 Subject: [PATCH] Add callbacks, make library locations part of project now --- Blocks3D VS2003.vcproj | 9 +++++---- Blocks3D.exe.manifest | 4 ++-- src/include/DataModelV3/Gui/BaseButtonInstance.h | 2 ++ src/source/DataModelV3/Gui/BaseButtonInstance.cpp | 9 +++++++++ src/source/DataModelV3/Gui/GuiRootInstance.cpp | 10 +++++++--- 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Blocks3D VS2003.vcproj b/Blocks3D VS2003.vcproj index 3a75a92..b832ddc 100644 --- a/Blocks3D VS2003.vcproj +++ b/Blocks3D VS2003.vcproj @@ -27,7 +27,7 @@ FavorSizeOrSpeed="1" OmitFramePointers="TRUE" WholeProgramOptimization="TRUE" - AdditionalIncludeDirectories="".\src\include"" + AdditionalIncludeDirectories="C:\libraries\ode\include;C:\libraries\sdl\include;"C:\libraries\g3d-6_10\include";.\src\include" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;NO_SDL_MAIN;_ATL_STATIC_REGISTRY" StringPooling="TRUE" RuntimeLibrary="2" @@ -47,6 +47,7 @@ OutputFile="./Blocks3D.exe" LinkIncremental="1" SuppressStartupBanner="TRUE" + AdditionalLibraryDirectories="C:\libraries\sdl\lib\x86;C:\libraries\ode\lib\releaselib;"C:\libraries\g3d-6_10\win32-7-lib"" ProgramDatabaseFile=".\Release/Blocks3D.pdb" SubSystem="2" StackReserveSize="16777216" @@ -96,7 +97,7 @@ - + \ No newline at end of file diff --git a/src/include/DataModelV3/Gui/BaseButtonInstance.h b/src/include/DataModelV3/Gui/BaseButtonInstance.h index 06a7e2a..9dd1de3 100644 --- a/src/include/DataModelV3/Gui/BaseButtonInstance.h +++ b/src/include/DataModelV3/Gui/BaseButtonInstance.h @@ -12,6 +12,7 @@ namespace B3D{ virtual void drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown); virtual bool mouseInButton(float, float, RenderDevice* rd); virtual void onMouseClick(); + virtual void setCallback(void (*callback)(DataModelInstance * theDatamodel, BaseButtonInstance * theCaller, WPARAM wParam, LPARAM lParam)); void setActionCode(int actionCode); bool floatBottom; bool floatRight; @@ -21,5 +22,6 @@ namespace B3D{ protected: int actionCode; bool mouseInArea(float, float, float, float, float, float); + void (*callback)(DataModelInstance * theDatamodel, BaseButtonInstance * theCaller, WPARAM wParam, LPARAM lParam); }; } \ No newline at end of file diff --git a/src/source/DataModelV3/Gui/BaseButtonInstance.cpp b/src/source/DataModelV3/Gui/BaseButtonInstance.cpp index ed969d9..b1660eb 100644 --- a/src/source/DataModelV3/Gui/BaseButtonInstance.cpp +++ b/src/source/DataModelV3/Gui/BaseButtonInstance.cpp @@ -4,6 +4,7 @@ using namespace B3D; BaseButtonInstance::BaseButtonInstance(void) : Instance() { actionCode = 0; + callback = NULL; } void BaseButtonInstance::render(RenderDevice* rd) @@ -29,12 +30,20 @@ bool BaseButtonInstance::mouseInButton(float mousex, float mousey, RenderDevice* void BaseButtonInstance::onMouseClick() { + if(callback != NULL) + { + callback(this->getParentDataModel(), this, NULL, NULL); + } // if(listener != NULL) // { // listener->onButton1MouseClick(this); // } } +void BaseButtonInstance::setCallback(void (*callback)(DataModelInstance * theDatamodel, BaseButtonInstance * theCaller, WPARAM wParam, LPARAM lParam)) +{ + this->callback = callback; +} bool BaseButtonInstance::mouseInArea(float point1x, float point1y, float point2x, float point2y, float mousex, float mousey) { diff --git a/src/source/DataModelV3/Gui/GuiRootInstance.cpp b/src/source/DataModelV3/Gui/GuiRootInstance.cpp index 1fefeb8..6326cc0 100644 --- a/src/source/DataModelV3/Gui/GuiRootInstance.cpp +++ b/src/source/DataModelV3/Gui/GuiRootInstance.cpp @@ -22,6 +22,10 @@ using namespace B3D; #define VS03_WORKAROUND #endif +void menuCallback(DataModelInstance * theDataModel, BaseButtonInstance * theCaller, WPARAM wParam, LPARAM lParam) { + MessageBoxA(NULL, "Tomato", "Tomato", MB_OK); +} + ImageButtonInstance* GuiRootInstance::makeImageButton(G3D::TextureRef newImage = NULL, G3D::TextureRef overImage = NULL, G3D::TextureRef downImage = NULL, G3D::TextureRef disableImage = NULL) { //Oh come on @@ -65,7 +69,7 @@ TextButtonInstance* makeToolbarTextButton(std::string title, std::string name, V button->fontLocationRelativeTo = Vector2(10, 0); button->boxColorOvr = Color4(0.6F,0.6F,0.6F,0.4F); button->setAllColorsSame(); - //button->setButtonListener(menuListener); + button->setCallback(&menuCallback); return button; } @@ -150,7 +154,7 @@ GuiRootInstance::GuiRootInstance() : Instance(), _message(""), _messageTime(0) button->setParent(this); button->name = "MENU"; //TODO Define Action - //button->setButtonListener(menuListener); + button->setCallback(&menuCallback); ImageButtonInstance* instance = new ToggleImageButtonInstance( Texture::fromFile(VS03_WORKAROUND GetFileInPath("/content/images/Run.png")), @@ -162,7 +166,7 @@ GuiRootInstance::GuiRootInstance() : Instance(), _message(""), _messageTime(0) Texture::fromFile(VS03_WORKAROUND GetFileInPath("/content/images/Stop_dn.png")) ); //TODO Define Action - //instance->setButtonListener(menuListener); + instance->setCallback(&menuCallback); instance->name = "go"; instance->size = Vector2(65,65); instance->position = Vector2(6.5, 25);