aboutsummaryrefslogtreecommitdiff
path: root/queen/logic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'queen/logic.cpp')
-rw-r--r--queen/logic.cpp34
1 files changed, 21 insertions, 13 deletions
diff --git a/queen/logic.cpp b/queen/logic.cpp
index a339ca5688..7706dfb9e4 100644
--- a/queen/logic.cpp
+++ b/queen/logic.cpp
@@ -21,14 +21,15 @@
#include "queen/logic.h"
#include "queen/defs.h"
+#include "queen/display.h"
#include "queen/graphics.h"
#include "queen/walk.h"
#include "common/str.h"
namespace Queen {
-Logic::Logic(Resource *resource, Graphics *graphics)
- : _resource(resource), _graphics(graphics), _talkSpeed(DEFAULT_TALK_SPEED) {
+Logic::Logic(Resource *resource, Graphics *graphics, Display *display)
+ : _resource(resource), _graphics(graphics), _display(display), _talkSpeed(DEFAULT_TALK_SPEED) {
_jas = _resource->loadFile("QUEEN.JAS", 20);
_joe.x = _joe.y = 0;
_walk = new Walk(this, _graphics);
@@ -39,14 +40,11 @@ Logic::Logic(Resource *resource, Graphics *graphics)
Logic::~Logic() {
delete[] _jas;
delete _walk;
- //free(_graphicData);
}
void Logic::initialise() {
int16 i, j;
uint8 *ptr = _jas;
-
- //_display->loadFont();
_numRooms = READ_BE_UINT16(ptr); ptr += 2;
_numNames = READ_BE_UINT16(ptr); ptr += 2;
@@ -293,7 +291,7 @@ void Logic::initialise() {
else
_speechToggle = true;
- _graphics->panelLoad();
+ _graphics->loadPanel();
_graphics->bobSetupControl();
joeSetup();
zoneSetupPanel();
@@ -680,7 +678,6 @@ void Logic::zoneSetup() {
uint16 maxAreaRoom = _areaMax[_currentRoom];
for (zoneNum = 1; zoneNum <= maxAreaRoom; ++zoneNum) {
zoneSet(ZONE_ROOM, maxObjRoom + zoneNum, _area[_currentRoom][zoneNum].box);
- _graphics->boxDraw(_area[_currentRoom][zoneNum].box, 18);
}
}
@@ -716,7 +713,14 @@ void Logic::roomErase() {
_graphics->bankErase(12);
// TODO: TALKHEAD=0;
- // TODO: _display->fadeOut();
+
+ if (_currentRoom >= 114) {
+ _display->palFadeOut(0, 255, _currentRoom);
+ }
+ else {
+ _display->palFadeOut(0, 223, _currentRoom);
+ }
+
// TODO: credits system
// invalidates all persons animations
@@ -1110,16 +1114,15 @@ void Logic::roomSetup(const char* room, int comPanel, bool inCutaway) {
// loads background image
Common::String bdFile(room);
bdFile += ".PCX";
- _graphics->backdropLoad(bdFile.c_str(), _currentRoom);
+ _graphics->loadBackdrop(bdFile.c_str(), _currentRoom);
// setup graphics to enter fullscreen/panel mode
- _graphics->setScreenMode(comPanel, inCutaway);
+ _display->screenMode(comPanel, inCutaway);
// reset sprites table (bounding box...)
_graphics->bobClearAll();
- // setup any hard-coded palette effect
- // TODO: graphics->check_colors(_currentRoom);
+ _display->palCustomColors(_currentRoom);
// load/setup objects associated to this room
Common::String bkFile(room);
@@ -1145,7 +1148,12 @@ void Logic::roomDisplay(const char* room, RoomDisplayMode mode, uint16 scale, in
}
if (mode != RDM_NOFADE_JOE) {
_graphics->update();
- // TODO: _display->fadeIn();
+ if (_currentRoom >= 114) {
+ _display->palFadeIn(0, 255, _currentRoom);
+ }
+ else {
+ _display->palFadeOut(0, 223, _currentRoom);
+ }
}
if (pod != NULL) {
_walk->joeMove(0, pod->x, pod->y, inCutaway);