From 3ee06b6c6220e4f3a01e769f5aeca02ea506abaa Mon Sep 17 00:00:00 2001 From: andreja6 Date: Tue, 1 May 2018 21:00:46 -0700 Subject: [PATCH] Made guiroot a child of datamodel --- DataModelInstance.cpp | 9 ++++- DataModelInstance.h | 1 + main.cpp | 88 +++++++++++++++++++++---------------------- 3 files changed, 53 insertions(+), 45 deletions(-) diff --git a/DataModelInstance.cpp b/DataModelInstance.cpp index eeaab1b..d79e5e9 100644 --- a/DataModelInstance.cpp +++ b/DataModelInstance.cpp @@ -2,12 +2,14 @@ WorkspaceInstance* workspace; +Instance* guiRoot; DataModelInstance::DataModelInstance(void) { workspace = new WorkspaceInstance(); + guiRoot = new Instance(); children.push_back(workspace); - className = "DataModel"; + className = "dataModel"; } DataModelInstance::~DataModelInstance(void) @@ -18,3 +20,8 @@ WorkspaceInstance* DataModelInstance::getWorkspace() { return workspace; } + +Instance* DataModelInstance::getGuiRoot() +{ + return guiRoot; +} diff --git a/DataModelInstance.h b/DataModelInstance.h index 400a71d..9142a57 100644 --- a/DataModelInstance.h +++ b/DataModelInstance.h @@ -9,4 +9,5 @@ public: DataModelInstance(void); ~DataModelInstance(void); WorkspaceInstance* getWorkspace(); + Instance* getGuiRoot(); }; diff --git a/main.cpp b/main.cpp index b6cfe3c..1a37e68 100644 --- a/main.cpp +++ b/main.cpp @@ -27,7 +27,6 @@ HWND hwnd; static std::string title = ""; -static std::vector instances_2D; static DataModelInstance* dataModel; GFontRef fntdominant = NULL; GFontRef fntlighttrek = NULL; @@ -231,7 +230,7 @@ TextButtonInstance* makeTextButton() { TextButtonInstance* part = new TextButtonInstance(); // instances.push_back(part); - instances_2D.push_back(part); +// instances_2D.push_back(part); return part; } @@ -239,7 +238,7 @@ ImageButtonInstance* makeImageButton(G3D::TextureRef newImage = NULL, G3D::Textu { ImageButtonInstance* part = new ImageButtonInstance(newImage,overImage, downImage, disableImage); // instances.push_back(part); - instances_2D.push_back(part); +// instances_2D.push_back(part); return part; } @@ -345,7 +344,7 @@ void ModeSelectionListener::onButton1MouseClick(BaseButtonInstance* button) { CoordinateFrame frame = usableApp->debugCamera.getCoordinateFrame(); - + std::vector instances_2D = dataModel->getGuiRoot()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { if(instances_2D.at(i)->name == "Cursor" || instances_2D.at(i)->name == "Resize" || instances_2D.at(i)->name == "Arrows") @@ -371,7 +370,7 @@ void initGUI() button->boxBegin = Vector2(0, -24); button->boxEnd = Vector2(80, 0); button->floatBottom = true; - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3(0,255,255); button->textOutlineColor = Color4::clear(); @@ -383,7 +382,7 @@ void initGUI() button->boxBegin = Vector2(0, -48); button->boxEnd = Vector2(80, -24); button->floatBottom = true; - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3(0,255,255); button->textOutlineColor = Color4::clear(); @@ -395,7 +394,7 @@ void initGUI() button->boxBegin = Vector2(0, -72); button->boxEnd = Vector2(80, -48); button->floatBottom = true; - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3(0,255,255); button->textOutlineColor = Color4::clear(); @@ -407,7 +406,7 @@ void initGUI() button->boxBegin = Vector2(0, -96); button->boxEnd = Vector2(80, -72); button->floatBottom = true; - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3(0,255,255); button->textOutlineColor = Color4::clear(); @@ -419,7 +418,7 @@ void initGUI() button->boxBegin = Vector2(0, -120); button->boxEnd = Vector2(80, -96); button->floatBottom = true; - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3(0,255,255); button->boxOutlineColor = Color3(0,255,255); @@ -430,7 +429,7 @@ void initGUI() button = makeTextButton(); button->boxBegin = Vector2(0, 0); button->boxEnd = Vector2(125, 25); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3::white(); button->boxColor = Color4::clear(); @@ -443,7 +442,7 @@ void initGUI() button = makeTextButton(); button->boxBegin = Vector2(125, 0); button->boxEnd = Vector2(250, 25); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3::white(); button->boxColor = Color4::clear(); @@ -456,7 +455,7 @@ void initGUI() button = makeTextButton(); button->boxBegin = Vector2(250, 0); button->boxEnd = Vector2(375, 25); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3::white(); button->boxColor = Color4::clear(); @@ -469,7 +468,7 @@ void initGUI() button = makeTextButton(); button->boxBegin = Vector2(375, 0); button->boxEnd = Vector2(500, 25); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3::white(); button->boxColor = Color4::clear(); @@ -482,7 +481,7 @@ void initGUI() button = makeTextButton(); button->boxBegin = Vector2(500, 0); button->boxEnd = Vector2(625, 25); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->font = fntlighttrek; button->textColor = Color3::white(); button->boxColor = Color4::clear(); @@ -505,7 +504,7 @@ void initGUI() button->setAllColorsSame(); button->font = fntlighttrek; button->fontLocationRelativeTo = Vector2(10, 0); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button = makeTextButton(); @@ -519,7 +518,7 @@ void initGUI() button->setAllColorsSame(); button->font = fntlighttrek; button->fontLocationRelativeTo = Vector2(10, 0); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button = makeTextButton(); button->boxBegin = Vector2(0,265); @@ -532,7 +531,7 @@ void initGUI() button->setAllColorsSame(); button->font = fntlighttrek; button->fontLocationRelativeTo = Vector2(10, 0); - button->setParent(dataModel); + button->setParent(dataModel->getGuiRoot()); button->name = "Duplicate"; button->setButtonListener(new GUDButtonListener()); @@ -541,7 +540,7 @@ void initGUI() instance->name = "go"; instance->size = Vector2(65,65); instance->position = Vector2(6.5, 25); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); @@ -552,14 +551,14 @@ void initGUI() Texture::fromFile(GetFileInPath("/content/images/ArrowTool_ds.png"))); instance->size = Vector2(50,50); instance->position = Vector2(15, 90); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "Cursor"; instance->setButtonListener(new ModeSelectionListener()); instance = makeImageButton(Texture::fromFile(GetFileInPath("/content/images/ScaleTool.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ovr.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_dn.png")),Texture::fromFile(GetFileInPath("/content/images/ScaleTool_ds.png"))); instance->size = Vector2(40,40); instance->position = Vector2(0, 140); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "Resize"; instance->setButtonListener(new ModeSelectionListener()); @@ -571,7 +570,7 @@ void initGUI() Texture::fromFile(GetFileInPath("/content/images/MoveTool_ds.png"))); instance->size = Vector2(40,40); instance->position = Vector2(40, 140); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "Arrows"; instance->setButtonListener(new ModeSelectionListener()); @@ -582,7 +581,7 @@ void initGUI() Texture::fromFile(GetFileInPath("/content/images/SelectionRotate_ds.png"))); instance->size = Vector2(30,30); instance->position = Vector2(10, 175); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "Rotate"; instance->setButtonListener(new RotateButtonListener()); @@ -593,7 +592,7 @@ void initGUI() Texture::fromFile(GetFileInPath("/content/images/SelectionTilt_ds.png"))); instance->size = Vector2(30,30); instance->position = Vector2(40, 175); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "Tilt"; instance->setButtonListener(new RotateButtonListener()); @@ -605,7 +604,7 @@ void initGUI() Texture::fromFile(GetFileInPath("/content/images/Delete_ds.png"))); instance->size = Vector2(40,46); instance->position = Vector2(20, 284); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "Delete"; instance->setButtonListener(new DeleteListener()); @@ -617,7 +616,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-77, -90); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "ZoomIn"; instance->setButtonListener(new CameraButtonListener()); @@ -629,7 +628,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-77, -31); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "ZoomOut"; instance->setButtonListener(new CameraButtonListener()); @@ -641,7 +640,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-110, -50); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "PanLeft"; instance->setButtonListener(new CameraButtonListener()); @@ -653,7 +652,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-45, -50); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "PanRight"; instance->setButtonListener(new CameraButtonListener()); @@ -665,7 +664,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-77, -60); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "CenterCam"; instance->setButtonListener(new CameraButtonListener()); @@ -677,7 +676,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-105, -75); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "TiltUp"; instance->setButtonListener(new CameraButtonListener()); @@ -689,7 +688,7 @@ void initGUI() instance->floatBottom = true; instance->floatRight = true; instance->position = Vector2(-40, -75); - instance->setParent(dataModel); + instance->setParent(dataModel->getGuiRoot()); instance->name = "TiltDown"; instance->setButtonListener(new CameraButtonListener()); } @@ -823,19 +822,18 @@ void Demo::onCleanup() { void Demo::onLogic() { // Add non-simulation game logic and AI code here - for(size_t i = 0; i < instances_2D.size(); i++) + + Instance* obj = dataModel->getGuiRoot()->findFirstChild("Delete"); + if(obj != NULL) { - if(instances_2D.at(i)->name == "Delete") - { - ImageButtonInstance* button = (ImageButtonInstance*)instances_2D.at(i); - if(selectedInstance == NULL) - button->disabled = true; - else - button->disabled = false; - - } + ImageButtonInstance* button = (ImageButtonInstance*)obj; + if(selectedInstance == NULL) + button->disabled = true; + else + button->disabled = false; } + } @@ -1110,6 +1108,7 @@ void Demo::onUserInput(UserInput* ui) { if(ui->keyPressed(SDL_LEFT_MOUSE_KEY)) { bool onGUI = false; + std::vector instances_2D = dataModel->getGuiRoot()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { if(instances_2D.at(i)->getClassName() == "TextButton" || instances_2D.at(i)->getClassName() == "ImageButton") @@ -1155,7 +1154,7 @@ void Demo::onUserInput(UserInput* ui) { if(ui->keyReleased(SDL_LEFT_MOUSE_KEY)) { - + std::vector instances_2D = dataModel->getGuiRoot()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { if(instances_2D.at(i)->getClassName() == "TextButton" || instances_2D.at(i)->getClassName() == "ImageButton") @@ -1225,10 +1224,11 @@ bool mouseInArea(float point1x, float point1y, float point2x, float point2y) void drawButtons(RenderDevice* rd) { + std::vector instances_2D = dataModel->getGuiRoot()->getChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { Instance* instance = instances_2D.at(i); - if((instance->getClassName() == "TextButton" || instance->getClassName() == "ImageButton") && instance->getParent() == dataModel) + if(instance->getClassName() == "TextButton" || instance->getClassName() == "ImageButton") { BaseButtonInstance* tbi = (BaseButtonInstance*)instance; tbi->drawObj(rd, Vector2(mousex, mousey), mouseButton1Down); @@ -1794,7 +1794,7 @@ int main(int argc, char** argv) { app.run(); } - catch(std::exception) + catch(...) { OnError(-1); }