aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/saga/console.cpp13
-rw-r--r--engines/saga/console.h2
-rw-r--r--engines/saga/font.cpp11
-rw-r--r--engines/saga/font.h6
4 files changed, 30 insertions, 2 deletions
diff --git a/engines/saga/console.cpp b/engines/saga/console.cpp
index ee5635d1ef..0a6b733e00 100644
--- a/engines/saga/console.cpp
+++ b/engines/saga/console.cpp
@@ -76,6 +76,9 @@ Console::Console(SagaEngine *vm) : GUI::Debugger() {
DCmd_Register("current_panel_mode", WRAP_METHOD(Console, cmdCurrentPanelMode));
DCmd_Register("set_panel_mode", WRAP_METHOD(Console, cmdSetPanelMode));
+ // Font commands
+ DCmd_Register("set_font_mapping", WRAP_METHOD(Console, cmdSetFontMapping));
+
// Global flags commands
DCmd_Register("global_flags_info", WRAP_METHOD(Console, cmdGlobalFlagsInfo));
DCmd_Register("set_global_flag", WRAP_METHOD(Console, cmdSetGlobalFlag));
@@ -163,6 +166,16 @@ bool Console::cmdSetPanelMode(int argc, const char **argv) {
return true;
}
+bool Console::cmdSetFontMapping(int argc, const char **argv) {
+ if (argc != 2) {
+ DebugPrintf("Sets font mapping\nUsage: %s <Font mapping flag>\n", argv[0]);
+ DebugPrintf("Mapping flags:\n0 - default game behavior\n1 - force font mapping\n2 - ignore font mapping\n");
+ } else {
+ _vm->_font->setFontMapping(atoi(argv[1]));
+ }
+ return true;
+}
+
bool Console::cmdGlobalFlagsInfo(int argc, const char **argv) {
DebugPrintf("Global flags status for IHNM:\n");
diff --git a/engines/saga/console.h b/engines/saga/console.h
index f2f883a63c..7936d3a959 100644
--- a/engines/saga/console.h
+++ b/engines/saga/console.h
@@ -55,6 +55,8 @@ private:
bool cmdCurrentPanelMode(int argc, const char **argv);
bool cmdSetPanelMode(int argc, const char **argv);
+ bool cmdSetFontMapping(int argc, const char **argv);
+
bool cmdGlobalFlagsInfo(int argc, const char **argv);
bool cmdSetGlobalFlag(int argc, const char **argv);
bool cmdClearGlobalFlag(int argc, const char **argv);
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index 8a9c10deb4..02c17d5e84 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -49,6 +49,7 @@ Font::Font(SagaEngine *vm) : _vm(vm), _initialized(false) {
}
_initialized = true;
+ _fontMapping = 0;
}
Font::~Font(void) {
@@ -325,8 +326,16 @@ void Font::outFont(const FontStyle &drawFont, Surface *ds, const char *text, siz
c_code = *textPointer & 0xFFU;
// Translate character
- if (!(flags & kFontDontmap))
+ if (_fontMapping == 0) { // Check font mapping debug flag
+ // Default game behavior
+ if (!(flags & kFontDontmap))
+ c_code = _charMap[c_code];
+ } else if (_fontMapping == 1) {
+ // Force font mapping
c_code = _charMap[c_code];
+ } else {
+ // In all other cases, ignore font mapping
+ }
assert(c_code < FONT_CHARCOUNT);
// Check if character is defined
diff --git a/engines/saga/font.h b/engines/saga/font.h
index 5fd3a53721..16fdfc22b9 100644
--- a/engines/saga/font.h
+++ b/engines/saga/font.h
@@ -141,8 +141,11 @@ class Font {
}
void textDrawRect(KnownFont font, Surface *ds, const char *text, const Common::Rect &rect, int color, int effectColor, FontEffectFlags flags) {
textDrawRect(knownFont2FontIdx(font), ds, text, rect, color, effectColor, flags);
+ }
+ void setFontMapping(int mapping) {
+ _fontMapping = mapping;
}
-
+
private:
enum FontId {
kSmallFont,
@@ -197,6 +200,7 @@ class Font {
SagaEngine *_vm;
bool _initialized;
+ int _fontMapping;
int _loadedFonts;
FontData **_fonts;