From 66e5b90168b311d6f4d4d1ae31142e02bca29d4d Mon Sep 17 00:00:00 2001 From: Andrew Kurushin Date: Sat, 26 Nov 2005 12:08:05 +0000 Subject: known color WIP #1 svn-id: r19703 --- saga/font.h | 4 +-- saga/game.cpp | 8 ------ saga/interface.cpp | 27 ++++++++++--------- saga/interface.h | 22 +--------------- saga/ite_introproc.cpp | 8 +++--- saga/saga.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ saga/saga.h | 42 +++++++++++++++++++++++++++--- saga/scene.cpp | 8 +++--- saga/sfuncs.cpp | 9 +++---- 9 files changed, 135 insertions(+), 63 deletions(-) diff --git a/saga/font.h b/saga/font.h index 5896060104..295884b6a9 100644 --- a/saga/font.h +++ b/saga/font.h @@ -77,8 +77,8 @@ struct TextListEntry { bool useRect; Common::Point point; Common::Rect rect; - int color; - int effectColor; + KnownColor knownColor; + KnownColor effectKnownColor; FontEffectFlags flags; KnownFont font; const char *text; diff --git a/saga/game.cpp b/saga/game.cpp index d53200b2cd..a7165113b3 100644 --- a/saga/game.cpp +++ b/saga/game.cpp @@ -147,10 +147,6 @@ static GameDisplayInfo ITE_DisplayInfo = { 12,12, // save reminder w & h 6,7, // save reminder sprite numbers - 147, // verb text color - 15, // verb text shadow color - 96, // verb text active color - 5, 4, // left portrait x, y offset 274, 4, // right portrait x, y offset @@ -603,10 +599,6 @@ static GameDisplayInfo IHNM_DisplayInfo = { //TODO: fill it all 24, 24, // save reminder w&h 0,1, // save reminder sprite numbers - 253, // verb text color - 15, // verb text shadow color FIXME - 252, // verb text active color - 11, 12, // left portrait x, y offset -1, -1, // right portrait x, y offset diff --git a/saga/interface.cpp b/saga/interface.cpp index afc94f299e..c28edc19c7 100644 --- a/saga/interface.cpp +++ b/saga/interface.cpp @@ -585,7 +585,7 @@ void Interface::loadScenePortraits(int resourceId) { void Interface::drawVerbPanel(Surface *backBuffer, PanelButton* panelButton) { PanelButton * rightButtonVerbPanelButton; PanelButton * currentVerbPanelButton; - int textColor; + KnownColor textColor; int spriteNumber; Point point; @@ -593,11 +593,11 @@ void Interface::drawVerbPanel(Surface *backBuffer, PanelButton* panelButton) { currentVerbPanelButton = getPanelButtonByVerbType(_vm->_script->getCurrentVerb()); if (panelButton->state) { - textColor = _vm->getDisplayInfo().verbTextActiveColor; + textColor = kKnownColorVerbTextActive; } else if (panelButton == rightButtonVerbPanelButton) { - textColor = _vm->getDisplayInfo().verbTextActiveColor; + textColor = kKnownColorVerbTextActive; } else { - textColor = _vm->getDisplayInfo().verbTextColor; + textColor = kKnownColorVerbText; } if (panelButton == currentVerbPanelButton) { @@ -610,7 +610,7 @@ void Interface::drawVerbPanel(Surface *backBuffer, PanelButton* panelButton) { _vm->_sprite->draw(backBuffer, _vm->getDisplayClip(), _mainPanel.sprites, spriteNumber, point, 256); - drawVerbPanelText(backBuffer, panelButton, textColor, _vm->getDisplayInfo().verbTextShadowColor); + drawVerbPanelText(backBuffer, panelButton, textColor, kKnownColorVerbTextShadow); } void Interface::draw() { @@ -735,8 +735,7 @@ void Interface::drawPanelText(Surface *ds, InterfacePanel *panel, PanelButton *p textPoint.x = rect.left; textPoint.y = rect.top + 1; - _vm->_font->textDraw(kKnownFontMedium, ds, text, textPoint, - _vm->getDisplayInfo().verbTextColor, _vm->getDisplayInfo().verbTextShadowColor, kFontShadow); + _vm->_font->textDraw(kKnownFontMedium, ds, text, textPoint, _vm->KnownColor2ColorId(kKnownColorVerbText), _vm->KnownColor2ColorId(kKnownColorVerbTextShadow), kFontShadow); } void Interface::drawOption() { @@ -1892,7 +1891,7 @@ void Interface::drawPanelButtonText(Surface *ds, InterfacePanel *panel, PanelBut int textWidth; int textHeight; Point point; - int textColor; + KnownColor textColor; Rect rect; textId = panelButton->id; @@ -1929,16 +1928,16 @@ void Interface::drawPanelButtonText(Surface *ds, InterfacePanel *panel, PanelBut point.y = panel->y + panelButton->yOffset + (panelButton->height / 2) - (textHeight / 2); if (panelButton == panel->currentButton) { - textColor = _vm->getDisplayInfo().verbTextActiveColor; + textColor = kKnownColorVerbTextActive; } else { - textColor = _vm->getDisplayInfo().verbTextColor; + textColor = kKnownColorVerbText; } panel->calcPanelButtonRect(panelButton, rect); drawButtonBox(ds, rect, kButton, panelButton->state > 0); _vm->_font->textDraw(kKnownFontMedium, ds, text, point, - textColor, _vm->getDisplayInfo().verbTextShadowColor, kFontShadow); + _vm->KnownColor2ColorId(textColor), _vm->KnownColor2ColorId(kKnownColorVerbTextShadow), kFontShadow); } void Interface::drawPanelButtonArrow(Surface *ds, InterfacePanel *panel, PanelButton *panelButton) { @@ -1961,7 +1960,7 @@ void Interface::drawPanelButtonArrow(Surface *ds, InterfacePanel *panel, PanelBu _vm->_sprite->draw(ds, _vm->getDisplayClip(), _vm->_sprite->_mainSprites, spriteNumber, point, 256); } -void Interface::drawVerbPanelText(Surface *ds, PanelButton *panelButton, int textColor, int textShadowColor) { +void Interface::drawVerbPanelText(Surface *ds, PanelButton *panelButton, KnownColor textKnownColor, KnownColor textShadowKnownColor) { const char *text; int textWidth; Point point; @@ -1973,7 +1972,7 @@ void Interface::drawVerbPanelText(Surface *ds, PanelButton *panelButton, int tex } else { textId = verbTypeToTextStringsIdLUT[1][panelButton->id]; text = _vm->_script->_mainStrings.getString(textId + 1); - textShadowColor = 0; + textShadowKnownColor = kKnownColorTransparent; } textWidth = _vm->_font->getStringWidth(kKnownFontVerb, text, 0, kFontNormal); @@ -1986,7 +1985,7 @@ void Interface::drawVerbPanelText(Surface *ds, PanelButton *panelButton, int tex point.y = _mainPanel.y + panelButton->yOffset + 12; } - _vm->_font->textDraw(kKnownFontVerb, ds, text, point, textColor, textShadowColor, (textShadowColor != 0) ? kFontShadow : kFontNormal); + _vm->_font->textDraw(kKnownFontVerb, ds, text, point, _vm->KnownColor2ColorId(textKnownColor),_vm->KnownColor2ColorId(textShadowKnownColor), (textShadowKnownColor != kKnownColorTransparent) ? kFontShadow : kFontNormal); } diff --git a/saga/interface.h b/saga/interface.h index 4ce3953ddf..5df9ddd036 100644 --- a/saga/interface.h +++ b/saga/interface.h @@ -162,26 +162,6 @@ struct Converse { int replyBit; }; -enum GameColors { - kITEColorBrightWhite = 0x01, - kITEColorWhite = 0x02, - kITEColorLightGrey = 0x04, - kITEColorGrey = 0x0a, - kITEColorDarkGrey = 0x0b, - kITEColorDarkGrey0C = 0x0C, - kITEColorGreen = 0xba, - kITEColorBlack = 0x0f, - kITEColorRed = 0x65, - kITEColorDarkBlue8a = 0x8a, - kITEColorBlue89 = 0x89, - kITEColorLightBlue92 = 0x92, - kITEColorBlue = 0x93, - kITEColorLightBlue94 = 0x94, - kITEColorLightBlue96 = 0x96, - - kIHNMColorBlack = 0xfa, - kIHNMColorPortrait = 0xfe -}; enum StatusTextInputState { kStatusTextInputFirstRun, @@ -358,7 +338,7 @@ private: }; void drawButtonBox(Surface *ds, const Rect &rect, ButtonKind kind, bool down); void drawPanelButtonArrow(Surface *ds, InterfacePanel *panel, PanelButton *panelButton); - void drawVerbPanelText(Surface *ds, PanelButton *panelButton, int textColor, int textShadowColor); + void drawVerbPanelText(Surface *ds, PanelButton *panelButton, KnownColor textKnownColor, KnownColor textShadowKnownColor); void drawVerbPanel(Surface *backBuffer, PanelButton* panelButton); void calcOptionSaveSlider(); bool processTextInput(uint16 ascii); diff --git a/saga/ite_introproc.cpp b/saga/ite_introproc.cpp index 53a5342ee5..106cbed0b2 100644 --- a/saga/ite_introproc.cpp +++ b/saga/ite_introproc.cpp @@ -94,8 +94,8 @@ Event *Scene::ITEQueueDialogue(Event *q_event, int n_dialogues, const IntroDialo int i; // Queue narrator dialogue list - textEntry.color = 255; - textEntry.effectColor = 0; + textEntry.knownColor = kKnownColorSubtitleTextColor; + textEntry.effectKnownColor = kKnownColorTransparent; textEntry.useRect = true; textEntry.rect.left = 0; textEntry.rect.right = _vm->getDisplayWidth(); @@ -224,8 +224,8 @@ Event *Scene::ITEQueueCredits(int delta_time, int duration, int n_credits, const Event event; Event *q_event = NULL; - textEntry.color = 255; - textEntry.effectColor = 0; + textEntry.knownColor = kKnownColorSubtitleTextColor; + textEntry.effectKnownColor = kKnownColorTransparent; textEntry.flags = (FontEffectFlags)(kFontOutline | kFontCentered); textEntry.point.x = 160; diff --git a/saga/saga.cpp b/saga/saga.cpp index bedee8b26d..7690cf1de7 100644 --- a/saga/saga.cpp +++ b/saga/saga.cpp @@ -445,4 +445,74 @@ void SagaEngine::getExcuseInfo(int verb, const char *&textString, int &soundReso } } +ColorId SagaEngine::KnownColor2ColorId(KnownColor knownColor) { + ColorId colorId = kITEColorTransBlack; + + if (getGameType() == GType_ITE) { + switch (knownColor) + { + case(kKnownColorTransparent): + colorId = kITEColorTransBlack; + break; + + case (kKnownColorBrightWhite): + colorId = kITEColorBrightWhite; + break; + case (kKnownColorBlack): + colorId = kITEColorBlack; + break; + + + case (kKnownColorSubtitleTextColor): + colorId = (ColorId)255; + break; + case (kKnownColorVerbText): + colorId = kITEColorBlue; + break; + case (kKnownColorVerbTextShadow): + colorId = kITEColorBlack; + break; + case (kKnownColorVerbTextActive): + colorId = (ColorId)96; + break; + + default: + error("SagaEngine::KnownColor2ColorId unknown color %i", knownColor); + } + } else if (getGameType() == GType_IHNM) { + switch (knownColor) + { + case(kKnownColorTransparent): + colorId = kITEColorTransBlack; + break; + + case (kKnownColorBlack): + colorId = kIHNMColorBlack; + break; + + case (kKnownColorVerbText): + colorId = (ColorId)253; + break; + case (kKnownColorVerbTextShadow): + colorId = (ColorId)15; + break; + case (kKnownColorVerbTextActive): + colorId = (ColorId)252; + break; + + default: + error("SagaEngine::KnownColor2ColorId unknown color %i", knownColor); + } + +/* switch (font) + { + case (kKnownFontSmall): + fontId = kSmallFont; + break; + }*/ + } + return colorId; +} + + } // End of namespace Saga diff --git a/saga/saga.h b/saga/saga.h index 9138333fb0..cceadb7d16 100644 --- a/saga/saga.h +++ b/saga/saga.h @@ -321,6 +321,39 @@ enum GameFeatures { GF_SCENE_SUBSTITUTES = 1 << 3 }; +enum ColorId { + kITEColorTransBlack = 0x00, + kITEColorBrightWhite = 0x01, + kITEColorWhite = 0x02, + kITEColorLightGrey = 0x04, + kITEColorGrey = 0x0a, + kITEColorDarkGrey = 0x0b, + kITEColorDarkGrey0C = 0x0C, + kITEColorBlack = 0x0f, + kITEColorRed = 0x65, + kITEColorDarkBlue8a = 0x8a, + kITEColorBlue89 = 0x89, + kITEColorLightBlue92 = 0x92, + kITEColorBlue = 0x93, + kITEColorLightBlue94 = 0x94, + kITEColorLightBlue96 = 0x96, + kITEColorGreen = 0xba, + + kIHNMColorBlack = 0xfa, + kIHNMColorPortrait = 0xfe +}; + +enum KnownColor { + kKnownColorTransparent, + kKnownColorBrightWhite, + kKnownColorBlack, + + kKnownColorSubtitleTextColor, + kKnownColorVerbText, + kKnownColorVerbTextShadow, + kKnownColorVerbTextActive +}; + struct GameSoundInfo { GameSoundTypes resourceType; long frequency; @@ -395,10 +428,6 @@ struct GameDisplayInfo { int saveReminderFirstSpriteNumber; int saveReminderSecondSpriteNumber; - int verbTextColor; - int verbTextShadowColor; - int verbTextActiveColor; - int leftPortraitXOffset; int leftPortraitYOffset; int rightPortraitXOffset; @@ -698,6 +727,11 @@ public: const char *getTextString(int textStringId); void getExcuseInfo(int verb, const char *&textString, int &soundResourceId); + +private: + +public: + ColorId KnownColor2ColorId(KnownColor knownColor); }; diff --git a/saga/scene.cpp b/saga/scene.cpp index 99619713b5..52a4145fef 100644 --- a/saga/scene.cpp +++ b/saga/scene.cpp @@ -240,9 +240,9 @@ void Scene::drawTextList(Surface *ds) { if (entry->display) { if (entry->useRect) { - _vm->_font->textDrawRect(entry->font, ds, entry->text, entry->rect, entry->color, entry->effectColor, entry->flags); + _vm->_font->textDrawRect(entry->font, ds, entry->text, entry->rect, _vm->KnownColor2ColorId(entry->knownColor), _vm->KnownColor2ColorId(entry->effectKnownColor), entry->flags); } else { - _vm->_font->textDraw(entry->font, ds, entry->text, entry->point, entry->color, entry->effectColor, entry->flags); + _vm->_font->textDraw(entry->font, ds, entry->text, entry->point, _vm->KnownColor2ColorId(entry->knownColor), _vm->KnownColor2ColorId(entry->effectKnownColor), entry->flags); } } } @@ -453,10 +453,10 @@ void Scene::changeScene(int16 sceneNumber, int actorsEntrance, SceneTransitionTy _vm->_interface->setStatusText("Click or Press Return to continue. Press Q to quit.", 96); _vm->_font->textDrawRect(kKnownFontMedium, backBuffer, sceneSubstitutes[i].title, - Common::Rect(0, 7, _vm->getDisplayWidth(), 27), 1, 15, kFontOutline); + Common::Rect(0, 7, _vm->getDisplayWidth(), 27), _vm->KnownColor2ColorId(kKnownColorBrightWhite), _vm->KnownColor2ColorId(kKnownColorBlack), kFontOutline); _vm->_font->textDrawRect(kKnownFontMedium, backBuffer, sceneSubstitutes[i].message, Common::Rect(24, getHeight() - 33, _vm->getDisplayWidth() - 11, - getHeight()), 1, 15, kFontOutline); + getHeight()), _vm->KnownColor2ColorId(kKnownColorBrightWhite), _vm->KnownColor2ColorId(kKnownColorBlack), kFontOutline); return; } } diff --git a/saga/sfuncs.cpp b/saga/sfuncs.cpp index afa448f195..fd76bfb46a 100644 --- a/saga/sfuncs.cpp +++ b/saga/sfuncs.cpp @@ -1305,8 +1305,8 @@ void Script::sfPlacard(SCRIPTFUNC_PARAMS) { TextListEntry textEntry; - textEntry.color = kITEColorBrightWhite; - textEntry.effectColor = kITEColorBlack; + textEntry.knownColor = kKnownColorBrightWhite; + textEntry.effectKnownColor = kKnownColorBlack; textEntry.point.x = _vm->getDisplayWidth() / 2; textEntry.point.y = (_vm->_scene->getHeight() - _vm->_font->getHeight(kKnownFontMedium)) / 2; textEntry.font = kKnownFontMedium; @@ -1597,10 +1597,7 @@ void Script::sfScriptText(SCRIPTFUNC_PARAMS) { rect.left = point.x - width / 2; rect.setWidth(width); - if (_vm->getGameType() == GType_ITE) - _vm->_actor->setSpeechColor(color, kITEColorBlack); - else - _vm->_actor->setSpeechColor(color, kIHNMColorBlack); + _vm->_actor->setSpeechColor(color, _vm->KnownColor2ColorId(kKnownColorBlack)); _vm->_actor->nonActorSpeech(rect, &text, 1, -1, flags); } -- cgit v1.2.3