From b3e9c972f1f43b6f571acbc3e00bcbcb23bce891 Mon Sep 17 00:00:00 2001 From: Eric Fry Date: Tue, 24 Apr 2018 22:28:16 +1000 Subject: ILLUSIONS: Improve naming of variables and methods in menu system. Start work on keyboard menu support and menu background fill. --- engines/illusions/duckman/menusystem_duckman.cpp | 14 ++--- engines/illusions/menusystem.cpp | 65 ++++++++++++++---------- engines/illusions/menusystem.h | 18 +++---- 3 files changed, 53 insertions(+), 44 deletions(-) diff --git a/engines/illusions/duckman/menusystem_duckman.cpp b/engines/illusions/duckman/menusystem_duckman.cpp index 5ac5e29a56..621a49cd1f 100644 --- a/engines/illusions/duckman/menusystem_duckman.cpp +++ b/engines/illusions/duckman/menusystem_duckman.cpp @@ -103,14 +103,14 @@ BaseMenu *DuckmanMenuSystem::createLoadGameMenu() { BaseMenu *DuckmanMenuSystem::createOptionsMenu() { BaseMenu *menu = new BaseMenu(this, 0x00120003, 12, 17, 11, 27, 1); - menu->addText(" GAME OPTIONS"); + menu->addText(" GAME OPTIONS @@@@"); menu->addText("--------------------------------------"); - menu->addMenuItem(new MenuItem("SFX Volume @@{~~~~~~~~~~~~|~~~}", new MenuActionReturnChoice(this, 21))); - menu->addMenuItem(new MenuItem("Music Volume @@@{~~~~~~~~~~~~|~~~}", new MenuActionReturnChoice(this, 21))); - menu->addMenuItem(new MenuItem("Speech Volume {~~~~~~~~~~~~|~~~}", new MenuActionReturnChoice(this, 21))); - menu->addMenuItem(new MenuItem("Text Duration @@@{~~~~~~~~~~~~|~~~}", new MenuActionReturnChoice(this, 21))); - menu->addMenuItem(new MenuItem("Restore Defaults", new MenuActionReturnChoice(this, 21))); - menu->addMenuItem(new MenuItem("Back", new MenuActionLeaveMenu(this))); + menu->addMenuItem(new MenuItem("SFX Volume @@{~~~~~~~~~~~~|~~~} @@@", new MenuActionReturnChoice(this, 21))); + menu->addMenuItem(new MenuItem("Music Volume @@@{~~~~~~~~~~~~|~~~} @@@", new MenuActionReturnChoice(this, 21))); + menu->addMenuItem(new MenuItem("Speech Volume {~~~~~~~~~~~~|~~~} @@@", new MenuActionReturnChoice(this, 21))); + menu->addMenuItem(new MenuItem("Text Duration @@@{~~~~~~~~~~~~|~~~} @@@", new MenuActionReturnChoice(this, 21))); + menu->addMenuItem(new MenuItem("Restore Defaults @@", new MenuActionReturnChoice(this, 21))); + menu->addMenuItem(new MenuItem("Back @@@", new MenuActionLeaveMenu(this))); return menu; } diff --git a/engines/illusions/menusystem.cpp b/engines/illusions/menusystem.cpp index f32bdc6a78..fe82a7f776 100644 --- a/engines/illusions/menusystem.cpp +++ b/engines/illusions/menusystem.cpp @@ -50,9 +50,9 @@ void MenuItem::executeAction() { // BaseMenu -BaseMenu::BaseMenu(BaseMenuSystem *menuSystem, uint32 fontId, byte field8, byte fieldA, byte fieldC, byte fieldE, +BaseMenu::BaseMenu(BaseMenuSystem *menuSystem, uint32 fontId, byte field8, byte fieldA, byte textColor, byte fieldE, uint defaultMenuItemIndex) - : _menuSystem(menuSystem), _fontId(fontId), _field8(field8), _fieldA(fieldA), _fieldC(fieldC), _fieldE(fieldE), + : _menuSystem(menuSystem), _fontId(fontId), _field8(field8), _fieldA(fieldA), _textColor(textColor), _fieldE(fieldE), _defaultMenuItemIndex(defaultMenuItemIndex) { } @@ -133,8 +133,8 @@ void BaseMenuSystem::enterSubMenu(BaseMenu *menu) { _hoveredMenuItemIndex = _hoveredMenuItemIndex3; _hoveredMenuItemIndex2 = _hoveredMenuItemIndex3; setMouseCursorToMenuItem(_hoveredMenuItemIndex); - placeActor318(); - placeActor323(); + placeActorHoverBackground(); + placeActorTextColorRect(); } void BaseMenuSystem::leaveSubMenu() { @@ -148,8 +148,8 @@ void BaseMenuSystem::leaveSubMenu() { _hoveredMenuItemIndex = _hoveredMenuItemIndex3; _hoveredMenuItemIndex2 = _hoveredMenuItemIndex3; setMouseCursorToMenuItem(_hoveredMenuItemIndex); - initActor318(); - placeActor323(); + initActorHoverBackground(); + placeActorTextColorRect(); } void BaseMenuSystem::enterSubMenuById(int menuId) { @@ -216,7 +216,7 @@ bool BaseMenuSystem::calcMenuItemIndexAtPoint(Common::Point pt, uint &menuItemIn } void BaseMenuSystem::setMousePos(Common::Point &mousePos) { - //TODO Strange behavior _vm->_input->setCursorPosition(mousePos); + _vm->_input->setCursorPosition(mousePos); Control *mouseCursor = _vm->getObjectControl(0x40004); mouseCursor->_actor->_position = mousePos; } @@ -237,7 +237,7 @@ void BaseMenuSystem::activateMenu(BaseMenu *menu) { } -void BaseMenuSystem::initActor318() { +void BaseMenuSystem::initActorHoverBackground() { Control *v0 = _vm->getObjectControl(0x4013E); if (!v0) { WidthHeight dimensions; @@ -247,11 +247,11 @@ void BaseMenuSystem::initActor318() { v0 = _vm->getObjectControl(0x4013E); v0->_flags |= 8; } - placeActor318(); + placeActorHoverBackground(); v0->appearActor(); } -void BaseMenuSystem::placeActor318() { +void BaseMenuSystem::placeActorHoverBackground() { Control *v0 = _vm->getObjectControl(0x4013E); v0->fillActor(0); @@ -272,24 +272,24 @@ void BaseMenuSystem::placeActor318() { charHeight = frameDimensions._height; v0->drawActorRect(Common::Rect(textInfoDimensions._width - 1, charHeight - 1), _activeMenu->_fieldE); - - updateActor318(); + + updateActorHoverBackground(); } -void BaseMenuSystem::updateActor318() { +void BaseMenuSystem::updateActorHoverBackground() { Control *v0 = _vm->getObjectControl(0x4013E); WRect rect; calcMenuItemRect(_hoveredMenuItemIndex2 - _hoveredMenuItemIndex3 + 1, rect); v0->setActorPosition(rect._topLeft); } -void BaseMenuSystem::hideActor318() { +void BaseMenuSystem::hideActorHoverBackground() { Control *v0 = _vm->getObjectControl(0x4013E); if (v0) v0->disappearActor(); } -void BaseMenuSystem::initActor323() { +void BaseMenuSystem::initActorTextColorRect() { Control *v0 = _vm->getObjectControl(0x40143); if (!v0) { WidthHeight dimensions; @@ -299,11 +299,11 @@ void BaseMenuSystem::initActor323() { v0 = _vm->getObjectControl(0x40143); v0->_flags |= 8; } - placeActor323(); + placeActorTextColorRect(); v0->appearActor(); } -void BaseMenuSystem::placeActor323() { +void BaseMenuSystem::placeActorTextColorRect() { Control *v0 = _vm->getObjectControl(0x40143); v0->fillActor(0); @@ -312,19 +312,19 @@ void BaseMenuSystem::placeActor323() { _vm->_screenText->getTextInfoPosition(textInfoPosition); _vm->_screenText->getTextInfoDimensions(textInfoDimensions); - /* TODO + /* TODO if (_activeMenu->_field8 && _activeMenu->_fieldA != _activeMenu->_field8) { textInfoDimensions._width -= 2; textInfoDimensions._height -= 6; } - */ + */ v0->setActorPosition(textInfoPosition); - v0->drawActorRect(Common::Rect(textInfoDimensions._width - 1, textInfoDimensions._height - 1), _activeMenu->_fieldC); + v0->drawActorRect(Common::Rect(textInfoDimensions._width - 1, textInfoDimensions._height - 1), _activeMenu->_textColor); } -void BaseMenuSystem::hideActor323() { +void BaseMenuSystem::hideActorTextColorRect() { Control *v0 = _vm->getObjectControl(0x40143); if (v0) v0->disappearActor(); @@ -351,8 +351,8 @@ void BaseMenuSystem::openMenu(BaseMenu *menu) { _hoveredMenuItemIndex = _hoveredMenuItemIndex3; _hoveredMenuItemIndex2 = _hoveredMenuItemIndex3; setMouseCursorToMenuItem(_hoveredMenuItemIndex); - initActor318(); - initActor323(); + initActorHoverBackground(); + initActorTextColorRect(); _vm->_input->discardAllEvents(); } @@ -362,8 +362,8 @@ void BaseMenuSystem::closeMenu() { _menuStack.pop(); } _vm->_screenText->removeText(); - hideActor318(); - hideActor323(); + hideActorHoverBackground(); + hideActorTextColorRect(); Control *mouseCursor = _vm->getObjectControl(0x40004); setGameState(_savedGameState); mouseCursor->_actor->_actorIndex = _savedCursorActorIndex; @@ -448,16 +448,16 @@ void BaseMenuSystem::update(Control *cursorControl) { if (calcMenuItemIndexAtPoint(mousePos, newHoveredMenuItemIndex)) { if (newHoveredMenuItemIndex != _hoveredMenuItemIndex) { if (_hoveredMenuItemIndex == 0) - initActor318(); + initActorHoverBackground(); _hoveredMenuItemIndex = newHoveredMenuItemIndex; _hoveredMenuItemIndex2 = newHoveredMenuItemIndex; setMenuCursorNum(2); - updateActor318(); + updateActorHoverBackground(); resetTimeOut = true; } } else if (_hoveredMenuItemIndex != 0) { setMenuCursorNum(1); - hideActor318(); + hideActorHoverBackground(); _hoveredMenuItemIndex = 0; resetTimeOut = true; } @@ -471,8 +471,17 @@ void BaseMenuSystem::update(Control *cursorControl) { handleClick(_activeMenu->_defaultMenuItemIndex, mousePos); } else if (_vm->_input->pollEvent(kEventUp)) { // TODO handleUpKey(); + if (_hoveredMenuItemIndex > 0) { + setMouseCursorToMenuItem(--_hoveredMenuItemIndex); + _hoveredMenuItemIndex2 = _hoveredMenuItemIndex; + updateActorHoverBackground(); + } + } else if (_vm->_input->pollEvent(kEventDown)) { // TODO handleDownKey(); + setMouseCursorToMenuItem(++_hoveredMenuItemIndex); + _hoveredMenuItemIndex2 = _hoveredMenuItemIndex; + updateActorHoverBackground(); } updateTimeOut(resetTimeOut); diff --git a/engines/illusions/menusystem.h b/engines/illusions/menusystem.h index 6262cefc32..a7ef083f65 100644 --- a/engines/illusions/menusystem.h +++ b/engines/illusions/menusystem.h @@ -54,7 +54,7 @@ protected: class BaseMenu { public: - BaseMenu(BaseMenuSystem *menuSystem, uint32 fontId, byte field8, byte fieldA, byte fieldC, byte fieldE, + BaseMenu(BaseMenuSystem *menuSystem, uint32 fontId, byte field8, byte fieldA, byte textColor, byte fieldE, uint defaultMenuItemIndex); virtual ~BaseMenu(); void addText(const Common::String text); @@ -68,7 +68,7 @@ public://protected://TODO typedef Common::Array MenuItems; BaseMenuSystem *_menuSystem; uint32 _fontId; - byte _field8, _fieldA, _fieldC, _fieldE; + byte _field8, _fieldA, _textColor, _fieldE; uint _field2C18; uint _defaultMenuItemIndex; Common::Array _text; @@ -153,14 +153,14 @@ protected: void updateTimeOut(bool resetTimeOut); - void initActor318(); - void placeActor318(); - void updateActor318(); - void hideActor318(); + void initActorHoverBackground(); + void placeActorHoverBackground(); + void updateActorHoverBackground(); + void hideActorHoverBackground(); - void initActor323(); - void placeActor323(); - void hideActor323(); + void initActorTextColorRect(); + void placeActorTextColorRect(); + void hideActorTextColorRect(); virtual BaseMenu *getMenuById(int menuId) = 0; }; -- cgit v1.2.3