Removed references to _vm from the engine itself.

svn-id: r35358
This commit is contained in:
Nicola Mettifogo 2008-12-14 10:32:26 +00:00
parent e98bc7e402
commit dc3e9027f4
13 changed files with 50 additions and 51 deletions

View File

@ -261,9 +261,10 @@ class BalloonManager_ns : public BalloonManager {
Balloon *getBalloon(uint id);
Gfx *_gfx;
Font *_font;
public:
BalloonManager_ns(Gfx *gfx);
BalloonManager_ns(Gfx *gfx, Font *font);
~BalloonManager_ns();
void freeBalloons();
@ -276,7 +277,7 @@ public:
int16 BalloonManager_ns::_dialogueBalloonX[5] = { 80, 120, 150, 150, 150 };
BalloonManager_ns::BalloonManager_ns(Gfx *gfx) : _numBalloons(0), _gfx(gfx) {
BalloonManager_ns::BalloonManager_ns(Gfx *gfx, Font *font) : _numBalloons(0), _gfx(gfx), _font(font) {
_textColors[kSelectedColor] = 0;
_textColors[kUnselectedColor] = 3;
_textColors[kNormalColor] = 0;
@ -331,7 +332,7 @@ int BalloonManager_ns::setSingleBalloon(const char *text, uint16 x, uint16 y, ui
int16 w, h;
StringExtent_NS se(_vm->_dialogueFont);
StringExtent_NS se(_font);
se.calc(text, MAX_BALLOON_WIDTH);
w = se.width() + 14;
h = se.height() + 20;
@ -339,7 +340,7 @@ int BalloonManager_ns::setSingleBalloon(const char *text, uint16 x, uint16 y, ui
int id = createBalloon(w+5, h, winding, 1);
Balloon *balloon = &_intBalloons[id];
StringWriter_NS sw(_vm->_dialogueFont);
StringWriter_NS sw(_font);
sw.write(text, MAX_BALLOON_WIDTH, _textColors[textColor], balloon->surface);
// TODO: extract some text to make a name for obj
@ -355,7 +356,7 @@ int BalloonManager_ns::setDialogueBalloon(const char *text, uint16 winding, Text
int16 w, h;
StringExtent_NS se(_vm->_dialogueFont);
StringExtent_NS se(_font);
se.calc(text, MAX_BALLOON_WIDTH);
w = se.width() + 14;
h = se.height() + 20;
@ -364,7 +365,7 @@ int BalloonManager_ns::setDialogueBalloon(const char *text, uint16 winding, Text
int id = createBalloon(w+5, h, winding, 1);
Balloon *balloon = &_intBalloons[id];
StringWriter_NS sw(_vm->_dialogueFont);
StringWriter_NS sw(_font);
sw.write(text, MAX_BALLOON_WIDTH, _textColors[textColor], balloon->surface);
// TODO: extract some text to make a name for obj
@ -385,7 +386,7 @@ void BalloonManager_ns::setBalloonText(uint id, const char *text, TextColor text
Balloon *balloon = getBalloon(id);
balloon->surface->fillRect(balloon->innerBox, 1);
StringWriter_NS sw(_vm->_dialogueFont);
StringWriter_NS sw(_font);
sw.write(text, MAX_BALLOON_WIDTH, _textColors[textColor], balloon->surface);
}
@ -394,14 +395,14 @@ int BalloonManager_ns::setLocationBalloon(const char *text, bool endGame) {
int16 w, h;
StringExtent_NS se(_vm->_dialogueFont);
StringExtent_NS se(_font);
se.calc(text, MAX_BALLOON_WIDTH);
w = se.width() + 14;
h = se.height() + 20;
int id = createBalloon(w+(endGame ? 5 : 10), h+5, -1, BALLOON_TRANSPARENT_COLOR_NS);
Balloon *balloon = &_intBalloons[id];
StringWriter_NS sw(_vm->_dialogueFont);
StringWriter_NS sw(_font);
sw.write(text, MAX_BALLOON_WIDTH, _textColors[kNormalColor], balloon->surface);
// TODO: extract some text to make a name for obj
@ -548,6 +549,7 @@ class BalloonManager_br : public BalloonManager {
Disk *_disk;
Gfx *_gfx;
Font *_font;
Frames *_leftBalloon;
Frames *_rightBalloon;
@ -561,7 +563,7 @@ class BalloonManager_br : public BalloonManager {
StringWriter_BR _writer;
public:
BalloonManager_br(Disk *disk, Gfx *gfx);
BalloonManager_br(Disk *disk, Gfx *gfx, Font *font);
~BalloonManager_br();
void freeBalloons();
@ -669,7 +671,7 @@ int BalloonManager_br::setDialogueBalloon(const char *text, uint16 winding, Text
void BalloonManager_br::setBalloonText(uint id, const char *text, TextColor textColor) {
Balloon *balloon = getBalloon(id);
StringWriter_BR sw(_vm->_dialogueFont);
StringWriter_BR sw(_font);
sw.write(text, 216, _textColors[textColor], balloon->surface);
}
@ -693,7 +695,7 @@ int BalloonManager_br::createBalloon(int16 w, int16 h, uint16 borderThickness) {
}
int BalloonManager_br::setLocationBalloon(const char *text, bool endGame) {
StringExtent_BR se(_vm->_dialogueFont);
StringExtent_BR se(_font);
se.calc(text, 240);
@ -742,8 +744,8 @@ void BalloonManager_br::cacheAnims() {
BalloonManager_br::BalloonManager_br(Disk *disk, Gfx *gfx) : _numBalloons(0), _disk(disk), _gfx(gfx),
_leftBalloon(0), _rightBalloon(0), _writer(_vm->_dialogueFont) {
BalloonManager_br::BalloonManager_br(Disk *disk, Gfx *gfx, Font *font) : _numBalloons(0), _disk(disk), _gfx(gfx), _font(font),
_leftBalloon(0), _rightBalloon(0), _writer(_font) {
_textColors[kSelectedColor] = 12;
_textColors[kUnselectedColor] = 0;
@ -756,11 +758,11 @@ BalloonManager_br::~BalloonManager_br() {
}
void Parallaction::setupBalloonManager() {
if (_vm->getGameType() == GType_Nippon) {
_balloonMan = new BalloonManager_ns(_vm->_gfx);
if (getGameType() == GType_Nippon) {
_balloonMan = new BalloonManager_ns(_gfx, _dialogueFont);
} else
if (_vm->getGameType() == GType_BRA) {
_balloonMan = new BalloonManager_br(_vm->_disk, _vm->_gfx);
if (getGameType() == GType_BRA) {
_balloonMan = new BalloonManager_br(_disk, _gfx, _dialogueFont);
} else {
error("Unknown game type");
}

View File

@ -171,7 +171,7 @@ void Parallaction_ns::_c_fade(void *parm) {
_gfx->setPalette(pal);
_gfx->updateScreen();
_vm->_system->delayMillis(20);
_system->delayMillis(20);
}
return;
@ -306,7 +306,7 @@ void Parallaction_ns::_c_endComment(void *param) {
_gfx->setPalette(_gfx->_palette);
_gfx->updateScreen();
_vm->_system->delayMillis(20);
_system->delayMillis(20);
}
_input->waitForButtonEvent(kMouseLeftUp);
@ -325,10 +325,10 @@ void Parallaction_ns::_c_frankenstein(void *parm) {
}
for (uint16 _di = 0; _di < 30; _di++) {
_vm->_system->delayMillis(20);
_system->delayMillis(20);
_gfx->setPalette(pal0);
_gfx->updateScreen();
_vm->_system->delayMillis(20);
_system->delayMillis(20);
_gfx->setPalette(pal1);
_gfx->updateScreen();
}

View File

@ -409,7 +409,7 @@ void Parallaction::exitDialogueMode() {
_input->_inputMode = Input::kInputModeGame;
if (_dialogueMan->_cmdList) {
_vm->_cmdExec->run(*_dialogueMan->_cmdList);
_cmdExec->run(*_dialogueMan->_cmdList);
}
// The current instance of _dialogueMan must be destroyed before the zone commands

View File

@ -152,6 +152,7 @@ protected:
void loadMask(BackgroundInfo& info, const char *name);
void loadPath(BackgroundInfo& info, const char *name);
void loadBackground(BackgroundInfo& info, const char *name);
void buildMask(byte* buf);
public:
AmigaDisk_ns(Parallaction *vm);

View File

@ -914,7 +914,7 @@ Common::SeekableReadStream *AmigaDisk_ns::tryOpenFile(const char* name) {
NOTE: this routine is only able to build masks for Nippon Safes, since mask widths are hardcoded
into the main loop.
*/
void buildMask(byte* buf) {
void AmigaDisk_ns::buildMask(byte* buf) {
byte mask1[16] = { 0, 0x80, 0x20, 0xA0, 8, 0x88, 0x28, 0xA8, 2, 0x82, 0x22, 0xA2, 0xA, 0x8A, 0x2A, 0xAA };
byte mask0[16] = { 0, 0x40, 0x10, 0x50, 4, 0x44, 0x14, 0x54, 1, 0x41, 0x11, 0x51, 0x5, 0x45, 0x15, 0x55 };

View File

@ -44,6 +44,8 @@ class Parallaction_br;
class CommandExec {
protected:
Parallaction *_vm;
struct ParallactionStruct1 {
CommandPtr cmd;
ZonePtr z;
@ -69,7 +71,7 @@ public:
virtual void run(CommandList &list, ZonePtr z = nullZonePtr);
void runSuspended();
CommandExec() {
CommandExec(Parallaction *vm) : _vm(vm) {
_suspendedCtxt.valid = false;
}
virtual ~CommandExec() {

View File

@ -438,7 +438,7 @@ void CommandExec::runSuspended() {
}
}
CommandExec_ns::CommandExec_ns(Parallaction_ns* vm) : _vm(vm) {
CommandExec_ns::CommandExec_ns(Parallaction_ns* vm) : CommandExec(vm), _vm(vm) {
}

View File

@ -73,8 +73,9 @@ int32 Gfx::getVar(const Common::String &name) {
#define LABEL_TRANSPARENT_COLOR 0xFF
void halfbritePixel(int x, int y, int color, void *data) {
byte *buffer = (byte*)data;
buffer[x + y * _vm->_screenWidth] &= ~0x20;
Graphics::Surface *surf = (Graphics::Surface *)data;
byte *pixel = (byte*)surf->getBasePtr(x, y);
*pixel &= ~0x20;
}
void drawCircleLine(int xCenter, int yCenter, int x, int y, int color, void (*plotProc)(int, int, int, void *), void *data){
@ -524,7 +525,7 @@ void Gfx::applyHalfbriteEffect_NS(Graphics::Surface &surf) {
}
}
if (_hbCircleRadius > 0) {
drawCircle(_hbCirclePos.x, _hbCirclePos.y, _hbCircleRadius, 0, &halfbritePixel, surf.pixels);
drawCircle(_hbCirclePos.x, _hbCirclePos.y, _hbCircleRadius, 0, &halfbritePixel, &surf);
}
}

View File

@ -42,9 +42,7 @@
namespace Parallaction {
// FIXME: remove this
Parallaction *_vm = NULL;
// public stuff
char _saveData1[30] = { '\0' };
@ -61,11 +59,7 @@ uint32 _globalFlags = 0;
Parallaction::Parallaction(OSystem *syst, const PARALLACTIONGameDescription *gameDesc) :
Engine(syst), _gameDescription(gameDesc), _char(this) {
// FIXME: Fingolfin asks: why is there a FIXME here? Please either clarify what
// needs fixing, or remove it!
// FIXME
_vm = this;
Common::addSpecialDebugLevel(kDebugDialogue, "dialogue", "Dialogues debug level");
Common::addSpecialDebugLevel(kDebugParser, "parser", "Parser debug level");
Common::addSpecialDebugLevel(kDebugDisk, "disk", "Disk debug level");
@ -161,7 +155,7 @@ void Parallaction::updateView() {
//foot.y -= ...
int min = SCROLL_BAND_WIDTH;
int max = _vm->_screenWidth - SCROLL_BAND_WIDTH;
int max = _screenWidth - SCROLL_BAND_WIDTH;
if (foot.x < min) {
scrollX -= (min - foot.x);
@ -175,7 +169,7 @@ void Parallaction::updateView() {
_gfx->animatePalette();
_gfx->updateScreen();
_vm->_system->delayMillis(30);
_system->delayMillis(30);
}
@ -296,8 +290,8 @@ void Parallaction::showSlide(const char *name, int x, int y) {
BackgroundInfo *info = new BackgroundInfo;
_disk->loadSlide(*info, name);
info->x = (x == CENTER_LABEL_HORIZONTAL) ? ((_vm->_screenWidth - info->width) >> 1) : x;
info->y = (y == CENTER_LABEL_VERTICAL) ? ((_vm->_screenHeight - info->height) >> 1) : y;
info->x = (x == CENTER_LABEL_HORIZONTAL) ? ((_screenWidth - info->width) >> 1) : x;
info->y = (y == CENTER_LABEL_VERTICAL) ? ((_screenHeight - info->height) >> 1) : y;
_gfx->setBackground(kBackgroundSlide, info);
}
@ -411,7 +405,7 @@ void Parallaction::doLocationEnterTransition() {
pal.fadeTo(_gfx->_palette, 4);
_gfx->setPalette(pal);
_gfx->updateScreen();
_vm->_system->delayMillis(20);
_system->delayMillis(20);
}
_gfx->setPalette(_gfx->_palette);

View File

@ -519,7 +519,6 @@ private:
void _c_password(void*);
};
// FIXME: remove global
extern Parallaction *_vm;

View File

@ -267,8 +267,8 @@ void Parallaction_br::parseLocation(const char *filename) {
delete script;
// this loads animation scripts
AnimationList::iterator it = _vm->_location._animations.begin();
for ( ; it != _vm->_location._animations.end(); it++) {
AnimationList::iterator it = _location._animations.begin();
for ( ; it != _location._animations.end(); it++) {
if ((*it)->_scriptName) {
loadProgram(*it, (*it)->_scriptName);
}
@ -289,7 +289,7 @@ void Parallaction_br::loadProgram(AnimationPtr a, const char *filename) {
delete script;
_vm->_location._programs.push_back(program);
_location._programs.push_back(program);
debugC(1, kDebugParser, "loadProgram() done");

View File

@ -141,8 +141,8 @@ void LocationName::bind(const char *s) {
strcpy(_buf, s); // kept as reference
}
Parallaction_ns::Parallaction_ns(OSystem* syst, const PARALLACTIONGameDescription *gameDesc) : Parallaction(syst, gameDesc),
_locationParser(0), _programParser(0) {
Parallaction_ns::Parallaction_ns(OSystem* syst, const PARALLACTIONGameDescription *gameDesc) : Parallaction(syst, gameDesc),
_locationParser(0), _programParser(0) {
}
Common::Error Parallaction_ns::init() {
@ -260,7 +260,7 @@ void Parallaction_ns::switchBackground(const char* background, const char* mask)
v2 += 4;
}
_vm->_system->delayMillis(20);
_system->delayMillis(20);
_gfx->setPalette(pal);
_gfx->updateScreen();
}
@ -375,15 +375,15 @@ void Parallaction_ns::parseLocation(const char *filename) {
// TODO: the following two lines are specific to Nippon Safes
// and should be moved into something like 'initializeParsing()'
_vm->_location._hasSound = false;
_location._hasSound = false;
_locationParser->parse(script);
delete script;
// this loads animation scripts
AnimationList::iterator it = _vm->_location._animations.begin();
for ( ; it != _vm->_location._animations.end(); it++) {
AnimationList::iterator it = _location._animations.begin();
for ( ; it != _location._animations.end(); it++) {
if ((*it)->_scriptName) {
loadProgram(*it, (*it)->_scriptName);
}

View File

@ -356,7 +356,7 @@ void Parallaction_ns::loadProgram(AnimationPtr a, const char *filename) {
delete script;
_vm->_location._programs.push_back(program);
_location._programs.push_back(program);
debugC(1, kDebugParser, "loadProgram() done");