[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