aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kurushin2005-11-26 12:08:05 +0000
committerAndrew Kurushin2005-11-26 12:08:05 +0000
commit66e5b90168b311d6f4d4d1ae31142e02bca29d4d (patch)
tree162b17c477e5a95432e592084c13ba8e2d75c94c
parent42548e371cba500a9ead2f71d399d098896a82bd (diff)
downloadscummvm-rg350-66e5b90168b311d6f4d4d1ae31142e02bca29d4d.tar.gz
scummvm-rg350-66e5b90168b311d6f4d4d1ae31142e02bca29d4d.tar.bz2
scummvm-rg350-66e5b90168b311d6f4d4d1ae31142e02bca29d4d.zip
known color WIP #1
svn-id: r19703
-rw-r--r--saga/font.h4
-rw-r--r--saga/game.cpp8
-rw-r--r--saga/interface.cpp27
-rw-r--r--saga/interface.h22
-rw-r--r--saga/ite_introproc.cpp8
-rw-r--r--saga/saga.cpp70
-rw-r--r--saga/saga.h42
-rw-r--r--saga/scene.cpp8
-rw-r--r--saga/sfuncs.cpp9
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);
}