diff options
author | Filippos Karapetis | 2016-01-14 23:35:02 +0200 |
---|---|---|
committer | Filippos Karapetis | 2016-01-14 23:41:35 +0200 |
commit | 924d43b7aac241b9205af640b0a6788e4abc99bf (patch) | |
tree | b00890676a2eece1289b26fd694298c6742032e9 /engines/lab/interface.cpp | |
parent | 46fdd5e7a48e0312c3fb523058f98e1d11f068e5 (diff) | |
download | scummvm-rg350-924d43b7aac241b9205af640b0a6788e4abc99bf.tar.gz scummvm-rg350-924d43b7aac241b9205af640b0a6788e4abc99bf.tar.bz2 scummvm-rg350-924d43b7aac241b9205af640b0a6788e4abc99bf.zip |
LAB: Better separation of the event and interface code
Diffstat (limited to 'engines/lab/interface.cpp')
-rw-r--r-- | engines/lab/interface.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/engines/lab/interface.cpp b/engines/lab/interface.cpp index 41a9047ba9..b0a83a90bf 100644 --- a/engines/lab/interface.cpp +++ b/engines/lab/interface.cpp @@ -107,6 +107,37 @@ Button *EventManager::checkNumButtonHit(ButtonList *buttonList, Common::KeyCode return nullptr; } +Button *EventManager::checkButtonHit(ButtonList *buttonList, Common::Point pos) { + for (ButtonList::iterator buttonItr = buttonList->begin(); buttonItr != buttonList->end(); ++buttonItr) { + Button *button = *buttonItr; + Common::Rect buttonRect(button->_x, button->_y, button->_x + button->_image->_width - 1, button->_y + button->_image->_height - 1); + + if (buttonRect.contains(pos) && button->_isEnabled) { + _hitButton = button; + return button; + } + } + + return nullptr; +} + +void EventManager::attachButtonList(ButtonList *buttonList) { + if (_screenButtonList != buttonList) + _lastButtonHit = nullptr; + + _screenButtonList = buttonList; +} + +Button *EventManager::getButton(uint16 id) { + for (ButtonList::iterator buttonItr = _screenButtonList->begin(); buttonItr != _screenButtonList->end(); ++buttonItr) { + Button *button = *buttonItr; + if (button->_buttonId == id) + return button; + } + + return nullptr; +} + IntuiMessage *EventManager::getMsg() { static IntuiMessage message; |