From 105e5f22a5aad0f7a2a17f18798ba67179360ce7 Mon Sep 17 00:00:00 2001 From: Tyler Hinrichs <86966799+tylernh10@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:20:09 -0500 Subject: [PATCH] implement fix --- Menu.cpp | 9 ++++++++- header-files/Menu.h | 13 ++++++++++--- source-files/ECRealObserver.cpp | 6 +++--- source-files/test-gv.cpp | 12 ++++++++---- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/Menu.cpp b/Menu.cpp index da3fe8d..0866a70 100644 --- a/Menu.cpp +++ b/Menu.cpp @@ -28,7 +28,14 @@ void Menu::initFont(ALLEGRO_FONT* f) { font = f; } -void Menu::draw() { +void Menu::timer(int mode) { + if (!mode) { + editModeMouseFunction.timer(); + } + else if (mode == 1) { + insertModeMouseFunction.timer(); + } + // draw background al_draw_bitmap(background, 0, 0, 0); diff --git a/header-files/Menu.h b/header-files/Menu.h index d2d72df..a968719 100644 --- a/header-files/Menu.h +++ b/header-files/Menu.h @@ -1,7 +1,12 @@ #ifndef MENU_H #define MENU_H +class Menu; +class EditModeMouseFunction; +class InsertModeMouseFunction; + #include "ECGraphicViewImp.h" +#include "MouseFunction.h" #include #include @@ -11,8 +16,8 @@ using namespace std; class Menu { public: - Menu() {} - ~Menu() {} // TODO: destory all bitmaps + Menu(EditModeMouseFunction& e, InsertModeMouseFunction& i): editModeMouseFunction(e), insertModeMouseFunction(i) {} + ~Menu() {} // TODO: destroy all bitmaps void initDivider(ALLEGRO_BITMAP* div); void initBackground(ALLEGRO_BITMAP* bg); @@ -21,7 +26,7 @@ class Menu { void initColorButtons(vector bts); void initColorHoverButtons(vector bts); void initFont(ALLEGRO_FONT* f); - void draw(); // draws all menu buttons + void timer(int mode); // draws all menu buttons and take care of trace shapes void detectMouse(int px, int py); private: ALLEGRO_BITMAP* divider; @@ -53,6 +58,8 @@ class Menu { "Save", "Help" }; + EditModeMouseFunction& editModeMouseFunction; + InsertModeMouseFunction& insertModeMouseFunction; }; #endif diff --git a/source-files/ECRealObserver.cpp b/source-files/ECRealObserver.cpp index 61b699b..0c301c4 100644 --- a/source-files/ECRealObserver.cpp +++ b/source-files/ECRealObserver.cpp @@ -17,7 +17,7 @@ void ECDrawObserver :: Update() { x->Draw(view); view.SetRedraw(true); } - menu->draw(); // draw menu buttons + menu->timer(ctrl.getMode()); // draw menu buttons int x, y; view.GetCursorPosition(x, y); //cout << "(" << x << "," << y << ")" << endl; @@ -42,9 +42,9 @@ void ECMouseObserver::Update() { if (view.GetCurrEvent() == ECGV_EV_MOUSE_BUTTON_DOWN) { mouseFunction.mouseDown(); } - if (view.GetCurrEvent() == ECGV_EV_TIMER) { + /*if (view.GetCurrEvent() == ECGV_EV_TIMER) { mouseFunction.timer(); - } + }*/ } } diff --git a/source-files/test-gv.cpp b/source-files/test-gv.cpp index 1d81123..5fe2018 100644 --- a/source-files/test-gv.cpp +++ b/source-files/test-gv.cpp @@ -37,14 +37,20 @@ CompositeShape* parseComposite(int numMembers, ifstream& f, ShapesModel* model) // Test graphical view code int real_main(int argc, char** argv) { + // Initialize view const int widthWin = 1000, heightWin = 1000; ECGraphicViewImp view(widthWin, heightWin); + + // Initialize Model and Controller ShapesModel* model = new ShapesModel; - // TODO: adjust window title Controller ctrl(model); - Menu* menu = new Menu; + + // Mouse Functions --> these will be accessed in the menu and in the mouse observers + InsertModeMouseFunction insertMouseFunctionality(view, ctrl); + EditModeMouseFunction editMouseFunctionality(view, ctrl); // menu init + Menu* menu = new Menu(editMouseFunctionality, insertMouseFunctionality); menu->initFont(al_load_ttf_font("IBMPlexSans-Regular.ttf", 18, 0)); menu->initDivider(al_load_bitmap("res/divider.jpg")); @@ -140,8 +146,6 @@ int real_main(int argc, char** argv) ECRightArrowObserver* RightKeyObserver = new ECRightArrowObserver(view, ctrl); // Mouse Observers Init - InsertModeMouseFunction insertMouseFunctionality(view, ctrl); - EditModeMouseFunction editMouseFunctionality(view, ctrl); ECMouseObserver* EditModeMouseObserver = new ECMouseObserver(view, ctrl, 0, editMouseFunctionality); ECMouseObserver* InsertModeMouseObserver = new ECMouseObserver(view, ctrl, 1, insertMouseFunctionality);