[Scummvm-cvs-logs] SF.net SVN: scummvm: [22825] scummvm/trunk/engines/simon

kirben at users.sourceforge.net kirben at users.sourceforge.net
Thu Jun 1 19:36:04 CEST 2006


Revision: 22825
Author:   kirben
Date:     2006-06-01 19:35:04 -0700 (Thu, 01 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm/?rev=22825&view=rev

Log Message:
-----------
Improve Hebrew support

Modified Paths:
--------------
    scummvm/trunk/engines/simon/charset.cpp
    scummvm/trunk/engines/simon/items.cpp
    scummvm/trunk/engines/simon/saveload.cpp
Modified: scummvm/trunk/engines/simon/charset.cpp
===================================================================
--- scummvm/trunk/engines/simon/charset.cpp	2006-06-02 01:34:34 UTC (rev 22824)
+++ scummvm/trunk/engines/simon/charset.cpp	2006-06-02 02:35:04 UTC (rev 22825)
@@ -408,7 +408,7 @@
 	} else if (c == 13 || c == 10) {
 		video_putchar_newline(window);
 	} else if ((c == 1 && _language != Common::HB_ISR) || (c == 8)) {
-		if (_language == Common::HB_ISR) { //Hebrew
+		if (_language == Common::HB_ISR) {
 			if (b >= 64 && b < 91)
 				width = _hebrewCharWidths [b - 64];
 
@@ -446,13 +446,13 @@
 			window->textRow--;
 		}
 
-		if (_language == Common::HB_ISR) { //Hebrew
+		if (_language == Common::HB_ISR) {
 			if (c >= 64 && c < 91)
 				width = _hebrewCharWidths [c - 64];
-			window->textColumnOffset  -= width;
+			window->textColumnOffset -= width;
 			if (window->textColumnOffset >= width) {
+				window->textColumnOffset += 8;
 				window->textColumn++;
-				window->textColumnOffset += 8;
 			}
 			video_putchar_drawchar(window, (window->width + window->x - window->textColumn) * 8, window->textRow * 8 + window->y, c);
 			window->textLength++;

Modified: scummvm/trunk/engines/simon/items.cpp
===================================================================
--- scummvm/trunk/engines/simon/items.cpp	2006-06-02 01:34:34 UTC (rev 22824)
+++ scummvm/trunk/engines/simon/items.cpp	2006-06-02 02:35:04 UTC (rev 22825)
@@ -1406,16 +1406,8 @@
 	// 177: inventory descriptions
 	uint vgaSpriteId = getVarOrByte();
 	uint color = getVarOrByte();
-	const char *string_ptr = NULL;
-	TextLocation *tl = NULL;
-	char buf[256];
 
 	SubObject *subObject = (SubObject *)findChildOfType(getNextItemPtr(), 2);
-	if (subObject != NULL && subObject->objectFlags & kOFText) {
-		string_ptr = (const char *)getStringPtrByID(subObject->objectFlagValue[0]);
-		tl = getTextLocation(vgaSpriteId);
-	}
-
 	if (getFeatures() & GF_TALKIE) {
 		if (subObject != NULL && subObject->objectFlags & kOFVoice) {
 			uint offs = getOffsetOfChild2Param(subObject, kOFVoice);
@@ -1426,13 +1418,28 @@
 		}
 	}
 
-	if (subObject != NULL && (subObject->objectFlags & kOFText) && _subtitles) {
+	if (subObject != NULL && subObject->objectFlags & kOFText && _subtitles) {
+		const char *stringPtr = (const char *)getStringPtrByID(subObject->objectFlagValue[0]);
+		TextLocation *tl = getTextLocation(vgaSpriteId);
+		char buf[256];
+		int j, k;
+
 		if (subObject->objectFlags & kOFNumber) {
-			sprintf(buf, "%d%s", subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFNumber)], string_ptr);
-			string_ptr = buf;
+			if (_language == Common::HB_ISR) {
+				j = subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFNumber)];
+				k = (j % 10) * 10;
+				k += j / 10;
+				if (!(j % 10))
+					sprintf(buf,"0%d%s", k, stringPtr);
+				else
+					sprintf(buf,"%d%s", k, stringPtr);
+			} else {
+				sprintf(buf,"%d%s", subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFNumber)], stringPtr);
+			}
+			stringPtr = buf;
 		}
-		if (string_ptr != NULL)
-			printScreenText(vgaSpriteId, color, string_ptr, tl->x, tl->y, tl->width);
+		if (stringPtr != NULL)
+			printScreenText(vgaSpriteId, color, stringPtr, tl->x, tl->y, tl->width);
 	}
 }
 
@@ -1704,16 +1711,8 @@
 	// 177: inventory descriptions
 	uint vgaSpriteId = getVarOrByte();
 	uint color = getVarOrByte();
-	const char *string_ptr = NULL;
-	TextLocation *tl = NULL;
-	char buf[256];
 
 	SubObject *subObject = (SubObject *)findChildOfType(getNextItemPtr(), 2);
-	if (subObject != NULL && subObject->objectFlags & kOFText) {
-		string_ptr = (const char *)getStringPtrByID(subObject->objectFlagValue[0]);
-		tl = getTextLocation(vgaSpriteId);
-	}
-
 	if (getFeatures() & GF_TALKIE) {
 		if (subObject != NULL && subObject->objectFlags & kOFVoice) {
 			uint speechId = subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFVoice)];
@@ -1768,13 +1767,28 @@
 
 	}
 
-	if (subObject != NULL && (subObject->objectFlags & kOFText) && _subtitles) {
+	if (subObject != NULL && subObject->objectFlags & kOFText && _subtitles) {
+		const char *stringPtr = (const char *)getStringPtrByID(subObject->objectFlagValue[0]);
+		TextLocation *tl = getTextLocation(vgaSpriteId);
+		char buf[256];
+		int j, k;
+
 		if (subObject->objectFlags & kOFNumber) {
-			sprintf(buf, "%d%s", subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFNumber)], string_ptr);
-			string_ptr = buf;
+			if (_language == Common::HB_ISR) {
+				j = subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFNumber)];
+				k = (j % 10) * 10;
+				k += j / 10;
+				if (!(j % 10))
+					sprintf(buf,"0%d%s", k, stringPtr);
+				else
+					sprintf(buf,"%d%s", k, stringPtr);
+			} else {
+				sprintf(buf,"%d%s", subObject->objectFlagValue[getOffsetOfChild2Param(subObject, kOFNumber)], stringPtr);
+			}
+			stringPtr = buf;
 		}
-		if (string_ptr != NULL)
-			printScreenText(vgaSpriteId, color, string_ptr, tl->x, tl->y, tl->width);
+		if (stringPtr != NULL)
+			printScreenText(vgaSpriteId, color, stringPtr, tl->x, tl->y, tl->width);
 	}
 }
 

Modified: scummvm/trunk/engines/simon/saveload.cpp
===================================================================
--- scummvm/trunk/engines/simon/saveload.cpp	2006-06-02 01:34:34 UTC (rev 22824)
+++ scummvm/trunk/engines/simon/saveload.cpp	2006-06-02 02:35:04 UTC (rev 22825)
@@ -60,7 +60,7 @@
 
 	showMessageFormat("\xC");
 
-	memset(dst, 0, 18 * 6);
+	memset(dst, 0, 108);
 
 	slot = curpos;
 
@@ -70,10 +70,18 @@
 
 		in->read(dst, 18);
 		delete in;
+
 		last_slot = slot;
-		if (slot < 10)
+		if (slot < 10) {
 			showMessageFormat(" ");
-		showMessageFormat("%d", slot);
+		} else if (_language == Common::HB_ISR) {
+			last_slot = (slot % 10) * 10;
+			last_slot += slot / 10;
+		}
+
+		if (_language == Common::HB_ISR && !(slot % 10))
+			showMessageFormat("0");
+		showMessageFormat("%d", last_slot);
 		showMessageFormat(".%s\n", dst);
 		dst += 18;
 		slot++;
@@ -240,7 +248,7 @@
 
 		window->textRow = unk132_result;
 
-		if (_language == Common::HB_ISR) { //Hebrew
+		if (_language == Common::HB_ISR) {
 			// init x offset with a 2 character savegame number + a period (18 pix)
 			window->textColumn = 3;
 			window->textColumnOffset = 6;
@@ -257,7 +265,7 @@
 		// now process entire savegame name to get correct x offset for cursor
 		name_len = 0;
 		while (name[name_len]) {
-			if (_language == Common::HB_ISR) { //Hebrew
+			if (_language == Common::HB_ISR) {
 				byte width = 6;
 				if (name[name_len] >= 64 && name[name_len] < 91)
 					width = _hebrewCharWidths [name[name_len] - 64];
@@ -322,7 +330,7 @@
 					name_len--;
 					m = name[name_len];
 
-					if (_language == Common::HB_ISR) //Hebrew
+					if (_language == Common::HB_ISR)
 						x = 8;
 					else
 						x = (name[name_len] == 'i' || name[name_len] == 'l') ? 1 : 8;
@@ -432,7 +440,7 @@
 	old_text = window->text_color;
 	window->text_color = window->fill_color;
 
-	if (_language == Common::HB_ISR) { //Hebrew
+	if (_language == Common::HB_ISR) {
 		x = 128;
 	} else {
 		x += 120;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the Scummvm-git-logs mailing list