[Scummvm-git-logs] scummvm master -> 5f93dd7cd9b5b0b108bc863d3e72ca71e8982c85
ysj1173886760
42030331+ysj1173886760 at users.noreply.github.com
Mon Aug 16 00:42:24 UTC 2021
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
8e9f802e87 DIRECTOR: introduce winCursor to director. Loading win cursor at initially.
2472c763be DIRECTOR: try to load custom cursor from exe file in win platform.
5f93dd7cd9 DIRECTOR: set arrow cursor for default custom cursor in windows platform.
Commit: 8e9f802e87af962213758f6a84c3e03a3aaaeaa7
https://github.com/scummvm/scummvm/commit/8e9f802e87af962213758f6a84c3e03a3aaaeaa7
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-08-16T08:41:36+08:00
Commit Message:
DIRECTOR: introduce winCursor to director. Loading win cursor at initially.
Changed paths:
engines/director/director.cpp
engines/director/director.h
engines/director/resource.cpp
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 367578e2b1..99f6646ded 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -129,6 +129,9 @@ DirectorEngine::~DirectorEngine() {
delete it->_value;
}
+ for (Common::HashMap<uint, Graphics::Cursor *>::iterator it = _winCursor.begin(); it != _winCursor.end(); it++)
+ delete it->_value;
+
clearPalettes();
}
diff --git a/engines/director/director.h b/engines/director/director.h
index 2ac178ec37..5d35b892bd 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -258,6 +258,7 @@ public:
char _dirSeparator;
Common::HashMap<Common::String, Archive *, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _openResFiles;
+ Common::HashMap<uint, Graphics::Cursor *> _winCursor;
protected:
Common::Error run() override;
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 86ebf44009..e50b74c632 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -26,6 +26,7 @@
#include "common/macresman.h"
#include "common/substream.h"
#include "common/winexe.h"
+#include "graphics/wincursor.h"
#include "director/director.h"
#include "director/cast.h"
@@ -235,6 +236,15 @@ void Window::loadEXE(const Common::String movie) {
delete info;
}
+
+ Common::Array<Common::WinResourceID> idList = exe->getIDList(Common::kWinGroupCursor);
+ for (uint i = 0; i < idList.size(); i++) {
+ Graphics::WinCursorGroup *group = Graphics::WinCursorGroup::createCursorGroup(exe, idList[i]);
+ for (uint j = 0; j < group->cursors.size(); j++) {
+ g_director->_winCursor.setVal(group->cursors[j].id.getID(), group->cursors[j].cursor);
+ }
+ }
+
delete exe;
exeStream->seek(-4, SEEK_END);
Commit: 2472c763be15320ba457379b161352175dbd8027
https://github.com/scummvm/scummvm/commit/2472c763be15320ba457379b161352175dbd8027
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-08-16T08:41:36+08:00
Commit Message:
DIRECTOR: try to load custom cursor from exe file in win platform.
Changed paths:
engines/director/cursor.cpp
engines/director/score.cpp
diff --git a/engines/director/cursor.cpp b/engines/director/cursor.cpp
index ea852e2234..3e2d4b9cda 100644
--- a/engines/director/cursor.cpp
+++ b/engines/director/cursor.cpp
@@ -184,6 +184,16 @@ void Cursor::readFromResource(int resourceId) {
}
}
+ // for win platform, try the cursor from exe
+ if (!readSuccessful && g_director->getPlatform() == Common::kPlatformWindows) {
+ // i'm not sure, in jman we have cursor id 2, 3, 4. and custom cursor id 128 129 130
+ int id = (resourceId & 0x7f) + 2;
+ if (g_director->_winCursor.contains(id)) {
+ resetCursor(Graphics::kMacCursorCustom, false, id);
+ readSuccessful = true;
+ }
+ }
+
// fallback method. try to use builtin cursor by regarding resourceId as a single byte.
if (!readSuccessful)
readBuiltinType(resourceId & 0x7f);
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 519bcca0e1..fba7be37fc 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -598,7 +598,11 @@ void Score::renderCursor(Common::Point pos, bool forceUpdate) {
if (!forceUpdate && _currentCursor == _channels[spriteId]->_cursor)
return;
- _vm->_wm->replaceCursor(_channels[spriteId]->_cursor._cursorType, &_channels[spriteId]->_cursor);
+ // try to use the cursor read from exe file.
+ if (g_director->getPlatform() == Common::kPlatformWindows && _channels[spriteId]->_cursor._cursorType == Graphics::kMacCursorCustom)
+ _vm->_wm->replaceCursor(_channels[spriteId]->_cursor._cursorType, g_director->_winCursor[_channels[spriteId]->_cursor._cursorResId]);
+ else
+ _vm->_wm->replaceCursor(_channels[spriteId]->_cursor._cursorType, &_channels[spriteId]->_cursor);
_currentCursor = _channels[spriteId]->_cursor.getRef();
return;
}
Commit: 5f93dd7cd9b5b0b108bc863d3e72ca71e8982c85
https://github.com/scummvm/scummvm/commit/5f93dd7cd9b5b0b108bc863d3e72ca71e8982c85
Author: ysj1173886760 (1173886760 at qq.com)
Date: 2021-08-16T08:41:36+08:00
Commit Message:
DIRECTOR: set arrow cursor for default custom cursor in windows platform.
Changed paths:
engines/director/cursor.cpp
diff --git a/engines/director/cursor.cpp b/engines/director/cursor.cpp
index 3e2d4b9cda..04b5ad57da 100644
--- a/engines/director/cursor.cpp
+++ b/engines/director/cursor.cpp
@@ -184,6 +184,13 @@ void Cursor::readFromResource(int resourceId) {
}
}
+ // TODO: figure out where to read custom cursor in windows platform
+ // currently, let's just set arrow for default one.
+ if (g_director->getPlatform() == Common::kPlatformWindows) {
+ resetCursor(Graphics::kMacCursorArrow, true, resourceId);
+ break;
+ }
+
// for win platform, try the cursor from exe
if (!readSuccessful && g_director->getPlatform() == Common::kPlatformWindows) {
// i'm not sure, in jman we have cursor id 2, 3, 4. and custom cursor id 128 129 130
More information about the Scummvm-git-logs
mailing list