[Scummvm-git-logs] scummvm master -> cb6a107499bf96a25a68e887b2f6c927001d996a
bluegr
bluegr at gmail.com
Sun May 16 23:08:43 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
cb6a107499 SCUMM: Limit x-range of selection workaround to Hebrew versions
Commit: cb6a107499bf96a25a68e887b2f6c927001d996a
https://github.com/scummvm/scummvm/commit/cb6a107499bf96a25a68e887b2f6c927001d996a
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2021-05-17T02:08:21+03:00
Commit Message:
SCUMM: Limit x-range of selection workaround to Hebrew versions
Fixes bug #12552
Changed paths:
engines/scumm/saveload.cpp
engines/scumm/verbs.cpp
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 980db16710..458b8f87db 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -814,8 +814,8 @@ static void syncWithSerializer(Common::Serializer &s, ObjectData &od) {
s.syncAsByte(od.flags, VER(46));
}
-static void syncWithSerializer(Common::Serializer &s, VerbSlot &vs) {
- s.syncAsSint16LE(vs.origLeft, VER(8));
+static void syncWithSerializer(Common::Serializer &s, VerbSlot &vs, bool isISR) {
+ s.syncAsSint16LE(!isISR ? vs.curRect.left : vs.origLeft, VER(8));
s.syncAsSint16LE(vs.curRect.top, VER(8));
s.syncAsSint16LE(vs.curRect.right, VER(8));
s.syncAsSint16LE(vs.curRect.bottom, VER(8));
@@ -837,10 +837,18 @@ static void syncWithSerializer(Common::Serializer &s, VerbSlot &vs) {
s.syncAsByte(vs.center, VER(8));
s.syncAsByte(vs.prep, VER(8));
s.syncAsUint16LE(vs.imgindex, VER(8));
- if (s.isLoading() && s.getVersion() >= 8)
+ if (isISR && s.isLoading() && s.getVersion() >= 8)
vs.curRect.left = vs.origLeft;
}
+static void syncWithSerializerNonISR(Common::Serializer &s, VerbSlot &vs) {
+ syncWithSerializer(s, vs, false);
+}
+
+static void syncWithSerializerISR(Common::Serializer &s, VerbSlot &vs) {
+ syncWithSerializer(s, vs, true);
+}
+
static void syncWithSerializer(Common::Serializer &s, ScriptSlot &ss) {
s.syncAsUint32LE(ss.offs, VER(8));
s.syncAsSint32LE(ss.delay, VER(8));
@@ -1224,7 +1232,7 @@ void ScummEngine::saveLoadWithSerializer(Common::Serializer &s) {
//
// Save/load misc stuff
//
- s.syncArray(_verbs, _numVerbs, syncWithSerializer);
+ s.syncArray(_verbs, _numVerbs, _language != Common::HE_ISR ? syncWithSerializerNonISR : syncWithSerializerISR);
s.syncArray(vm.nest, 16, syncWithSerializer);
s.syncArray(_sentence, 6, syncWithSerializer);
s.syncArray(_string, 6, syncWithSerializer);
diff --git a/engines/scumm/verbs.cpp b/engines/scumm/verbs.cpp
index 3f6d6164cf..a393d7d873 100644
--- a/engines/scumm/verbs.cpp
+++ b/engines/scumm/verbs.cpp
@@ -1084,7 +1084,7 @@ void ScummEngine::drawVerb(int verb, int mode) {
restoreVerbBG(verb);
_string[4].charset = vs->charset_nr;
- _string[4].xpos = vs->origLeft;
+ _string[4].xpos = _language != Common::HE_ISR ? vs->curRect.left : vs->origLeft;
_string[4].ypos = vs->curRect.top;
_string[4].right = _screenWidth - 1;
_string[4].center = vs->center;
@@ -1110,7 +1110,9 @@ void ScummEngine::drawVerb(int verb, int mode) {
drawString(4, msg);
_charset->_center = tmp;
- vs->curRect.left = _charset->_str.left;
+ if (_language == Common::HE_ISR)
+ vs->curRect.left = _charset->_str.left;
+
vs->curRect.right = _charset->_str.right;
vs->curRect.bottom = _charset->_str.bottom;
vs->oldRect = _charset->_str;
More information about the Scummvm-git-logs
mailing list