[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.15,2.16 script_v8.cpp,2.33,2.34 scumm.h,1.101,1.102
James Brown
ender at users.sourceforge.net
Wed Dec 25 06:32:02 CET 2002
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv2561/scumm
Modified Files:
intern.h script_v8.cpp scumm.h
Log Message:
Clean up the hack. But it's still kinda a hack. Er. :)
Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.15
retrieving revision 2.16
diff -u -d -r2.15 -r2.16
--- intern.h 25 Dec 2002 00:04:12 -0000 2.15
+++ intern.h 25 Dec 2002 14:31:17 -0000 2.16
@@ -24,7 +24,7 @@
#define INTERN_H
#include "scumm.h"
-
+class NutRenderer; // V8 Font Renderer
class Scumm_v5 : public Scumm
{
@@ -405,6 +405,10 @@
virtual void writeVar(uint var, int value);
void decodeParseString(int m, int n);
+
+ /* Version 8 Font Stuff */
+ void loadCharset(int charset);
+ NutRenderer *_fr[4];
/* Version 8 script opcodes */
void o8_mod();
Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.33
retrieving revision 2.34
diff -u -d -r2.33 -r2.34
--- script_v8.cpp 25 Dec 2002 13:51:01 -0000 2.33
+++ script_v8.cpp 25 Dec 2002 14:31:17 -0000 2.34
@@ -36,6 +36,21 @@
#define OPCODE(x) { &Scumm_v8::x, #x }
+// FIXME: Move this somewhere better :)
+void Scumm_v8::loadCharset(int charset) {
+ char fontname[255];
+ sprintf(fontname, "resource/font%d.nut", charset);
+ warning("Loading charset %s\n", fontname);
+ _fr[charset] = new NutRenderer;
+ if (!(_fr[charset]->loadFont(fontname, (char*)getGameDataPath()))) {
+ delete _fr[charset];
+ _fr[charset] = NULL;
+ return;
+ }
+
+ _fr[charset]->bindDisplay((byte*)virtscr[0].screenPtr, (int32)_realWidth, (int32)_realHeight, (int32)_realWidth);
+}
+
void Scumm_v8::setupOpcodes()
{
// TODO: any of the o6_ entries are potentially wrong and pure guesses :-)
@@ -496,18 +511,6 @@
case 0xCD: { // SO_PRINT_CHARSET Set print character set
// FIXME - TODO
int charset = pop();
- if (_fr[charset] == NULL) {
- char fontname[255];
- sprintf(fontname, "resource/font%d.nut", charset);
- _fr[charset] = new NutRenderer;
- _fr[charset]->loadFont(fontname, (char*)getGameDataPath());
- _fr[charset]->bindDisplay((byte*)virtscr[0].screenPtr, (int32)_realWidth, (int32)_realHeight, (int32)_realWidth);
- if (!_fr[charset])
- warning("Failed to load font %d from %s%s\n", charset, getGameDataPath(), fontname);
- else
- warning("Loaded font %d from %s%s\n", charset, getGameDataPath(), fontname);
-
- }
_string[m].charset = charset;
}
break;
@@ -523,17 +526,18 @@
error("decodeParseString: SO_PRINT_MUMBLE");
break;
case 0xD1: {
- // TODO - FIXME
_messagePtr = _scriptPointer;
byte buffer[1024];
_msgPtrToAdd = buffer;
_scriptPointer = _messagePtr = addMessageToStack(_messagePtr);
+ if (_fr[_string[m].charset] == NULL) // FIXME: Put this elsewhere?
+ loadCharset(_string[m].charset);
+
if (_fr[_string[m].charset] != NULL) {
_fr[_string[m].charset]->drawString((char *)buffer, (int)_string[m].xpos, (int)_string[m].ypos, (unsigned char)_string[m].color, 0);
- } else {
- warning("No font loaded in slot %d\n", m);
+ //warning("Printing font loaded in slot %d: %s\n", _string[m].charset, buffer);
}
break;
@@ -754,18 +758,7 @@
break;
case 0xE7: { // SO_CHARSET_SET
int charset = pop();
- if (_fr[charset] == NULL) {
- char fontname[255];
- sprintf(fontname, "resource/font%d.nut", charset);
- _fr[charset] = new NutRenderer;
- _fr[charset]->loadFont(fontname, (char*)getGameDataPath());
- _fr[charset]->bindDisplay((byte*)virtscr[0].screenPtr, (int32)_realWidth, (int32)_realHeight, (int32)_realWidth);
- if (!_fr[charset])
- warning("Failed to load font %d from %s%s\n", charset, getGameDataPath(), fontname);
- else
- warning("Loaded font %d from %s%s\n", charset, getGameDataPath(), fontname);
-
- }
+ loadCharset(charset);
break;
}
case 0xE8: // SO_CHARSET_COLOR
@@ -897,7 +890,7 @@
if (subOp == 0x7A) {
_curActor = pop();
- printf("Setting current actor to %d\n", _curActor);
+ //printf("Setting current actor to %d\n", _curActor);
return;
}
@@ -1124,7 +1117,8 @@
break;
case 0xA6: // SO_VERB_CHARSET Choose charset for verb
// FIXME - TODO
- pop();
+ vs->charset_nr = pop();
+ //printf("Set to charset %d\n", vs->charset_nr);
break;
case 0xA7: // SO_VERB_LINE_SPACING Choose linespacing for verb
// FIXME - TODO
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -d -r1.101 -r1.102
--- scumm.h 25 Dec 2002 13:51:01 -0000 1.101
+++ scumm.h 25 Dec 2002 14:31:17 -0000 1.102
@@ -31,7 +31,6 @@
#include "common/timer.h"
#include "common/util.h"
-class NutRenderer;
class GameDetector;
class NewGui;
class Dialog;
@@ -680,9 +679,6 @@
StringTab _string[6];
void actorTalk();
void stopTalk();
-
- /* FIXME: This should not be here, probably. Hack for CMI v8 fonts */
- NutRenderer *_fr[4];
/* Akos Class */
More information about the Scummvm-git-logs
mailing list