diff options
Diffstat (limited to 'engines/mohawk/cursors.cpp')
-rw-r--r-- | engines/mohawk/cursors.cpp | 68 |
1 files changed, 24 insertions, 44 deletions
diff --git a/engines/mohawk/cursors.cpp b/engines/mohawk/cursors.cpp index 12c3ebfffe..152861b806 100644 --- a/engines/mohawk/cursors.cpp +++ b/engines/mohawk/cursors.cpp @@ -141,36 +141,6 @@ void MystCursorManager::setDefaultCursor() { #endif -NECursorManager::NECursorManager(const Common::String &appName) { - _exe = new Common::NEResources(); - - if (!_exe->loadFromEXE(appName)) { - // Not all have cursors anyway, so this is not a problem - delete _exe; - _exe = nullptr; - } -} - -NECursorManager::~NECursorManager() { - delete _exe; -} - -void NECursorManager::setCursor(uint16 id) { - if (_exe) { - Graphics::WinCursorGroup *cursorGroup = Graphics::WinCursorGroup::createCursorGroup(*_exe, id); - - if (cursorGroup) { - Graphics::Cursor *cursor = cursorGroup->cursors[0].cursor; - CursorMan.replaceCursor(cursor); - delete cursorGroup; - return; - } - } - - // Last resort (not all have cursors) - setDefaultCursor(); -} - MacCursorManager::MacCursorManager(const Common::String &appName) { if (!appName.empty()) { _resFork = new Common::MacResManager(); @@ -241,31 +211,41 @@ void LivingBooksCursorManager_v2::setCursor(const Common::String &name) { setCursor(id); } -PECursorManager::PECursorManager(const Common::String &appName) { - Common::PEResources *exe = new Common::PEResources(); - if (!exe->loadFromEXE(appName)) { - // Not all have cursors anyway, so this is not a problem - return; +NECursorManager::NECursorManager(const Common::String &appName) { + Common::NEResources *exe = new Common::NEResources(); + if (exe->loadFromEXE(appName)) { + // Not all have cursors anyway, so it's not a problem if this fails + loadCursors(exe); } + delete exe; +} - const Common::Array<Common::WinResourceID> cursorGroups = exe->getNameList(Common::kWinGroupCursor); - - _cursors.resize(cursorGroups.size()); - for (uint i = 0; i < cursorGroups.size(); i++) { - _cursors[i].id = cursorGroups[i].getID(); - _cursors[i].cursorGroup = Graphics::WinCursorGroup::createCursorGroup(*exe, cursorGroups[i]); +PECursorManager::PECursorManager(const Common::String &appName) { + Common::PEResources *exe = new Common::PEResources(); + if (exe->loadFromEXE(appName)) { + // Not all have cursors anyway, so it's not a problem if this fails + loadCursors(exe); } - delete exe; } -PECursorManager::~PECursorManager() { +WinCursorManager::~WinCursorManager() { for (uint i = 0; i < _cursors.size(); i++) { delete _cursors[i].cursorGroup; } } -void PECursorManager::setCursor(uint16 id) { +void WinCursorManager::loadCursors(Common::WinResources *exe) { + const Common::Array<Common::WinResourceID> cursorGroups = exe->getIDList(Common::kWinGroupCursor); + + _cursors.resize(cursorGroups.size()); + for (uint i = 0; i < cursorGroups.size(); i++) { + _cursors[i].id = cursorGroups[i].getID(); + _cursors[i].cursorGroup = Graphics::WinCursorGroup::createCursorGroup(exe, cursorGroups[i]); + } +} + +void WinCursorManager::setCursor(uint16 id) { for (uint i = 0; i < _cursors.size(); i++) { if (_cursors[i].id == id) { Graphics::Cursor *cursor = _cursors[i].cursorGroup->cursors[0].cursor; |