Skip to content

Commit

Permalink
MORTEVIELLE: Introduce DialogManager and get rid of static functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Strangerke committed Jun 26, 2013
1 parent de48744 commit 7a7d812
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 51 deletions.
20 changes: 10 additions & 10 deletions engines/mortevielle/actions.cpp
Expand Up @@ -701,12 +701,12 @@ void MortevielleEngine::fctPlace() {
_speechManager.startSpeech(6, -9, 1);

// Do you want to enter the hidden passage?
int answer = Alert::show(getEngineString(S_YES_NO), 1);
int answer = _dialogManager.show(getEngineString(S_YES_NO), 1);
if (answer == 1) {
Common::String alertTxt = getString(582);
Alert::show(alertTxt, 1);
_dialogManager.show(alertTxt, 1);

bool enterPassageFl = KnowledgeCheck::show();
bool enterPassageFl = _dialogManager.showKnowledgeCheck();
_mouse.hideMouse();
hirs();
drawRightFrame();
Expand All @@ -731,7 +731,7 @@ void MortevielleEngine::fctPlace() {
aniof(1, 2);
aniof(1, 1);
alertTxt = getString(577);
Alert::show(alertTxt, 1);
_dialogManager.show(alertTxt, 1);
aniof(2, 1);
_crep = 166;
}
Expand Down Expand Up @@ -800,7 +800,7 @@ void MortevielleEngine::fctTurn() {
if ((_coreVar._currPlace == ATTIC) && (_coreVar._atticRodHoleObjectId == 159) && (_coreVar._atticBallHoleObjectId == 141)) {
handleDescriptionText(2, 167);
_speechManager.startSpeech(7, 9, 1);
int answer = Alert::show(getEngineString(S_YES_NO), 1);
int answer = _dialogManager.show(getEngineString(S_YES_NO), 1);
if (answer == 1)
_endGame = true;
else
Expand All @@ -810,7 +810,7 @@ void MortevielleEngine::fctTurn() {
handleDescriptionText(2, 175);
clearVerbBar();
_speechManager.startSpeech(6, -9, 1);
int answer = Alert::show(getEngineString(S_YES_NO), 1);
int answer = _dialogManager.show(getEngineString(S_YES_NO), 1);
if (answer == 1) {
_coreVar._currPlace = CRYPT;
affrep();
Expand Down Expand Up @@ -915,7 +915,7 @@ void MortevielleEngine::fctKnock() {
displayTextInVerbBar(getEngineString(S_HIT));

if (_coreVar._currPlace == LANDING) {
Alert::show(getEngineString(S_BEFORE_USE_DEP_MENU), 1);
_dialogManager.show(getEngineString(S_BEFORE_USE_DEP_MENU), 1);
return;
}

Expand Down Expand Up @@ -1225,7 +1225,7 @@ void MortevielleEngine::fctSleep() {
if (h > 23)
h = 0;
prepareRoom();
answer = Alert::show(getEngineString(S_YES_NO), 1);
answer = _dialogManager.show(getEngineString(S_YES_NO), 1);
_anyone = false;
} while (answer != 1);
_crep = 998;
Expand Down Expand Up @@ -1315,7 +1315,7 @@ void MortevielleEngine::fctWait() {
return;
}
handleDescriptionText(2, 102);
answer = Alert::show(getEngineString(S_YES_NO), 1);
answer = _dialogManager.show(getEngineString(S_YES_NO), 1);
} while (answer != 2);
_crep = 998;
if (!_anyone)
Expand Down Expand Up @@ -1632,7 +1632,7 @@ void MortevielleEngine::askRestart() {
_day = 0;
handleDescriptionText(2, 180);

int answer = Alert::show(getEngineString(S_YES_NO), 1);
int answer = _dialogManager.show(getEngineString(S_YES_NO), 1);
_quitGame = (answer != 1);
}

Expand Down
27 changes: 15 additions & 12 deletions engines/mortevielle/dialogs.cpp
Expand Up @@ -38,7 +38,7 @@ namespace Mortevielle {
* Alert function - Show
* @remarks Originally called 'do_alert'
*/
int Alert::show(const Common::String &msg, int n) {
int DialogManager::show(const Common::String &msg, int n) {
// Make a copy of the current screen surface for later restore
g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface);

Expand Down Expand Up @@ -188,7 +188,7 @@ int Alert::show(const Common::String &msg, int n) {
* Alert function - Decode Alert Details
* @remarks Originally called 'decod'
*/
void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr) {
void DialogManager::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr) {
// The second character of the string contains the number of choices
choiceNumb = atoi(inputStr.c_str() + 1);

Expand Down Expand Up @@ -228,15 +228,15 @@ void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &li
col *= 10;
}

void Alert::setPosition(int ji, int coldep, int esp) {
void DialogManager::setPosition(int ji, int coldep, int esp) {
g_vm->_screenSurface.putxy(coldep + (40 + esp) * (ji - 1), 98);
}

/**
* Alert function - Draw Alert Box
* @remarks Originally called 'fait_boite'
*/
void Alert::drawAlertBox(int lidep, int nli, int tx) {
void DialogManager::drawAlertBox(int lidep, int nli, int tx) {
if (tx > 640)
tx = 640;
int x = 320 - ((uint)tx / 2);
Expand All @@ -252,7 +252,7 @@ void Alert::drawAlertBox(int lidep, int nli, int tx) {
* Alert function - Set Button Text
* @remarks Originally called 'fait_choix'
*/
void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp) {
void DialogManager::setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp) {
int i = 1;
int x = coldep;
for (int l = 1; l <= nbcase; ++l) {
Expand Down Expand Up @@ -283,7 +283,7 @@ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::Stri
/**
* Questions asked before entering the hidden passage
*/
bool KnowledgeCheck::show() {
bool DialogManager::showKnowledgeCheck() {
const int textIndexArr[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576};
const int correctAnswerArr[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 };

Expand Down Expand Up @@ -402,7 +402,7 @@ bool KnowledgeCheck::show() {
/**
* Draw the F3/F8 dialog
*/
void f3f8::draw() {
void DialogManager::drawF3F8() {
Common::String f3 = g_vm->getEngineString(S_F3);
Common::String f8 = g_vm->getEngineString(S_F8);

Expand All @@ -425,7 +425,7 @@ void f3f8::draw() {
* Graphical Device if modified
* @remarks Originally called 'diver'
*/
void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) {
void DialogManager::checkForF8(int SpeechNum, bool drawAni50Fl) {
g_vm->testKeyboard();
do {
g_vm->_speechManager.startSpeech(SpeechNum, 0, 0);
Expand All @@ -445,7 +445,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) {
* Alert function - Loop until F3 or F8 is pressed
* @remarks Originally called 'atf3f8'
*/
int f3f8::waitForF3F8() {
int DialogManager::waitForF3F8() {
int key;

do {
Expand All @@ -457,7 +457,7 @@ int f3f8::waitForF3F8() {
return key;
}

void f3f8::aff50(bool drawAni50Fl) {
void DialogManager::aff50(bool drawAni50Fl) {
g_vm->_caff = 50;
g_vm->_maff = 0;
g_vm->_text.taffich();
Expand All @@ -468,10 +468,10 @@ void f3f8::aff50(bool drawAni50Fl) {
g_vm->handleDescriptionText(2, kDialogStringIndex + 142);

// Draw the f3/f8 dialog
draw();
drawF3F8();
}

void f3f8::ani50() {
void DialogManager::ani50() {
g_vm->_crep = g_vm->animof(1, 1);
g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12);
g_vm->_crep = g_vm->animof(2, 1);
Expand All @@ -480,4 +480,7 @@ void f3f8::ani50() {
g_vm->handleDescriptionText(2, kDialogStringIndex + 143);
}

void DialogManager::setParent(MortevielleEngine *vm) {
_vm = vm;
}
} // End of namespace Mortevielle
34 changes: 15 additions & 19 deletions engines/mortevielle/dialogs.h
Expand Up @@ -32,6 +32,7 @@
#include "common/str.h"

namespace Mortevielle {
class MortevielleEngine;

static const int NUM_LINES = 7;
const int kMaxHotspots = 14;
Expand All @@ -41,28 +42,23 @@ struct Hotspot {
bool _enabled;
};

class Alert {
class DialogManager {
private:
static void decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr);
static void setPosition(int ji, int coldep, int esp);
static void drawAlertBox(int lidep, int nli, int tx);
static void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp);
public:
static int show(const Common::String &msg, int n);
};

class KnowledgeCheck {
public:
static bool show();
};
MortevielleEngine *_vm;

class f3f8 {
void decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr);
void setPosition(int ji, int coldep, int esp);
void drawAlertBox(int lidep, int nli, int tx);
void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp);
public:
static void draw();
static void checkForF8(int SpeechNum, bool drawAni50Fl);
static int waitForF3F8();
static void aff50(bool drawAni50Fl);
static void ani50();
void setParent(MortevielleEngine *vm);
int show(const Common::String &msg, int n);
void drawF3F8();
void checkForF8(int SpeechNum, bool drawAni50Fl);
int waitForF3F8();
void aff50(bool drawAni50Fl);
void ani50();
bool showKnowledgeCheck();
};

} // End of namespace Mortevielle
Expand Down
19 changes: 10 additions & 9 deletions engines/mortevielle/mortevielle.cpp
Expand Up @@ -75,6 +75,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g
_soundManager(_mixer) {
g_vm = this;
_debugger.setParent(this);
_dialogManager.setParent(this);
_screenSurface.setParent(this);
_mouse.setParent(this);
_text.setParent(this);
Expand Down Expand Up @@ -579,14 +580,14 @@ Common::Error MortevielleEngine::run() {
* Show the game introduction
*/
void MortevielleEngine::showIntroduction() {
f3f8::aff50(false);
_dialogManager.aff50(false);
_speechManager._mlec = 0;
f3f8::checkForF8(142, false);
_dialogManager.checkForF8(142, false);
if (shouldQuit())
return;

f3f8::ani50();
f3f8::checkForF8(143, true);
_dialogManager.ani50();
_dialogManager.checkForF8(143, true);
if (shouldQuit())
return;

Expand Down Expand Up @@ -689,7 +690,7 @@ void MortevielleEngine::handleAction() {
if (_menu._menuSelected && (_msg[3] == MENU_LOAD))
_savegameManager.loadGame((_msg[4] & 15) - 1);
if (inkey == '\103') { /* F9 */
temps = Alert::show(_hintPctMessage, 1);
temps = _dialogManager.show(_hintPctMessage, 1);
return;
} else if (inkey == '\77') {
if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) {
Expand Down Expand Up @@ -1753,12 +1754,12 @@ void MortevielleEngine::startDialog(int16 rep) {
_mouse.hideMouse();
Common::String dialogStr = getString(rep + kDialogStringIndex);
_text.displayStr(dialogStr, 230, 4, 65, 24, 5);
f3f8::draw();
_dialogManager.drawF3F8();

key = 0;
do {
_speechManager.startSpeech(rep, haut[_caff - 69], 0);
key = f3f8::waitForF3F8();
key = _dialogManager.waitForF3F8();
if (shouldQuit())
return;
} while (key != 66);
Expand Down Expand Up @@ -2164,7 +2165,7 @@ int MortevielleEngine::getRandomNumber(int minval, int maxval) {
* @remarks Originally called 'aldepl'
*/
void MortevielleEngine::showMoveMenuAlert() {
Alert::show(getEngineString(S_USE_DEP_MENU), 1);
_dialogManager.show(getEngineString(S_USE_DEP_MENU), 1);
}

/**
Expand Down Expand Up @@ -3640,7 +3641,7 @@ void MortevielleEngine::tfleche() {
} while (!(qust || inRect || _anyone));

if (qust && (touch == '\103'))
Alert::show(_hintPctMessage, 1);
_dialogManager.show(_hintPctMessage, 1);
} while (!((touch == '\73') || ((touch == '\104') && (_x != 0) && (_y != 0)) || (_anyone) || (inRect)));

if (touch == '\73')
Expand Down
3 changes: 2 additions & 1 deletion engines/mortevielle/mortevielle.h
Expand Up @@ -38,6 +38,7 @@
#include "common/error.h"
#include "graphics/surface.h"
#include "mortevielle/debugger.h"
#include "mortevielle/dialogs.h"
#include "mortevielle/graphics.h"
#include "mortevielle/menu.h"
#include "mortevielle/mouse.h"
Expand Down Expand Up @@ -487,6 +488,7 @@ class MortevielleEngine : public Engine {
Menu _menu;
MouseHandler _mouse;
TextHandler _text;
DialogManager _dialogManager;

MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc);
~MortevielleEngine();
Expand Down Expand Up @@ -528,7 +530,6 @@ class MortevielleEngine : public Engine {
void pictout(int seg, int dep, int x, int y);
void sauvecr(int y, int dy);
void charecr(int y, int dy);

};

extern MortevielleEngine *g_vm;
Expand Down

0 comments on commit 7a7d812

Please sign in to comment.