[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.347,1.348 intern.h,2.468,2.469 scumm.cpp,1.471,1.472 scumm.h,1.608,1.609 string.cpp,1.281,1.282

Max Horn fingolfin at users.sourceforge.net
Thu Apr 28 15:20:42 CEST 2005


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22053

Modified Files:
	actor.cpp intern.h scumm.cpp scumm.h string.cpp 
Log Message:
Moved bundle based localization code to ScummEngine_v7

Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.347
retrieving revision 1.348
diff -u -d -r1.347 -r1.348
--- actor.cpp	28 Apr 2005 00:44:49 -0000	1.347
+++ actor.cpp	28 Apr 2005 22:17:21 -0000	1.348
@@ -1301,14 +1301,18 @@
 	return result;
 }
 
+void ScummEngine_v7::actorTalk(const byte *msg) {
+	ScummEngine::actorTalk(msg);
+
+	// Play associated speech, if any
+	playSpeech((byte *)_lastStringTag);
+}
+
 void ScummEngine::actorTalk(const byte *msg) {
 	Actor *a;
 
 	addMessageToStack(msg, _charsetBuffer, sizeof(_charsetBuffer));
 	
-	// Play associated speech, if any
-	playSpeech((byte *)_lastStringTag);
-
 	// FIXME: Workaround for bugs #770039 and #770049 
 	if (_gameId == GID_LOOM || _gameId == GID_LOOM256) {
 		if (!*_charsetBuffer)

Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.468
retrieving revision 2.469
diff -u -d -r2.468 -r2.469
--- intern.h	28 Apr 2005 01:04:24 -0000	2.468
+++ intern.h	28 Apr 2005 22:17:22 -0000	2.469
@@ -1254,7 +1254,14 @@
 
 class ScummEngine_v7 : public ScummEngine_v6 {
 public:
-	ScummEngine_v7(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]) : ScummEngine_v6(detector, syst, gs, md5sum) {}
+	ScummEngine_v7(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16]);
+	~ScummEngine_v7();
+
+	bool _existLanguageFile;
+	char *_languageBuffer;
+	LangIndexNode *_languageIndex;
+	int _languageIndexSize;
+	char _lastStringTag[12+1];
 
 protected:
 	virtual void setupScummVars();
@@ -1272,6 +1279,11 @@
 	virtual void panCameraTo(int x, int y);
 
 	virtual int getObjectIdFromOBIM(const byte *obim);
+
+	virtual void actorTalk(const byte *msg);
+	virtual void translateText(const byte *text, byte *trans_buff);
+	virtual void loadLanguageBundle();
+	void playSpeech(const byte *ptr);
 };
 
 class ScummEngine_v8 : public ScummEngine_v7 {

Index: scumm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.cpp,v
retrieving revision 1.471
retrieving revision 1.472
diff -u -d -r1.471 -r1.472
--- scumm.cpp	28 Apr 2005 01:31:28 -0000	1.471
+++ scumm.cpp	28 Apr 2005 22:17:22 -0000	1.472
@@ -904,9 +904,6 @@
 	_NES_lastTalkingActor = 0;
 	_NES_talkColor = 0;
 	_keepText = false;
-	_existLanguageFile = false;
-	_languageBuffer = NULL;
-	_languageIndex = NULL;
 	_costumeLoader = NULL;
 	_costumeRenderer = NULL;
 	_2byteFontPtr = 0;
@@ -1189,7 +1186,6 @@
 	delete _fileHandle;
 
 	delete _sound;
-	free(_languageBuffer);
 
 	delete _costumeLoader;
 	delete _costumeRenderer;
@@ -1214,8 +1210,6 @@
 	free(_classData);
 	free(_arraySlot);
 
-	free(_languageIndex);
-
 	free(_compositeBuf);
 	free(_herculesBuf);
 
@@ -1304,6 +1298,18 @@
 	_heSBNGId = 0;
 }
 
+ScummEngine_v7::ScummEngine_v7(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16])
+ : ScummEngine_v6(detector, syst, gs, md5sum) {
+	_existLanguageFile = false;
+	_languageBuffer = NULL;
+	_languageIndex = NULL;
+}
+
+ScummEngine_v7::~ScummEngine_v7() {
+	free(_languageBuffer);
+	free(_languageIndex);
+}
+
 ScummEngine_v8::ScummEngine_v8(GameDetector *detector, OSystem *syst, const ScummGameSettings &gs, uint8 md5sum[16])
  : ScummEngine_v7(detector, syst, gs, md5sum) {
 	_objectIDMap = 0;

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.608
retrieving revision 1.609
diff -u -d -r1.608 -r1.609
--- scumm.h	28 Apr 2005 01:04:41 -0000	1.608
+++ scumm.h	28 Apr 2005 22:17:23 -0000	1.609
@@ -851,7 +851,7 @@
 	int _NES_lastTalkingActor;
 	int _NES_talkColor;
 
-	void actorTalk(const byte *msg);
+	virtual void actorTalk(const byte *msg);
 	void stopTalk();
 	int getTalkingActor();		// Wrapper around VAR_TALK_ACTOR for V1 Maniac
 	void setTalkingActor(int variable);
@@ -1164,19 +1164,13 @@
 	int addNameToStack(byte *dst, int dstSize, int var);
 	int addStringToStack(byte *dst, int dstSize, int var);
 
-public:
-	Common::Language _language;
-protected:
-	bool _existLanguageFile;
-	char *_languageBuffer;
-	LangIndexNode *_languageIndex;
-	int _languageIndexSize;
-	char _lastStringTag[12+1];
+	virtual void loadLanguageBundle() {}
 
-	void loadLanguageBundle();
-	void playSpeech(const byte *ptr);
 public:
-	void translateText(const byte *text, byte *trans_buff);	// Used by class ScummDialog
+	Common::Language _language;	// Accessed by a hack in NutRenderer::loadFont
+
+	// Used by class ScummDialog:
+	virtual void translateText(const byte *text, byte *trans_buff);
 
 	// Somewhat hackish stuff for 2 byte support (Chinese/Japanese/Korean)
 	bool _useCJKMode;

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.281
retrieving revision 1.282
diff -u -d -r1.281 -r1.282
--- string.cpp	27 Apr 2005 05:05:10 -0000	1.281
+++ string.cpp	28 Apr 2005 22:17:23 -0000	1.282
@@ -29,6 +29,7 @@
 #include "scumm/charset.h"
 #include "scumm/dialogs.h"
 #include "scumm/imuse_digi/dimuse.h"
+#include "scumm/intern.h"
 #include "scumm/verbs.h"
 #include "scumm/sound.h"
 #include "scumm/util.h"
@@ -827,7 +828,7 @@
 }
 
 // Create an index of the language file.
-void ScummEngine::loadLanguageBundle() {
+void ScummEngine_v7::loadLanguageBundle() {
 	ScummFile file;
 	int32 size;
 
@@ -956,7 +957,7 @@
 	qsort(_languageIndex, _languageIndexSize, sizeof(LangIndexNode), indexCompare);
 }
 
-void ScummEngine::playSpeech(const byte *ptr) {
+void ScummEngine_v7::playSpeech(const byte *ptr) {
 	if ((_gameId == GID_DIG || _gameId == GID_CMI) && ptr[0]) {
 		char pointer[20];
 		strcpy(pointer, (const char *)ptr);
@@ -973,6 +974,11 @@
 }
 
 void ScummEngine::translateText(const byte *text, byte *trans_buff) {
+	// Default: just copy the string
+	memcpy(trans_buff, text, resStrLen(text) + 1);
+}
+
+void ScummEngine_v7::translateText(const byte *text, byte *trans_buff) {
 	LangIndexNode target;
 	LangIndexNode *found = NULL;
 	int i;





More information about the Scummvm-git-logs mailing list