From 8b7486b5ca61653250c7168974233932e8248f87 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Thu, 24 Apr 2008 23:06:21 +0000 Subject: Implemented opcodes o1_DROPSHADOW, o1_TEXTCOLOR, o1_OUTLINE. Added some initial code for opcode o1_TEXTRECT svn-id: r31711 --- engines/made/screen.h | 14 ++++++++++++++ engines/made/scriptfuncs.cpp | 20 +++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/engines/made/screen.h b/engines/made/screen.h index 543af81bf8..55dd92cabd 100644 --- a/engines/made/screen.h +++ b/engines/made/screen.h @@ -71,6 +71,17 @@ public: void setExclude(uint16 exclude) { _exclude = exclude; } void setGround(uint16 ground) { _ground = ground; } void setFont(uint16 font) { _currentFont = font; } + void setTextColor(int16 color) { _textColor = color; } + + void setOutlineColor(int16 color) { + _outlineColor = color; + _dropshadowColor = -1; + } + + void setDropShadowColor(int16 color) { + _outlineColor = -1; + _dropshadowColor = color; + } uint16 updateChannel(uint16 channelIndex); void deleteChannel(uint16 channelIndex); @@ -117,6 +128,9 @@ protected: int _paletteColorCount, _oldPaletteColorCount; bool _paletteInitialized, _needPalette; uint16 _currentFont; + int16 _textColor; + int16 _outlineColor; + int16 _dropShadowColor; uint16 _clip, _exclude, _ground; int _visualEffectNum; diff --git a/engines/made/scriptfuncs.cpp b/engines/made/scriptfuncs.cpp index 7a75e4551c..c0f699dee6 100644 --- a/engines/made/scriptfuncs.cpp +++ b/engines/made/scriptfuncs.cpp @@ -441,6 +441,16 @@ int16 ScriptFunctionsRtz::o1_HOMETEXT(int16 argc, int16 *argv) { int16 ScriptFunctionsRtz::o1_TEXTRECT(int16 argc, int16 *argv) { warning("Unimplemented opcode: o1_TEXTRECT"); + + int16 x1 = CLIP(argv[0], 1, 318); + int16 y1 = CLIP(argv[1], 1, 198); + int16 x2 = CLIP(argv[2], 1, 318); + int16 y2 = CLIP(argv[3], 1, 198); + int16 textValue = argv[4]; + + printf("Text rect: %i, %i, %i, %i - text value: %i\n", x1, y1, x2, y2, textValue); + // TODO: set text rect + return 0; } @@ -455,17 +465,21 @@ int16 ScriptFunctionsRtz::o1_TEXTXY(int16 argc, int16 *argv) { } int16 ScriptFunctionsRtz::o1_DROPSHADOW(int16 argc, int16 *argv) { - warning("Unimplemented opcode: o1_DROPSHADOW"); + // if the drop shadow color is -1, then text drop shadow is disabled + // when font drop shadow is enabled, outline is disabled + _vm->_screen->setDropShadowColor(argv[0]); return 0; } int16 ScriptFunctionsRtz::o1_TEXTCOLOR(int16 argc, int16 *argv) { - warning("Unimplemented opcode: o1_TEXTCOLOR"); + _vm->_screen->setTextColor(argv[0]); return 0; } int16 ScriptFunctionsRtz::o1_OUTLINE(int16 argc, int16 *argv) { - warning("Unimplemented opcode: o1_OUTLINE"); + // if the outline color is -1, then text outline is disabled + // when font outline is enabled, drop shadow is disabled + _vm->_screen->setOutlineColor(argv[0]); return 0; } -- cgit v1.2.3