aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/xeen/combat.cpp7
-rw-r--r--engines/xeen/cutscenes.cpp22
-rw-r--r--engines/xeen/dialogs.cpp5
-rw-r--r--engines/xeen/dialogs_automap.cpp33
-rw-r--r--engines/xeen/dialogs_char_info.cpp4
-rw-r--r--engines/xeen/dialogs_dismiss.cpp1
-rw-r--r--engines/xeen/dialogs_error.cpp1
-rw-r--r--engines/xeen/dialogs_exchange.cpp1
-rw-r--r--engines/xeen/dialogs_input.cpp11
-rw-r--r--engines/xeen/dialogs_items.cpp22
-rw-r--r--engines/xeen/dialogs_party.cpp3
-rw-r--r--engines/xeen/dialogs_query.cpp8
-rw-r--r--engines/xeen/dialogs_quests.cpp3
-rw-r--r--engines/xeen/dialogs_quick_ref.cpp1
-rw-r--r--engines/xeen/dialogs_spells.cpp23
-rw-r--r--engines/xeen/font.cpp13
-rw-r--r--engines/xeen/font.h18
-rw-r--r--engines/xeen/interface.cpp61
-rw-r--r--engines/xeen/party.cpp2
-rw-r--r--engines/xeen/screen.cpp73
-rw-r--r--engines/xeen/screen.h26
-rw-r--r--engines/xeen/scripts.cpp2
-rw-r--r--engines/xeen/sprites.cpp10
-rw-r--r--engines/xeen/sprites.h23
-rw-r--r--engines/xeen/town.cpp60
-rw-r--r--engines/xeen/window.cpp70
-rw-r--r--engines/xeen/window.h33
-rw-r--r--engines/xeen/worldofxeen/clouds_cutscenes.cpp74
-rw-r--r--engines/xeen/worldofxeen/darkside_cutscenes.cpp140
-rw-r--r--engines/xeen/worldofxeen/worldofxeen_menu.cpp7
30 files changed, 351 insertions, 406 deletions
diff --git a/engines/xeen/combat.cpp b/engines/xeen/combat.cpp
index 72db1812be..4a952fa79d 100644
--- a/engines/xeen/combat.cpp
+++ b/engines/xeen/combat.cpp
@@ -133,7 +133,6 @@ void Combat::clear() {
void Combat::giveCharDamage(int damage, DamageType attackType, int charIndex) {
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Scripts &scripts = *_vm->_scripts;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
@@ -221,8 +220,7 @@ void Combat::giveCharDamage(int damage, DamageType attackType, int charIndex) {
// Draw the attack effect on the character sprite
sound.playFX(fx);
- _powSprites.draw(screen, frame,
- Common::Point(Res.CHAR_FACES_X[selectedIndex1], 150));
+ _powSprites.draw(0, frame, Common::Point(Res.CHAR_FACES_X[selectedIndex1], 150));
windows[33].update();
// Reduce damage if power shield active, and set it zero
@@ -265,7 +263,6 @@ void Combat::doCharDamage(Character &c, int charNum, int monsterDataIndex) {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
MonsterStruct &monsterData = map._monsterData[monsterDataIndex];
@@ -322,7 +319,7 @@ void Combat::doCharDamage(Character &c, int charNum, int monsterDataIndex) {
}
sound.playFX(fx);
- intf._charPowSprites.draw(screen, frame, Common::Point(Res.CHAR_FACES_X[charNum], 150));
+ intf._charPowSprites.draw(0, frame, Common::Point(Res.CHAR_FACES_X[charNum], 150));
windows[33].update();
damage -= party._powerShield;
diff --git a/engines/xeen/cutscenes.cpp b/engines/xeen/cutscenes.cpp
index 0627519ad8..4df737263d 100644
--- a/engines/xeen/cutscenes.cpp
+++ b/engines/xeen/cutscenes.cpp
@@ -60,7 +60,7 @@ void Cutscenes::showSubtitles(uint windowIndex) {
if (!_boxSprites)
// Not already loaded, so load it
_boxSprites = new SpriteResource("box.vga");
- _boxSprites->draw(screen, 0, Common::Point(36, 189));
+ _boxSprites->draw(0, 0, Common::Point(36, 189));
// Write the subtitle line
windows[windowIndex].writeString(_subtitleLine);
@@ -150,15 +150,15 @@ bool Cutscenes::doScroll(bool rollUp, bool fadeIn) {
screen.restoreBackground();
if (i > 14) {
- hand[14]->draw(screen, 0, Common::Point(SCROLL_L[ctr], 0), SPRFLAG_800);
- hand[15]->draw(screen, 0, Common::Point(SCROLL_R[ctr], 0), SPRFLAG_800);
+ hand[14]->draw(0, 0, Common::Point(SCROLL_L[ctr], 0), SPRFLAG_800);
+ hand[15]->draw(0, 0, Common::Point(SCROLL_R[ctr], 0), SPRFLAG_800);
--ctr;
} else if (i != 0) {
- hand[i - 1]->draw(screen, 0);
+ hand[i - 1]->draw(0, 0);
}
if (i <= 20)
- marb[(i - 1) / 5]->draw(screen, (i - 1) % 5);
+ marb[(i - 1) / 5]->draw(0, (i - 1) % 5);
screen.update();
while (!_vm->shouldQuit() && events.timeElapsed() == 0)
@@ -174,15 +174,15 @@ bool Cutscenes::doScroll(bool rollUp, bool fadeIn) {
screen.restoreBackground();
if (i < 14) {
- hand[i]->draw(screen, 0);
+ hand[i]->draw(0, 0);
} else {
- hand[14]->draw(screen, 0, Common::Point(SCROLL_L[ctr], 0), SPRFLAG_800);
- hand[15]->draw(screen, 0, Common::Point(SCROLL_R[ctr], 0), SPRFLAG_800);
+ hand[14]->draw(0, 0, Common::Point(SCROLL_L[ctr], 0), SPRFLAG_800);
+ hand[15]->draw(0, 0, Common::Point(SCROLL_R[ctr], 0), SPRFLAG_800);
++ctr;
}
if (i < 20) {
- marb[i / 5]->draw(screen, i % 5);
+ marb[i / 5]->draw(0, i % 5);
}
screen.update();
@@ -195,8 +195,8 @@ bool Cutscenes::doScroll(bool rollUp, bool fadeIn) {
}
if (rollUp) {
- hand[0]->draw(screen, 0);
- marb[0]->draw(screen, 0);
+ hand[0]->draw(0, 0);
+ marb[0]->draw(0, 0);
} else {
screen.restoreBackground();
}
diff --git a/engines/xeen/dialogs.cpp b/engines/xeen/dialogs.cpp
index 9141b89296..4875c2f0a9 100644
--- a/engines/xeen/dialogs.cpp
+++ b/engines/xeen/dialogs.cpp
@@ -63,7 +63,6 @@ void ButtonContainer::addPartyButtons(XeenEngine *vm) {
bool ButtonContainer::checkEvents(XeenEngine *vm) {
EventsManager &events = *vm->_events;
- Screen &screen = *vm->_screen;
Windows &windows = *_vm->_windows;
_buttonValue = 0;
@@ -107,7 +106,7 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) {
if (btn._draw && btn._value == _buttonValue) {
// Found the correct button
// Draw button depressed
- btn._sprites->draw(screen, btnIndex * 2 + 1,
+ btn._sprites->draw(0, btnIndex * 2 + 1,
Common::Point(btn._bounds.left, btn._bounds.top));
win.setBounds(btn._bounds);
win.update();
@@ -117,7 +116,7 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) {
events.wait(2);
// Redraw button in it's original non-depressed form
- btn._sprites->draw(screen, btnIndex * 2,
+ btn._sprites->draw(0, btnIndex * 2,
Common::Point(btn._bounds.left, btn._bounds.top));
win.setBounds(btn._bounds);
win.update();
diff --git a/engines/xeen/dialogs_automap.cpp b/engines/xeen/dialogs_automap.cpp
index 0138f3e340..cc76623deb 100644
--- a/engines/xeen/dialogs_automap.cpp
+++ b/engines/xeen/dialogs_automap.cpp
@@ -34,7 +34,6 @@ void AutoMapDialog::show(XeenEngine *vm) {
}
void AutoMapDialog::execute() {
- Screen &screen = *_vm->_screen;
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
@@ -91,7 +90,7 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(xDiff, yDiff), 0);
if (map._currentSteppedOn) {
- map._tileSprites.draw(screen, map.mazeDataCurrent()._surfaceTypes[v],
+ map._tileSprites.draw(0, map.mazeDataCurrent()._surfaceTypes[v],
Common::Point(xp, yp));
}
}
@@ -103,7 +102,7 @@ void AutoMapDialog::execute() {
int wallType = map.mazeDataCurrent()._wallTypes[v];
if (wallType && map._currentSteppedOn)
- map._tileSprites.draw(screen, wallType, Common::Point(xp, yp));
+ map._tileSprites.draw(0, wallType, Common::Point(xp, yp));
}
}
@@ -112,7 +111,7 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(xDiff, yDiff), 8);
if (v && map._currentSteppedOn)
- map._tileSprites.draw(screen, 1, Common::Point(xp, yp));
+ map._tileSprites.draw(0, 1, Common::Point(xp, yp));
}
}
} else {
@@ -125,7 +124,7 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(xDiff, yDiff), 0, 0xffff);
if (v != INVALID_CELL && map._currentSteppedOn)
- map._tileSprites.draw(screen, 0, Common::Point(xp, yp));
+ map._tileSprites.draw(0, 0, Common::Point(xp, yp));
}
}
@@ -134,14 +133,14 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(pt.x - 8, yDiff), 0, 0xffff);
if (v != INVALID_CELL && map._currentSurfaceId != 0 && map._currentSteppedOn)
- map._tileSprites.draw(screen, 36 + map.mazeData()._surfaceTypes[
+ map._tileSprites.draw(0, 36 + map.mazeData()._surfaceTypes[
map._currentSurfaceId], Common::Point(75, yp));
}
// Draw thin tile portion on top-left corner of map
v = map.mazeLookup(Common::Point(pt.x - 8, pt.y + 8), 0, 0xffff);
if (v != INVALID_CELL && map._currentSurfaceId != 0 && map._currentSteppedOn)
- map._tileSprites.draw(screen, 36 + map.mazeData()._surfaceTypes[
+ map._tileSprites.draw(0, 36 + map.mazeData()._surfaceTypes[
map._currentSurfaceId], Common::Point(75, 35));
// Draw any thin tiles at the very top of the map
@@ -149,7 +148,7 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(xDiff, pt.y + 8), 0, 0xffff);
if (v != INVALID_CELL && map._currentSurfaceId != 0 && map._currentSteppedOn)
- map._tileSprites.draw(screen, 36 + map.mazeData()._surfaceTypes[
+ map._tileSprites.draw(0, 36 + map.mazeData()._surfaceTypes[
map._currentSurfaceId], Common::Point(xp, 35));
}
@@ -159,7 +158,7 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(xDiff, yDiff), 0, 0xffff);
if (v != INVALID_CELL && map._currentSurfaceId && map._currentSteppedOn)
- map._tileSprites.draw(screen, map.mazeData()._surfaceTypes[
+ map._tileSprites.draw(0, map.mazeData()._surfaceTypes[
map._currentSurfaceId], Common::Point(xp, yp));
}
}
@@ -216,7 +215,7 @@ void AutoMapDialog::execute() {
}
if (frame != -1 && map._currentSteppedOn)
- map._tileSprites.draw(screen, frame, Common::Point(70, yp));
+ map._tileSprites.draw(0, frame, Common::Point(70, yp));
// Draw walls on top edge of map
v = map.mazeLookup(Common::Point(xDiff, pt.y + 8), 0);
@@ -269,7 +268,7 @@ void AutoMapDialog::execute() {
}
if (frame != -1 && map._currentSteppedOn)
- map._tileSprites.draw(screen, frame, Common::Point(xp, 30));
+ map._tileSprites.draw(0, frame, Common::Point(xp, 30));
}
// Draw any walls on the cells
@@ -277,7 +276,7 @@ void AutoMapDialog::execute() {
for (int xCtr = 0, xp = 80, xDiff = pt.x - 7; xCtr < 16; ++xCtr, xp += 10, ++xDiff) {
// Draw the arrow if at the correct position
if ((arrowPt.x / 10) == xCtr && (14 - (arrowPt.y / 10)) == yCtr && frameEndFlag) {
- globalSprites.draw(screen, party._mazeDirection + 1,
+ globalSprites.draw(0, party._mazeDirection + 1,
Common::Point(arrowPt.x + 81, arrowPt.y + 29));
}
@@ -331,7 +330,7 @@ void AutoMapDialog::execute() {
}
if (frame != -1 && map._currentSteppedOn)
- map._tileSprites.draw(screen, frame, Common::Point(xp, yp));
+ map._tileSprites.draw(0, frame, Common::Point(xp, yp));
v = map.mazeLookup(Common::Point(xDiff, yDiff), 0);
switch (v) {
@@ -382,7 +381,7 @@ void AutoMapDialog::execute() {
}
if (frame != -1 && map._currentSteppedOn)
- map._tileSprites.draw(screen, frame, Common::Point(xp, yp));
+ map._tileSprites.draw(0, frame, Common::Point(xp, yp));
}
}
@@ -392,16 +391,16 @@ void AutoMapDialog::execute() {
v = map.mazeLookup(Common::Point(xDiff, yDiff), 0, 0xffff);
if (v == INVALID_CELL || !map._currentSteppedOn)
- map._tileSprites.draw(screen, 1, Common::Point(xp, yp));
+ map._tileSprites.draw(0, 1, Common::Point(xp, yp));
}
}
}
windows[5].frame();
if (!map._isOutdoors) {
- map._tileSprites.draw(screen, 52, Common::Point(76, 30));
+ map._tileSprites.draw(0, 52, Common::Point(76, 30));
} else if (frameEndFlag) {
- globalSprites.draw(screen, party._mazeDirection + 1,
+ globalSprites.draw(0, party._mazeDirection + 1,
Common::Point(arrowPt.x + 76, arrowPt.y + 25));
}
diff --git a/engines/xeen/dialogs_char_info.cpp b/engines/xeen/dialogs_char_info.cpp
index 36ed32a2e8..187845fe4e 100644
--- a/engines/xeen/dialogs_char_info.cpp
+++ b/engines/xeen/dialogs_char_info.cpp
@@ -40,7 +40,6 @@ void CharacterInfo::execute(int charIndex) {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
bool redrawFlag = true;
@@ -319,12 +318,11 @@ Common::String CharacterInfo::loadCharacterDetails(const Character &c) {
}
void CharacterInfo::showCursor(bool flag) {
- Screen &screen = *_vm->_screen;
const int CURSOR_X[5] = { 9, 60, 111, 176, 0 };
const int CURSOR_Y[5] = { 23, 46, 69, 92, 115 };
if (_cursorCell < 20) {
- _iconSprites.draw(screen, flag ? 49 : 48,
+ _iconSprites.draw(0, flag ? 49 : 48,
Common::Point(CURSOR_X[_cursorCell / 5], CURSOR_Y[_cursorCell % 5]));
}
}
diff --git a/engines/xeen/dialogs_dismiss.cpp b/engines/xeen/dialogs_dismiss.cpp
index 9eb47bdcac..25edb6ba89 100644
--- a/engines/xeen/dialogs_dismiss.cpp
+++ b/engines/xeen/dialogs_dismiss.cpp
@@ -34,7 +34,6 @@ void Dismiss::show(XeenEngine *vm) {
}
void Dismiss::execute() {
- Screen &screen = *_vm->_screen;
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
diff --git a/engines/xeen/dialogs_error.cpp b/engines/xeen/dialogs_error.cpp
index d8697b05d9..7582f17986 100644
--- a/engines/xeen/dialogs_error.cpp
+++ b/engines/xeen/dialogs_error.cpp
@@ -34,7 +34,6 @@ void ErrorDialog::show(XeenEngine *vm, const Common::String &msg, ErrorWaitType
}
void ErrorDialog::execute(const Common::String &msg, ErrorWaitType waitType) {
- Screen &screen = *_vm->_screen;
EventsManager &events = *_vm->_events;
Windows &windows = *_vm->_windows;
Window &w = windows[6];
diff --git a/engines/xeen/dialogs_exchange.cpp b/engines/xeen/dialogs_exchange.cpp
index d8b4ba27ff..dc994ac8b9 100644
--- a/engines/xeen/dialogs_exchange.cpp
+++ b/engines/xeen/dialogs_exchange.cpp
@@ -33,7 +33,6 @@ void ExchangeDialog::show(XeenEngine *vm, Character *&c, int &charIndex) {
}
void ExchangeDialog::execute(Character *&c, int &charIndex) {
- Screen &screen = *_vm->_screen;
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
diff --git a/engines/xeen/dialogs_input.cpp b/engines/xeen/dialogs_input.cpp
index c18b964e73..05f3754732 100644
--- a/engines/xeen/dialogs_input.cpp
+++ b/engines/xeen/dialogs_input.cpp
@@ -118,8 +118,6 @@ Common::KeyCode Input::waitForKey(const Common::String &msg) {
}
void Input::animateCursor() {
- Screen &screen = *_vm->_screen;
-
// Iterate through each frame
_cursorAnimIndex = _cursorAnimIndex ? _cursorAnimIndex - 1 : 5;
static const int CURSOR_ANIMATION_IDS[] = { 32, 124, 126, 127, 126, 124 };
@@ -128,9 +126,9 @@ void Input::animateCursor() {
Common::String cursorStr = Common::String::format("%c",
CURSOR_ANIMATION_IDS[_cursorAnimIndex]);
- Common::Point writePos = screen._writePos;
+ Common::Point writePos = _window->_writePos;
_window->writeString(cursorStr);
- screen._writePos = writePos;
+ _window->_writePos = writePos;
}
/*------------------------------------------------------------------------*/
@@ -227,7 +225,6 @@ int Choose123::show(XeenEngine *vm, int numOptions) {
int Choose123::execute(int numOptions) {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
- Screen &screen = *_vm->_screen;
Town &town = *_vm->_town;
Windows &windows = *_vm->_windows;
@@ -235,8 +232,8 @@ int Choose123::execute(int numOptions) {
_vm->_mode = MODE_DIALOG_123;
loadButtons(numOptions);
- _iconSprites.draw(screen, 7, Common::Point(232, 74));
- drawButtons(&screen);
+ _iconSprites.draw(0, 7, Common::Point(232, 74));
+ drawButtons(&windows[0]);
windows[34].update();
int result = -1;
diff --git a/engines/xeen/dialogs_items.cpp b/engines/xeen/dialogs_items.cpp
index 41ba1e635e..84016358f6 100644
--- a/engines/xeen/dialogs_items.cpp
+++ b/engines/xeen/dialogs_items.cpp
@@ -41,7 +41,6 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Character *startingChar = c;
@@ -100,7 +99,7 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
}
windows[29].writeString(msg);
- drawButtons(&screen);
+ drawButtons(&windows[0]);
Common::fill(&arr[0], &arr[40], 0);
itemIndex = -1;
@@ -110,26 +109,26 @@ Character *ItemsDialog::execute(Character *c, ItemsMode mode) {
lines.clear();
if (mode == ITEMMODE_CHAR_INFO || category != 3) {
- _iconSprites.draw(screen, 8, Common::Point(148, 109));
+ _iconSprites.draw(0, 8, Common::Point(148, 109));
}
if (mode != ITEMMODE_ENCHANT && mode != ITEMMODE_RECHARGE && mode != ITEMMODE_TO_GOLD) {
- _iconSprites.draw(screen, 10, Common::Point(182, 109));
- _iconSprites.draw(screen, 12, Common::Point(216, 109));
- _iconSprites.draw(screen, 14, Common::Point(250, 109));
+ _iconSprites.draw(0, 10, Common::Point(182, 109));
+ _iconSprites.draw(0, 12, Common::Point(216, 109));
+ _iconSprites.draw(0, 14, Common::Point(250, 109));
}
switch (mode) {
case ITEMMODE_CHAR_INFO:
- _iconSprites.draw(screen, 9, Common::Point(148, 109));
+ _iconSprites.draw(0, 9, Common::Point(148, 109));
break;
case ITEMMODE_BLACKSMITH:
- _iconSprites.draw(screen, 11, Common::Point(182, 109));
+ _iconSprites.draw(0, 11, Common::Point(182, 109));
break;
case ITEMMODE_REPAIR:
- _iconSprites.draw(screen, 15, Common::Point(250, 109));
+ _iconSprites.draw(0, 15, Common::Point(250, 109));
break;
case ITEMMODE_IDENTIFY:
- _iconSprites.draw(screen, 13, Common::Point(216, 109));
+ _iconSprites.draw(0, 13, Common::Point(216, 109));
break;
default:
break;
@@ -776,7 +775,6 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Spells &spells = *_vm->_spells;
Windows &windows = *_vm->_windows;
@@ -807,7 +805,7 @@ int ItemsDialog::doItemOptions(Character &c, int actionIndex, int itemIndex, Ite
w.open();
w.writeString(Common::String::format(Res.WHICH_ITEM, Res.ITEM_ACTIONS[actionIndex]));
- _iconSprites.draw(screen, 0, Common::Point(235, 111));
+ _iconSprites.draw(0, 0, Common::Point(235, 111));
w.update();
while (!_vm->shouldQuit()) {
diff --git a/engines/xeen/dialogs_party.cpp b/engines/xeen/dialogs_party.cpp
index 02be827078..e1e080a1db 100644
--- a/engines/xeen/dialogs_party.cpp
+++ b/engines/xeen/dialogs_party.cpp
@@ -696,7 +696,6 @@ void PartyDialog::createChar() {
int PartyDialog::selectCharacter(bool isDelete, int firstDisplayChar) {
EventsManager &events = *_vm->_events;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Window &w = windows[28];
@@ -899,7 +898,6 @@ void PartyDialog::drawDice(SpriteResource &dice) {
int PartyDialog::exchangeAttribute(int srcAttr) {
EventsManager &events = *_vm->_events;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
SpriteResource icons;
icons.load("create2.icn");
@@ -982,7 +980,6 @@ bool PartyDialog::saveCharacter(Character &c, int classId,
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Window &w = windows[6];
Common::String name;
diff --git a/engines/xeen/dialogs_query.cpp b/engines/xeen/dialogs_query.cpp
index bd20da262b..f1dcbf1891 100644
--- a/engines/xeen/dialogs_query.cpp
+++ b/engines/xeen/dialogs_query.cpp
@@ -34,7 +34,6 @@ bool Confirm::show(XeenEngine *vm, const Common::String &msg, int mode) {
}
bool Confirm::execute(const Common::String &msg, int mode) {
- Screen &screen = *_vm->_screen;
EventsManager &events = *_vm->_events;
Windows &windows = *_vm->_windows;
SpriteResource confirmSprites;
@@ -103,7 +102,6 @@ bool YesNo::execute(bool type, bool townFlag) {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
Town &town = *_vm->_town;
Windows &windows = *_vm->_windows;
SpriteResource confirmSprites;
@@ -114,9 +112,9 @@ bool YesNo::execute(bool type, bool townFlag) {
if (!type) {
confirmSprites.load("confirm.icn");
- res._globalSprites.draw(screen, 7, Common::Point(232, 74));
- confirmSprites.draw(screen, 0, Common::Point(235, 75));
- confirmSprites.draw(screen, 2, Common::Point(260, 75));
+ res._globalSprites.draw(0, 7, Common::Point(232, 74));
+ confirmSprites.draw(0, 0, Common::Point(235, 75));
+ confirmSprites.draw(0, 2, Common::Point(260, 75));
windows[34].update();
addButton(Common::Rect(235, 75, 259, 95), Common::KEYCODE_y, &confirmSprites);
diff --git a/engines/xeen/dialogs_quests.cpp b/engines/xeen/dialogs_quests.cpp
index 75b44669c8..6667bf5262 100644
--- a/engines/xeen/dialogs_quests.cpp
+++ b/engines/xeen/dialogs_quests.cpp
@@ -39,7 +39,6 @@ void Quests::show(XeenEngine *vm) {
void Quests::execute() {
EventsManager &events = *_vm->_events;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Mode oldMode = _vm->_mode;
int count = 0;
@@ -60,7 +59,7 @@ void Quests::execute() {
}
windows[29].writeString(Res.QUESTS_DIALOG_TEXT);
- drawButtons(&screen);
+ drawButtons(&windows[0]);
while (!_vm->shouldQuit()) {
Common::String lines[MAX_DIALOG_LINES];
diff --git a/engines/xeen/dialogs_quick_ref.cpp b/engines/xeen/dialogs_quick_ref.cpp
index 118db09e84..9254aa21f2 100644
--- a/engines/xeen/dialogs_quick_ref.cpp
+++ b/engines/xeen/dialogs_quick_ref.cpp
@@ -36,7 +36,6 @@ void QuickReferenceDialog::execute() {
Combat &combat = *_vm->_combat;
EventsManager &events = *_vm->_events;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Common::String lines[8];
diff --git a/engines/xeen/dialogs_spells.cpp b/engines/xeen/dialogs_spells.cpp
index ed0857a152..f83a41cadc 100644
--- a/engines/xeen/dialogs_spells.cpp
+++ b/engines/xeen/dialogs_spells.cpp
@@ -43,7 +43,6 @@ Character *SpellsDialog::execute(ButtonContainer *priorDialog, Character *c, int
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Spells &spells = *_vm->_spells;
Windows &windows = *_vm->_windows;
@@ -108,9 +107,9 @@ Character *SpellsDialog::execute(ButtonContainer *priorDialog, Character *c, int
isCasting ? c->_currentSp : party._gold
));
- _scrollSprites.draw(screen, 4, Common::Point(39, 26));
- _scrollSprites.draw(screen, 0, Common::Point(187, 26));
- _scrollSprites.draw(screen, 2, Common::Point(187, 111));
+ _scrollSprites.draw(0, 4, Common::Point(39, 26));
+ _scrollSprites.draw(0, 0, Common::Point(187, 26));
+ _scrollSprites.draw(0, 2, Common::Point(187, 111));
if (isCasting)
_scrollSprites.draw(windows[25], 5, Common::Point(132, 123));
@@ -163,7 +162,7 @@ Character *SpellsDialog::execute(ButtonContainer *priorDialog, Character *c, int
}
if (priorDialog != nullptr)
- priorDialog->drawButtons(&screen);
+ priorDialog->drawButtons(&windows[0]);
windows[10].update();
}
}
@@ -479,7 +478,6 @@ int CastSpell::execute(Character *&c) {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Spells &spells = *_vm->_spells;
Windows &windows = *_vm->_windows;
Window &w = windows[10];
@@ -503,7 +501,7 @@ int CastSpell::execute(Character *&c) {
w.writeString(Common::String::format(Res.CAST_SPELL_DETAILS,
c->_name.c_str(), spells._spellNames[spellId].c_str(),
spCost, gemCost, c->_currentSp));
- drawButtons(&screen);
+ drawButtons(&windows[0]);
w.update();
redrawFlag = false;
@@ -666,7 +664,6 @@ int SelectElement::execute(int spellId) {
Combat &combat = *_vm->_combat;
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
- Screen &screen = *_vm->_screen;
Spells &spells = *_vm->_spells;
Windows &windows = *_vm->_windows;
Window &w = windows[15];
@@ -678,7 +675,7 @@ int SelectElement::execute(int spellId) {
w.open();
w.writeString(Res.WHICH_ELEMENT1);
- drawButtons(&screen);
+ drawButtons(&windows[0]);
w.update();
while (result == 999) {
@@ -687,7 +684,7 @@ int SelectElement::execute(int spellId) {
intf.draw3d(true);
w.frame();
w.writeString(Res.WHICH_ELEMENT2);
- drawButtons(&screen);
+ drawButtons(&windows[0]);
w.update();
do {
@@ -745,7 +742,6 @@ void NotWhileEngaged::show(XeenEngine *vm, int spellId) {
void NotWhileEngaged::execute(int spellId) {
EventsManager &events = *_vm->_events;
- Screen &screen = *_vm->_screen;
Spells &spells = *_vm->_spells;
Windows &windows = *_vm->_windows;
Window &w = windows[6];
@@ -781,7 +777,6 @@ bool LloydsBeacon::execute() {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
Window &w = windows[10];
@@ -815,7 +810,7 @@ bool LloydsBeacon::execute() {
w.open();
w.writeString(Common::String::format(Res.LLOYDS_BEACON,
mapName.c_str(), c._lloydPosition.x, c._lloydPosition.y));
- drawButtons(&screen);
+ drawButtons(&windows[0]);
w.update();
bool result = true;
@@ -886,7 +881,6 @@ int Teleport::show(XeenEngine *vm) {
int Teleport::execute() {
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Window &w = windows[6];
Common::String num;
@@ -993,7 +987,6 @@ void IdentifyMonster::execute() {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
Window &w = windows[17];
diff --git a/engines/xeen/font.cpp b/engines/xeen/font.cpp
index cbb626970a..2a19a770f9 100644
--- a/engines/xeen/font.cpp
+++ b/engines/xeen/font.cpp
@@ -26,13 +26,18 @@
namespace Xeen {
-FontSurface::FontSurface() : XSurface(), _fontData(nullptr), _bgColor(DEFAULT_BG_COLOR),
- _fontReduced(false),_fontJustify(JUSTIFY_NONE), _msgWraps(false), _displayString(nullptr) {
+const byte *FontData::_fontData;
+Common::Point FontData::_writePos;
+byte FontData::_textColors[4];
+byte FontData::_bgColor;
+bool FontData::_fontReduced;
+Justify FontData::_fontJustify;
+
+FontSurface::FontSurface() : XSurface() {
setTextColor(0);
}
-FontSurface::FontSurface(int wv, int hv) : XSurface(wv, hv), _fontData(nullptr), _msgWraps(false),
- _bgColor(DEFAULT_BG_COLOR), _fontReduced(false), _fontJustify(JUSTIFY_NONE), _displayString(nullptr) {
+FontSurface::FontSurface(int wv, int hv) : XSurface(wv, hv), _msgWraps(false), _displayString(nullptr) {
create(w, h);
setTextColor(0);
}
diff --git a/engines/xeen/font.h b/engines/xeen/font.h
index 021205d5e5..d4f10d64b9 100644
--- a/engines/xeen/font.h
+++ b/engines/xeen/font.h
@@ -33,7 +33,16 @@ namespace Xeen {
enum Justify { JUSTIFY_NONE = 0, JUSTIFY_CENTER = 1, JUSTIFY_RIGHT = 2 };
-class FontSurface: public XSurface {
+struct FontData {
+ static const byte *_fontData;
+ static Common::Point _writePos;
+ static byte _textColors[4];
+ static byte _bgColor;
+ static bool _fontReduced;
+ static Justify _fontJustify;
+};
+
+class FontSurface: public XSurface, public FontData {
private:
const char *_displayString;
bool _msgWraps;
@@ -68,13 +77,6 @@ private:
*/
void writeChar(char c, const Common::Rect &clipRect);
public:
- const byte *_fontData;
- Common::Point _writePos;
- byte _textColors[4];
- byte _bgColor;
- bool _fontReduced;
- Justify _fontJustify;
-public:
FontSurface();
FontSurface(int wv, int hv);
virtual ~FontSurface() {}
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp
index 21073bad5d..7db7e850c0 100644
--- a/engines/xeen/interface.cpp
+++ b/engines/xeen/interface.cpp
@@ -50,10 +50,9 @@ void PartyDrawer::drawParty(bool updateFlag) {
Combat &combat = *_vm->_combat;
Party &party = *_vm->_party;
Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
bool inCombat = _vm->_mode == MODE_COMBAT;
- _restoreSprites.draw(screen, 0, Common::Point(8, 149));
+ _restoreSprites.draw(0, 0, Common::Point(8, 149));
// Handle drawing the party faces
uint partyCount = inCombat ? combat._combatParty.size() : party._activeParty.size();
@@ -66,7 +65,7 @@ void PartyDrawer::drawParty(bool updateFlag) {
if (charFrame > 4)
charFrame -= 5;
- sprites->draw(screen, charFrame, Common::Point(Res.CHAR_FACES_X[idx], 150));
+ sprites->draw(0, charFrame, Common::Point(Res.CHAR_FACES_X[idx], 150));
}
for (uint idx = 0; idx < partyCount; ++idx) {
@@ -86,11 +85,11 @@ void PartyDrawer::drawParty(bool updateFlag) {
else
frame = 1;
- _hpSprites.draw(screen, frame, Common::Point(Res.HP_BARS_X[idx], 182));
+ _hpSprites.draw(0, frame, Common::Point(Res.HP_BARS_X[idx], 182));
}
if (_hiliteChar != HILIGHT_CHAR_NONE)
- res._globalSprites.draw(screen, 8, Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
+ res._globalSprites.draw(0, 8, Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
if (updateFlag)
windows[33].update();
@@ -98,18 +97,17 @@ void PartyDrawer::drawParty(bool updateFlag) {
void PartyDrawer::highlightChar(int charId) {
Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
if (charId != _hiliteChar && _hiliteChar != HILIGHT_CHAR_DISABLED) {
// Handle deselecting any previusly selected char
if (_hiliteChar != HILIGHT_CHAR_NONE) {
- res._globalSprites.draw(screen, 9 + _hiliteChar,
+ res._globalSprites.draw(0, 9 + _hiliteChar,
Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
}
// Highlight new character
- res._globalSprites.draw(screen, 8, Common::Point(Res.CHAR_FACES_X[charId] - 1, 149));
+ res._globalSprites.draw(0, 8, Common::Point(Res.CHAR_FACES_X[charId] - 1, 149));
_hiliteChar = charId;
windows[33].update();
}
@@ -117,11 +115,10 @@ void PartyDrawer::highlightChar(int charId) {
void PartyDrawer::unhighlightChar() {
Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
if (_hiliteChar != HILIGHT_CHAR_NONE) {
- res._globalSprites.draw(screen, _hiliteChar + 9,
+ res._globalSprites.draw(0, _hiliteChar + 9,
Common::Point(Res.CHAR_FACES_X[_hiliteChar] - 1, 149));
_hiliteChar = HILIGHT_CHAR_NONE;
windows[33].update();
@@ -1749,7 +1746,6 @@ void Interface::drawMiniMap() {
void Interface::assembleBorder() {
Combat &combat = *_vm->_combat;
Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
// Draw the outer frame
@@ -1762,13 +1758,13 @@ void Interface::assembleBorder() {
_levitateUIFrame = (_levitateUIFrame + 1) % 12;
// Draw UI element to indicate whether can spot hidden doors
- _borderSprites.draw(screen,
+ _borderSprites.draw(0,
(_thinWall && _vm->_party->checkSkill(SPOT_DOORS)) ? _spotDoorsUIFrame + 28 : 28,
Common::Point(194, 91));
_spotDoorsUIFrame = (_spotDoorsUIFrame + 1) % 12;
// Draw UI element to indicate whether can sense danger
- _borderSprites.draw(screen,
+ _borderSprites.draw(0,
(combat._dangerPresent && _vm->_party->checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40,
Common::Point(107, 9));
_dangerSenseUIFrame = (_dangerSenseUIFrame + 1) % 12;
@@ -1791,58 +1787,57 @@ void Interface::assembleBorder() {
_face2UIFrame = 8;
}
- _borderSprites.draw(screen, _face1UIFrame, Common::Point(0, 32));
- _borderSprites.draw(screen,
- windows[10]._enabled || windows[2]._enabled ?
- 52 : _face2UIFrame,
+ _borderSprites.draw(0, _face1UIFrame, Common::Point(0, 32));
+ _borderSprites.draw(0,
+ windows[10]._enabled || windows[2]._enabled ? 52 : _face2UIFrame,
Common::Point(215, 32));
// Draw resistence indicators
if (!windows[10]._enabled && !windows[2]._enabled
&& windows[38]._enabled) {
- _fecpSprites.draw(screen, _vm->_party->_fireResistence ? 1 : 0,
+ _fecpSprites.draw(0, _vm->_party->_fireResistence ? 1 : 0,
Common::Point(2, 2));
- _fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 3 : 2,
+ _fecpSprites.draw(0, _vm->_party->_electricityResistence ? 3 : 2,
Common::Point(219, 2));
- _fecpSprites.draw(screen, _vm->_party->_coldResistence ? 5 : 4,
+ _fecpSprites.draw(0, _vm->_party->_coldResistence ? 5 : 4,
Common::Point(2, 134));
- _fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 7 : 6,
+ _fecpSprites.draw(0, _vm->_party->_poisonResistence ? 7 : 6,
Common::Point(219, 134));
} else {
- _fecpSprites.draw(screen, _vm->_party->_fireResistence ? 9 : 8,
+ _fecpSprites.draw(0, _vm->_party->_fireResistence ? 9 : 8,
Common::Point(8, 8));
- _fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 10 : 11,
+ _fecpSprites.draw(0, _vm->_party->_electricityResistence ? 10 : 11,
Common::Point(219, 8));
- _fecpSprites.draw(screen, _vm->_party->_coldResistence ? 12 : 13,
+ _fecpSprites.draw(0, _vm->_party->_coldResistence ? 12 : 13,
Common::Point(8, 134));
- _fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 14 : 15,
+ _fecpSprites.draw(0, _vm->_party->_poisonResistence ? 14 : 15,
Common::Point(219, 134));
}
// Draw UI element for blessed
- _blessSprites.draw(screen, 16, Common::Point(33, 137));
+ _blessSprites.draw(0, 16, Common::Point(33, 137));
if (_vm->_party->_blessed) {
_blessedUIFrame = (_blessedUIFrame + 1) % 4;
- _blessSprites.draw(screen, _blessedUIFrame, Common::Point(33, 137));
+ _blessSprites.draw(0, _blessedUIFrame, Common::Point(33, 137));
}
// Draw UI element for power shield
if (_vm->_party->_powerShield) {
_powerShieldUIFrame = (_powerShieldUIFrame + 1) % 4;
- _blessSprites.draw(screen, _powerShieldUIFrame + 4,
+ _blessSprites.draw(0, _powerShieldUIFrame + 4,
Common::Point(55, 137));
}
// Draw UI element for holy bonus
if (_vm->_party->_holyBonus) {
_holyBonusUIFrame = (_holyBonusUIFrame + 1) % 4;
- _blessSprites.draw(screen, _holyBonusUIFrame + 8, Common::Point(160, 137));
+ _blessSprites.draw(0, _holyBonusUIFrame + 8, Common::Point(160, 137));
}
// Draw UI element for heroism
if (_vm->_party->_heroism) {
_heroismUIFrame = (_heroismUIFrame + 1) % 4;
- _blessSprites.draw(screen, _heroismUIFrame + 12, Common::Point(182, 137));
+ _blessSprites.draw(0, _heroismUIFrame + 12, Common::Point(182, 137));
}
// Draw direction character if direction sense is active
@@ -1863,7 +1858,6 @@ void Interface::doCombat() {
EventsManager &events = *_vm->_events;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Scripts &scripts = *_vm->_scripts;
Spells &spells = *_vm->_spells;
Sound &sound = *_vm->_sound;
@@ -1926,7 +1920,7 @@ void Interface::doCombat() {
// Write out the description of the monsters being battled
w.writeString(combat.getMonsterDescriptions());
- _iconSprites.draw(screen, 32, Common::Point(233, combat._monsterIndex * 10 + 27),
+ _iconSprites.draw(0, 32, Common::Point(233, combat._monsterIndex * 10 + 27),
0x8010000);
w.update();
@@ -2244,7 +2238,6 @@ void Interface::spellFX(Character *c) {
Combat &combat = *_vm->_combat;
EventsManager &events = *_vm->_events;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
@@ -2275,7 +2268,7 @@ void Interface::spellFX(Character *c) {
for (int frameNum = 0; frameNum < 4; ++frameNum) {
events.updateGameCounter();
- _spellFxSprites.draw(screen, frameNum, Common::Point(
+ _spellFxSprites.draw(0, frameNum, Common::Point(
Res.CHAR_FACES_X[charIndex], 150));
if (!windows[11]._enabled)
diff --git a/engines/xeen/party.cpp b/engines/xeen/party.cpp
index e392c2e060..901fe619ea 100644
--- a/engines/xeen/party.cpp
+++ b/engines/xeen/party.cpp
@@ -568,7 +568,6 @@ void Party::giveTreasure() {
Combat &combat = *_vm->_combat;
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
- Screen &screen = *_vm->_screen;
Scripts &scripts = *_vm->_scripts;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
@@ -704,7 +703,6 @@ bool Party::arePacksFull() const {
void Party::giveTreasureToCharacter(Character &c, ItemCategory category, int itemIndex) {
EventsManager &events = *_vm->_events;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
Window &w = windows[10];
diff --git a/engines/xeen/screen.cpp b/engines/xeen/screen.cpp
index b8cf1786b0..54d0b8f4fd 100644
--- a/engines/xeen/screen.cpp
+++ b/engines/xeen/screen.cpp
@@ -35,79 +35,6 @@ Screen::Screen(XeenEngine *vm) : _vm(vm) {
create(SCREEN_WIDTH, SCREEN_HEIGHT);
Common::fill(&_tempPalette[0], &_tempPalette[PALETTE_SIZE], 0);
Common::fill(&_mainPalette[0], &_mainPalette[PALETTE_SIZE], 0);
-
- // Load font data for the screen
- File f("fnt");
- byte *data = new byte[f.size()];
- f.read(data, f.size());
- _fontData = data;
-}
-
-Screen::~Screen() {
- delete[] _fontData;
-}
-
-void Screen::update() {
- // Merge the dirty rects
- mergeDirtyRects();
-
- // Loop through copying dirty areas to the physical screen
- Common::List<Common::Rect>::iterator i;
- for (i = _dirtyRects.begin(); i != _dirtyRects.end(); ++i) {
- const Common::Rect &r = *i;
- const byte *srcP = (const byte *)getBasePtr(r.left, r.top);
- g_system->copyRectToScreen(srcP, this->pitch, r.left, r.top,
- r.width(), r.height());
- }
-
- // Signal the physical screen to update
- g_system->updateScreen();
- _dirtyRects.clear();
-}
-
-void Screen::addDirtyRect(const Common::Rect &r) {
- assert(r.isValidRect() && r.width() > 0 && r.height() > 0
- && r.left >= 0 && r.top >= 0
- && r.right <= SCREEN_WIDTH && r.bottom <= SCREEN_HEIGHT);
- _dirtyRects.push_back(r);
-}
-
-void Screen::mergeDirtyRects() {
- Common::List<Common::Rect>::iterator rOuter, rInner;
-
- // Ensure dirty rect list has at least two entries
- rOuter = _dirtyRects.begin();
- for (int i = 0; i < 2; ++i, ++rOuter) {
- if (rOuter == _dirtyRects.end())
- return;
- }
-
- // Process the dirty rect list to find any rects to merge
- for (rOuter = _dirtyRects.begin(); rOuter != _dirtyRects.end(); ++rOuter) {
- rInner = rOuter;
- while (++rInner != _dirtyRects.end()) {
-
- if ((*rOuter).intersects(*rInner)) {
- // these two rectangles overlap or
- // are next to each other - merge them
-
- unionRectangle(*rOuter, *rOuter, *rInner);
-
- // remove the inner rect from the list
- _dirtyRects.erase(rInner);
-
- // move back to beginning of list
- rInner = rOuter;
- }
- }
- }
-}
-
-bool Screen::unionRectangle(Common::Rect &destRect, const Common::Rect &src1, const Common::Rect &src2) {
- destRect = src1;
- destRect.extend(src2);
-
- return !destRect.isEmpty();
}
void Screen::loadPalette(const Common::String &name) {
diff --git a/engines/xeen/screen.h b/engines/xeen/screen.h
index 8e72e723c9..eebc192712 100644
--- a/engines/xeen/screen.h
+++ b/engines/xeen/screen.h
@@ -23,11 +23,8 @@
#ifndef XEEN_SCREEN_H
#define XEEN_SCREEN_H
-//#include "common/scummsys.h"
-//#include "common/system.h"
-// #include "common/array.h"
-//#include "common/keyboard.h"
#include "common/rect.h"
+#include "graphics/screen.h"
#include "xeen/font.h"
#include "xeen/sprites.h"
@@ -40,20 +37,15 @@ namespace Xeen {
class XeenEngine;
-class Screen: public FontSurface {
+class Screen: public Graphics::Screen {
private:
XeenEngine *_vm;
- Common::List<Common::Rect> _dirtyRects;
byte _mainPalette[PALETTE_SIZE];
byte _tempPalette[PALETTE_SIZE];
XSurface _pages[2];
XSurface _savedScreens[10];
bool _fadeIn;
- void mergeDirtyRects();
-
- bool unionRectangle(Common::Rect &destRect, const Common::Rect &src1, const Common::Rect &src2);
-
/**
* Mark the entire screen for drawing
*/
@@ -65,16 +57,14 @@ private:
void updatePalette(const byte *pal, int start, int count16);
public:
- /**
- * Adds an area that requires redrawing on the next frame update
- */
- virtual void addDirtyRect(const Common::Rect &r);
-public:
Screen(XeenEngine *vm);
+ virtual ~Screen() {}
- virtual ~Screen();
-
- void update();
+ /**
+ * Base method that descendent classes can override for recording affected
+ * dirty areas of the surface
+ */
+ virtual void addDirtyRect(const Common::Rect &r) { Graphics::Screen::addDirtyRect(r); }
/**
* Load a palette resource into the temporary palette
diff --git a/engines/xeen/scripts.cpp b/engines/xeen/scripts.cpp
index 9b28a0cc5e..5c09f9f5bd 100644
--- a/engines/xeen/scripts.cpp
+++ b/engines/xeen/scripts.cpp
@@ -136,7 +136,6 @@ int Scripts::checkEvents() {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Town &town = *_vm->_town;
Windows &windows = *_vm->_windows;
@@ -1819,7 +1818,6 @@ bool Scripts::copyProtectionCheck() {
void Scripts::display(bool justifyFlag, int var46) {
EventsManager &events = *_vm->_events;
Interface &intf = *_vm->_interface;
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
Window &w = windows[_windowIndex];
diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp
index 8070368a30..430505e7d2 100644
--- a/engines/xeen/sprites.cpp
+++ b/engines/xeen/sprites.cpp
@@ -308,6 +308,12 @@ void SpriteResource::draw(Window &dest, int frame, const Common::Point &destPos,
draw(dest, frame, destPos, dest.getBounds(), flags, scale);
}
+void SpriteResource::draw(int windowIndex, int frame, const Common::Point &destPos,
+ int flags, int scale) {
+ Window &win = (*g_vm->_windows)[windowIndex];
+ draw(win, frame, destPos, flags, scale);
+}
+
void SpriteResource::draw(XSurface &dest, int frame, const Common::Point &destPos,
const Common::Rect &bounds, int flags, int scale) {
@@ -320,6 +326,10 @@ void SpriteResource::draw(XSurface &dest, int frame) {
draw(dest, frame, Common::Point());
}
+void SpriteResource::draw(int windowIndex, int frame) {
+ draw((*g_vm->_windows)[windowIndex], frame, Common::Point());
+}
+
uint SpriteResource::getScaledVal(int xy, uint16 &scaleMask) {
if (!xy)
return 0;
diff --git a/engines/xeen/sprites.h b/engines/xeen/sprites.h
index b61ec83cd6..b94b7c9b7e 100644
--- a/engines/xeen/sprites.h
+++ b/engines/xeen/sprites.h
@@ -64,6 +64,12 @@ private:
const Common::Rect &bounds, int flags = 0, int scale = 0);
/**
+ * Draw the sprite onto a given window
+ */
+ void draw(int windowNum, int frame, const Common::Point &destPos,
+ const Common::Rect &bounds, int flags = 0, int scale = 0);
+
+ /**
* Draw a sprite frame based on a passed offset into the data stream
*/
void drawOffset(XSurface &dest, uint16 offset, const Common::Point &pt,
@@ -99,17 +105,34 @@ public:
*/
void clear();
+ /**
+ * Draw a sprite onto a surface
+ */
void draw(XSurface &dest, int frame, const Common::Point &destPos,
int flags = 0, int scale = 0);
+ /**
+ * Draw a sprite onto a specific window
+ */
void draw(Window &dest, int frame, const Common::Point &destPos,
int flags = 0, int scale = 0);
/**
+ * Draw a sprite onto a given window
+ */
+ void draw(int windowIndex, int frame, const Common::Point &destPos,
+ int flags = 0, int scale = 0);
+
+ /**
* Draw the sprite onto the given surface
*/
void draw(XSurface &dest, int frame);
+ /**
+ * Draw the sprite onto the given window
+ */
+ void draw(int windowIndex, int frame);
+
int size() const { return _index.size(); }
bool empty() const { return _index.size() == 0; }
diff --git a/engines/xeen/town.cpp b/engines/xeen/town.cpp
index d4877381dd..74aad09f1d 100644
--- a/engines/xeen/town.cpp
+++ b/engines/xeen/town.cpp
@@ -68,7 +68,6 @@ int Town::townAction(TownAction actionId) {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
bool isDarkCc = _vm->_files->_isDarkCc;
@@ -220,9 +219,9 @@ int Town::townAction(TownAction actionId) {
intf._spotDoorsUIFrame = 0;
intf._levitateUIFrame = 0;
- _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
+ _townSprites[_drawFrameIndex / 8].draw(0, _drawFrameIndex % 8, _townPos);
if (actionId == BANK && isDarkCc) {
- _townSprites[4].draw(screen, _vm->getRandomNumber(13, 18),
+ _townSprites[4].draw(0, _vm->getRandomNumber(13, 18),
Common::Point(8, 30));
}
@@ -231,7 +230,7 @@ int Town::townAction(TownAction actionId) {
// Open up the window and write the string
windows[10].open();
windows[10].writeString(title);
- drawButtons(&screen);
+ drawButtons(&windows[0]);
windows[0].update();
intf.highlightChar(0);
@@ -250,7 +249,7 @@ int Town::townAction(TownAction actionId) {
title = createTownText(*charP);
windows[10].writeString(title);
- drawButtons(&screen);
+ drawButtons(&windows[0]);
} while (_buttonValue != Common::KEYCODE_ESCAPE);
switch (actionId) {
@@ -598,7 +597,6 @@ Character *Town::doTavernOptions(Character *c) {
Interface &intf = *_vm->_interface;
Map &map = *_vm->_map;
Party &party = *_vm->_party;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
bool isDarkCc = _vm->_files->_isDarkCc;
@@ -747,7 +745,7 @@ Character *Town::doTavernOptions(Character *c) {
windows[10].writeString(Common::String::format(Res.TAVERN_TEXT,
c->_name.c_str(), Res.HAVE_A_DRINK,
XeenEngine::printMil(party._gold).c_str()));
- drawButtons(&screen);
+ drawButtons(&windows[0]);
windows[10].update();
townWait();
} else {
@@ -756,7 +754,7 @@ Character *Town::doTavernOptions(Character *c) {
windows[10].writeString(Common::String::format(Res.TAVERN_TEXT,
c->_name.c_str(), Res.YOURE_DRUNK,
XeenEngine::printMil(party._gold).c_str()));
- drawButtons(&screen);
+ drawButtons(&windows[0]);
windows[10].update();
townWait();
} else if (party.subtract(0, 1, 0, WT_2)) {
@@ -1062,7 +1060,6 @@ void Town::depositWithdrawl(int choice) {
void Town::drawTownAnim(bool flag) {
Interface &intf = *_vm->_interface;
- Screen &screen = *_vm->_screen;
Sound &sound = *_vm->_sound;
Windows &windows = *_vm->_windows;
bool isDarkCc = _vm->_files->_isDarkCc;
@@ -1070,23 +1067,23 @@ void Town::drawTownAnim(bool flag) {
if (_townActionId == 1) {
if (sound.isPlaying()) {
if (isDarkCc) {
- _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
- _townSprites[2].draw(screen, _vm->getRandomNumber(11) == 1 ? 9 : 10,
+ _townSprites[_drawFrameIndex / 8].draw(0, _drawFrameIndex % 8, _townPos);
+ _townSprites[2].draw(0, _vm->getRandomNumber(11) == 1 ? 9 : 10,
Common::Point(34, 33));
- _townSprites[2].draw(screen, _vm->getRandomNumber(5) + 3,
+ _townSprites[2].draw(0, _vm->getRandomNumber(5) + 3,
Common::Point(34, 54));
}
} else {
- _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
+ _townSprites[_drawFrameIndex / 8].draw(0, _drawFrameIndex % 8, _townPos);
if (isDarkCc) {
- _townSprites[2].draw(screen, _vm->getRandomNumber(11) == 1 ? 9 : 10,
+ _townSprites[2].draw(0, _vm->getRandomNumber(11) == 1 ? 9 : 10,
Common::Point(34, 33));
}
}
} else {
if (!isDarkCc || _townActionId != 5) {
if (!_townSprites[_drawFrameIndex / 8].empty())
- _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
+ _townSprites[_drawFrameIndex / 8].draw(0, _drawFrameIndex % 8, _townPos);
}
}
@@ -1095,16 +1092,16 @@ void Town::drawTownAnim(bool flag) {
if (sound.isPlaying() || (isDarkCc && intf._overallFrame)) {
if (isDarkCc) {
if (sound.isPlaying() || intf._overallFrame == 1) {
- _townSprites[4].draw(screen, _vm->getRandomNumber(13, 18),
+ _townSprites[4].draw(0, _vm->getRandomNumber(13, 18),
Common::Point(8, 30));
} else if (intf._overallFrame > 1) {
- _townSprites[4].draw(screen, 13 - intf._overallFrame++,
+ _townSprites[4].draw(0, 13 - intf._overallFrame++,
Common::Point(8, 30));
if (intf._overallFrame > 14)
intf._overallFrame = 0;
}
} else {
- _townSprites[2].draw(screen, _vm->getRandomNumber(7, 11), Common::Point(8, 8));
+ _townSprites[2].draw(0, _vm->getRandomNumber(7, 11), Common::Point(8, 8));
}
}
break;
@@ -1114,9 +1111,9 @@ void Town::drawTownAnim(bool flag) {
if (isDarkCc) {
if (intf._overallFrame) {
intf._overallFrame ^= 1;
- _townSprites[6].draw(screen, intf._overallFrame, Common::Point(8, 106));
+ _townSprites[6].draw(0, intf._overallFrame, Common::Point(8, 106));
} else {
- _townSprites[6].draw(screen, _vm->getRandomNumber(3), Common::Point(16, 48));
+ _townSprites[6].draw(0, _vm->getRandomNumber(3), Common::Point(16, 48));
}
}
}
@@ -1124,13 +1121,13 @@ void Town::drawTownAnim(bool flag) {
case TAVERN:
if (sound.isPlaying() && isDarkCc) {
- _townSprites[4].draw(screen, _vm->getRandomNumber(7), Common::Point(153, 49));
+ _townSprites[4].draw(0, _vm->getRandomNumber(7), Common::Point(153, 49));
}
break;
case TEMPLE:
if (sound.isPlaying()) {
- _townSprites[3].draw(screen, _vm->getRandomNumber(2, 4), Common::Point(8, 8));
+ _townSprites[3].draw(0, _vm->getRandomNumber(2, 4), Common::Point(8, 8));
}
break;
@@ -1138,14 +1135,14 @@ void Town::drawTownAnim(bool flag) {
case TRAINING:
if (sound.isPlaying()) {
if (isDarkCc) {
- _townSprites[_drawFrameIndex / 8].draw(screen, _drawFrameIndex % 8, _townPos);
+ _townSprites[_drawFrameIndex / 8].draw(0, _drawFrameIndex % 8, _townPos);
}
} else {
if (isDarkCc) {
- _townSprites[0].draw(screen, ++intf._overallFrame % 8, Common::Point(8, 8));
- _townSprites[5].draw(screen, _vm->getRandomNumber(5), Common::Point(61, 74));
+ _townSprites[0].draw(0, ++intf._overallFrame % 8, Common::Point(8, 8));
+ _townSprites[5].draw(0, _vm->getRandomNumber(5), Common::Point(61, 74));
} else {
- _townSprites[1].draw(screen, _vm->getRandomNumber(8, 12), Common::Point(8, 8));
+ _townSprites[1].draw(0, _vm->getRandomNumber(8, 12), Common::Point(8, 8));
}
}
break;
@@ -1221,7 +1218,6 @@ bool TownMessage::execute(int portrait, const Common::String &name, const Common
Map &map = *_vm->_map;
Party &party = *_vm->_party;
Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
Town &town = *_vm->_town;
Windows &windows = *_vm->_windows;
Window &w = windows[11];
@@ -1259,14 +1255,14 @@ bool TownMessage::execute(int portrait, const Common::String &name, const Common
}
town._drawCtr2 = wordCount * 2; // Set timeout
- town._townSprites[1].draw(screen, 0, Common::Point(16, 16));
- town._townSprites[0].draw(screen, town._drawFrameIndex, Common::Point(23, 22));
+ town._townSprites[1].draw(0, 0, Common::Point(16, 16));
+ town._townSprites[0].draw(0, town._drawFrameIndex, Common::Point(23, 22));
w.update();
if (!msgEnd && !confirm) {
- res._globalSprites.draw(screen, 7, Common::Point(232, 74));
- res._globalSprites.draw(screen, 0, Common::Point(235, 75));
- res._globalSprites.draw(screen, 2, Common::Point(260, 75));
+ res._globalSprites.draw(0, 7, Common::Point(232, 74));
+ res._globalSprites.draw(0, 0, Common::Point(235, 75));
+ res._globalSprites.draw(0, 2, Common::Point(260, 75));
windows[34].update();
intf._face1State = map._headData[party._mazePosition.y][party._mazePosition.x]._left;
diff --git a/engines/xeen/window.cpp b/engines/xeen/window.cpp
index aeb8328d56..d4a798bc4b 100644
--- a/engines/xeen/window.cpp
+++ b/engines/xeen/window.cpp
@@ -26,6 +26,17 @@
namespace Xeen {
Windows::Windows() {
+ // Load font data for the game
+ File f("fnt");
+ byte *data = new byte[f.size()];
+ f.read(data, f.size());
+ _fontData = data;
+
+ Common::fill(&_textColors[0], &_textColors[4], 0);
+ _bgColor = DEFAULT_BG_COLOR;
+ _fontReduced = false;
+ _fontJustify = JUSTIFY_NONE;
+
Window windows[40] = {
Window(Common::Rect(0, 0, 320, 200), 0, 0, 0, 0, 320, 200),
Window(Common::Rect(237, 9, 317, 74), 0, 0, 237, 12, 307, 68),
@@ -71,6 +82,10 @@ Windows::Windows() {
_windows = Common::Array<Window>(windows, 40);
}
+Windows::~Windows() {
+ delete[] _fontData;
+}
+
void Windows::closeAll() {
for (int i = (int)_windowStack.size() - 1; i >= 0; --i)
_windowStack[i]->close();
@@ -92,11 +107,11 @@ void Windows::removeFromStack(Window *win) {
/*------------------------------------------------------------------------*/
-Window::Window() : XSurface(), _enabled(false),
+Window::Window() : FontSurface(), _enabled(false),
_a(0), _border(0), _xLo(0), _xHi(0), _ycL(0), _ycH(0) {
}
-Window::Window(const Window &src) : XSurface(), _enabled(src._enabled),
+Window::Window(const Window &src) : FontSurface(), _enabled(src._enabled),
_a(src._a), _border(src._border), _xLo(src._xLo), _ycL(src._ycL),
_xHi(src._xHi), _ycH(src._ycH) {
@@ -105,7 +120,7 @@ Window::Window(const Window &src) : XSurface(), _enabled(src._enabled),
}
Window::Window(const Common::Rect &bounds, int a, int border,
- int xLo, int ycL, int xHi, int ycH): XSurface(),
+ int xLo, int ycL, int xHi, int ycH): FontSurface(),
_enabled(false), _a(a), _border(border),
_xLo(xLo), _ycL(ycL), _xHi(xHi), _ycH(ycH) {
setBounds(bounds);
@@ -142,47 +157,46 @@ void Window::open2() {
frame();
fill();
- screen._writePos.x = _bounds.right - 8;
- screen.writeSymbol(19);
+ _writePos.x = _bounds.right - 8;
+ writeSymbol(19);
- screen._writePos.x = _innerBounds.left;
- screen._writePos.y = _innerBounds.top;
- screen._fontJustify = JUSTIFY_NONE;
- screen._fontReduced = false;
+ _writePos.x = _innerBounds.left;
+ _writePos.y = _innerBounds.top;
+ _fontJustify = JUSTIFY_NONE;
+ _fontReduced = false;
}
void Window::frame() {
- Screen &screen = *g_vm->_screen;
int xCount = (_bounds.width() - 9) / FONT_WIDTH;
int yCount = (_bounds.height() - 9) / FONT_HEIGHT;
// Write the top line
- screen._writePos = Common::Point(_bounds.left, _bounds.top);
- screen.writeSymbol(0);
+ _writePos = Common::Point(_bounds.left, _bounds.top);
+ writeSymbol(0);
if (xCount > 0) {
int symbolId = 1;
for (int i = 0; i < xCount; ++i) {
- screen.writeSymbol(symbolId);
+ writeSymbol(symbolId);
if (++symbolId == 5)
symbolId = 1;
}
}
- screen._writePos.x = _bounds.right - FONT_WIDTH;
- screen.writeSymbol(5);
+ _writePos.x = _bounds.right - FONT_WIDTH;
+ writeSymbol(5);
// Write the vertical edges
if (yCount > 0) {
int symbolId = 6;
for (int i = 0; i < yCount; ++i) {
- screen._writePos.y += 8;
+ _writePos.y += 8;
- screen._writePos.x = _bounds.left;
- screen.writeSymbol(symbolId);
+ _writePos.x = _bounds.left;
+ writeSymbol(symbolId);
- screen._writePos.x = _bounds.right - FONT_WIDTH;
- screen.writeSymbol(symbolId + 4);
+ _writePos.x = _bounds.right - FONT_WIDTH;
+ writeSymbol(symbolId + 4);
if (++symbolId == 10)
symbolId = 6;
@@ -190,20 +204,20 @@ void Window::frame() {
}
// Write the bottom line
- screen._writePos = Common::Point(_bounds.left, _bounds.bottom - FONT_HEIGHT);
- screen.writeSymbol(14);
+ _writePos = Common::Point(_bounds.left, _bounds.bottom - FONT_HEIGHT);
+ writeSymbol(14);
if (xCount > 0) {
int symbolId = 15;
for (int i = 0; i < xCount; ++i) {
- screen.writeSymbol(symbolId);
+ writeSymbol(symbolId);
if (++symbolId == 19)
symbolId = 15;
}
}
- screen._writePos.x = _bounds.right - FONT_WIDTH;
- screen.writeSymbol(19);
+ _writePos.x = _bounds.right - FONT_WIDTH;
+ writeSymbol(19);
}
void Window::close() {
@@ -238,11 +252,7 @@ void Window::addDirtyRect(const Common::Rect &r) {
}
void Window::fill() {
- fillRect(_innerBounds, g_vm->_screen->_bgColor);
-}
-
-const char *Window::writeString(const Common::String &s) {
- return g_vm->_screen->writeString(s, _innerBounds);
+ fillRect(_innerBounds, _bgColor);
}
void Window::drawList(DrawStruct *items, int count) {
diff --git a/engines/xeen/window.h b/engines/xeen/window.h
index ad447072cd..cd9a1dd2bf 100644
--- a/engines/xeen/window.h
+++ b/engines/xeen/window.h
@@ -25,8 +25,8 @@
#include "common/rect.h"
#include "common/str.h"
+#include "xeen/font.h"
#include "xeen/sprites.h"
-#include "xeen/xsurface.h"
namespace Xeen {
@@ -48,7 +48,7 @@ struct DrawStruct {
DrawStruct(): _sprites(nullptr), _frame(0), _x(0), _y(0), _scale(0), _flags(0) {}
};
-class Windows {
+class Windows : public FontData {
friend class Window;
private:
Common::Array<Window> _windows;
@@ -65,6 +65,7 @@ private:
void removeFromStack(Window *win);
public:
Windows();
+ ~Windows();
/**
* Returns a specified window
@@ -77,7 +78,7 @@ public:
void closeAll();
};
-class Window: public XSurface {
+class Window: public FontSurface {
private:
Common::Rect _bounds;
Common::Rect _innerBounds;
@@ -95,6 +96,7 @@ public:
Window(const Window &src);
Window(const Common::Rect &bounds, int a, int border,
int xLo, int ycL, int xHi, int ycH);
+ virtual ~Window() {}
virtual void addDirtyRect(const Common::Rect &r);
@@ -118,11 +120,32 @@ public:
*/
void fill();
- const char *writeString(const Common::String &s);
-
void drawList(DrawStruct *items, int count);
int getString(Common::String &line, uint maxLen, int maxWidth);
+
+ /**
+ * Write a string to the window
+ * @param s String to display
+ * @param clipRect Window bounds to display string within
+ * @returns Any string remainder that couldn't be displayed
+ * @remarks Note that bounds is just used for wrapping purposes. Unless
+ * justification is set, the message will be written at _writePos
+ */
+ const char *writeString(const Common::String &s, const Common::Rect &clipRect) {
+ return FontSurface::writeString(s, clipRect);
+ }
+
+ /**
+ * Write a string to the window
+ * @param s String to display
+ * @returns Any string remainder that couldn't be displayed
+ * @remarks Note that bounds is just used for wrapping purposes. Unless
+ * justification is set, the message will be written at _writePos
+ */
+ const char *writeString(const Common::String &s) {
+ return FontSurface::writeString(s, _innerBounds);
+ }
};
} // End of namespace Xeen
diff --git a/engines/xeen/worldofxeen/clouds_cutscenes.cpp b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
index 30795c199f..3d85a6ce22 100644
--- a/engines/xeen/worldofxeen/clouds_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/clouds_cutscenes.cpp
@@ -46,7 +46,7 @@ bool CloudsCutscenes::showCloudsTitle() {
for (int idx = 0; idx < 80; ++idx) {
screen.restoreBackground();
- logo[idx / 65].draw(screen, idx % 65);
+ logo[idx / 65].draw(0, idx % 65);
screen.update();
switch (idx) {
@@ -110,21 +110,21 @@ bool CloudsCutscenes::showCloudsIntro() {
screen.loadPalette("intro.pal");
screen.loadBackground("blank.raw");
screen.saveBackground();
- stars.draw(screen, 0);
- stars.draw(screen, 1, Common::Point(160, 0));
+ stars.draw(0, 0);
+ stars.draw(0, 1, Common::Point(160, 0));
screen.loadPage(0);
- intro1.draw(screen, 0);
+ intro1.draw(0, 0);
screen.loadPage(1);
bool fadeFlag = true;
for (int yCtr = SCREEN_HEIGHT, yScroll = 0, xeenCtr = -1; yCtr > 0; --yCtr, ++yScroll) {
screen.vertMerge(yScroll);
if (yCtr < 160) {
- xeen.draw(screen, 0);
+ xeen.draw(0, 0);
} else if (yCtr < 100) {
- xeen.draw(screen, 0);
+ xeen.draw(0, 0);
if (++xeenCtr < 14)
- xeen1.draw(screen, xeenCtr);
+ xeen1.draw(0, xeenCtr);
}
screen.update();
@@ -138,9 +138,9 @@ bool CloudsCutscenes::showCloudsIntro() {
// Remainder of vertical scrolling of background
screen.restoreBackground();
- intro1.draw(screen, 0);
+ intro1.draw(0, 0);
screen.loadPage(0);
- lake.draw(screen, 0);
+ lake.draw(0, 0);
screen.loadPage(1);
bool drawFlag = false;
@@ -152,11 +152,11 @@ bool CloudsCutscenes::showCloudsIntro() {
lakeCtr = 0;
drawFlag = true;
} else {
- lake3.draw(screen, lakeCtr, Common::Point(0, yCtr));
+ lake3.draw(0, lakeCtr, Common::Point(0, yCtr));
}
}
- xeen.draw(screen, 0);
+ xeen.draw(0, 0);
screen.update();
WAIT(1);
}
@@ -164,7 +164,7 @@ bool CloudsCutscenes::showCloudsIntro() {
screen.freePages();
// Flying creatures moving horizontally
- lake.draw(screen, 0);
+ lake.draw(0, 0);
screen.saveBackground();
int frameNum = 0;
@@ -172,7 +172,7 @@ bool CloudsCutscenes::showCloudsIntro() {
for (int idx = 0; idx < 100; ++idx) {
frameNum = (frameNum + 1) % 43;
screen.restoreBackground();
- lake2.draw(screen, frameNum, Common::Point(0, 0), SPRFLAG_800);
+ lake2.draw(0, frameNum, Common::Point(0, 0), SPRFLAG_800);
WAIT(1);
}
@@ -185,22 +185,22 @@ bool CloudsCutscenes::showCloudsIntro() {
events.updateGameCounter();
screen.restoreBackground();
- lake2.draw(screen, frameNum, Common::Point(0, 0), SPRFLAG_800);
+ lake2.draw(0, frameNum, Common::Point(0, 0), SPRFLAG_800);
frameNum = (frameNum + 1) % 43;
- wizTower.draw(screen, 0, Common::Point(XLIST1[idx], YLIST[idx]), 0, idx);
- wizTower.draw(screen, 1, Common::Point(XLIST2[idx], YLIST[idx]), 0, idx);
+ wizTower.draw(0, 0, Common::Point(XLIST1[idx], YLIST[idx]), 0, idx);
+ wizTower.draw(0, 1, Common::Point(XLIST2[idx], YLIST[idx]), 0, idx);
screen.update();
WAIT(1);
}
// Cloaked figure walks horizontally
- wizTower.draw(screen, 0);
- wizTower.draw(screen, 1, Common::Point(160, 0));
+ wizTower.draw(0, 0);
+ wizTower.draw(0, 1, Common::Point(160, 0));
screen.saveBackground();
for (int idx = 0; idx < 39; ++idx) {
screen.restoreBackground();
- wizTower2.draw(screen, idx);
+ wizTower2.draw(0, idx);
screen.update();
WAIT(2);
@@ -215,9 +215,9 @@ bool CloudsCutscenes::showCloudsIntro() {
SpriteResource groupo("groupo.vga"), group("group.vga"),
crodo("crodo.vga"), box("box.vga");
- groupo.draw(screen, 0);
- groupo.draw(screen, 1, Common::Point(160, 0));
- crodo.draw(screen, 0, Common::Point(0, -5));
+ groupo.draw(0, 0);
+ groupo.draw(0, 1, Common::Point(160, 0));
+ crodo.draw(0, 0, Common::Point(0, -5));
windows[0].writeString(Res.CLOUDS_INTRO1);
// Unroll a scroll
@@ -237,13 +237,13 @@ bool CloudsCutscenes::showCloudsIntro() {
}
for (int frameCtr = 0, lookup = 0; sound.isPlaying() || _subtitleSize; ) {
- groupo.draw(screen, 0);
- groupo.draw(screen, 1, Common::Point(160, 0));
+ groupo.draw(0, 0);
+ groupo.draw(0, 1, Common::Point(160, 0));
switch (lineCtr) {
case 2:
ctr1 = (ctr1 + 1) % 5;
- group.draw(screen, ctr1);
+ group.draw(0, ctr1);
ctr4 = (ctr4 + 1) % 9;
break;
@@ -261,7 +261,7 @@ bool CloudsCutscenes::showCloudsIntro() {
case 9:
case 13:
ctr3 = (ctr3 + 1) % 3;
- group.draw(screen, ctr3 + 43, Common::Point(178, 134));
+ group.draw(0, ctr3 + 43, Common::Point(178, 134));
ctr4 = (ctr4 + 1) % 9;
ctr2 = (ctr2 % 15) + 3;
break;
@@ -273,10 +273,10 @@ bool CloudsCutscenes::showCloudsIntro() {
break;
}
- group.draw(screen, ctr4 + 5, Common::Point(0, 99));
- group.draw(screen, ctr2 + 24, Common::Point(202, 12));
+ group.draw(0, ctr4 + 5, Common::Point(0, 99));
+ group.draw(0, ctr2 + 24, Common::Point(202, 12));
if ((++totalCtr % 30) == 0)
- group.draw(screen, 43, Common::Point(178, 134));
+ group.draw(0, 43, Common::Point(178, 134));
switch (lineCtr) {
case 2:
@@ -285,7 +285,7 @@ bool CloudsCutscenes::showCloudsIntro() {
case 9:
case 12:
case 13: {
- crodo.draw(screen, 0, Common::Point(0, -5));
+ crodo.draw(0, 0, Common::Point(0, -5));
windows[0].writeString(Res.CLOUDS_INTRO1);
ctr5 = (ctr5 + 1) % 19;
@@ -295,7 +295,7 @@ bool CloudsCutscenes::showCloudsIntro() {
}
default:
- crodo.draw(screen, frameCtr, Common::Point(0, -5));
+ crodo.draw(0, frameCtr, Common::Point(0, -5));
if (lookup > 30)
lookup = 30;
frameCtr = _INTRO_FRAMES_VALS[_INTRO_FRAMES_LOOKUP[lineCtr]][lookup];
@@ -352,8 +352,8 @@ bool CloudsCutscenes::showCloudsEnding() {
screen.loadPalette("mm4e.pal");
loadScreen(Common::String::format("prec00%02u.frm", 1));
- prec.draw(screen, 0);
- prec.draw(screen, 1, Common::Point(160, 0));
+ prec.draw(0, 0);
+ prec.draw(0, 1, Common::Point(160, 0));
screen.update();
screen.fadeIn();
WAIT(15);
@@ -366,8 +366,8 @@ bool CloudsCutscenes::showCloudsEnding() {
loadScreen(Common::String::format("prec00%02u.frm", idx));
// Render castle in front of it
- prec.draw(screen, 0);
- prec.draw(screen, 1, Common::Point(160, 0));
+ prec.draw(0, 0);
+ prec.draw(0, 1, Common::Point(160, 0));
screen.update();
switch (idx) {
@@ -401,8 +401,8 @@ bool CloudsCutscenes::showCloudsEnding() {
for (int idx = 1; idx < 16; ++idx) {
loadScreen(Common::String::format("vort%02u.frm", idx));
- cast[0].draw(screen, 0);
- cast[idx - 1].draw(screen, 0, Common::Point(0, 100));
+ cast[0].draw(0, 0);
+ cast[idx - 1].draw(0, 0, Common::Point(0, 100));
}
// TODO
diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.cpp b/engines/xeen/worldofxeen/darkside_cutscenes.cpp
index b3029463b9..d0fe869fd0 100644
--- a/engines/xeen/worldofxeen/darkside_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/darkside_cutscenes.cpp
@@ -73,7 +73,7 @@ bool DarkSideCutscenes::showDarkSideTitle() {
for (int idx = 0; idx < 55 && !_vm->shouldQuit(); ++idx) {
// Render the next frame
screen.vertMerge(0);
- nwc[nwcIndex].draw(screen, nwcFrame);
+ nwc[nwcIndex].draw(0, nwcFrame);
screen.draw();
switch (idx) {
@@ -98,7 +98,7 @@ bool DarkSideCutscenes::showDarkSideTitle() {
// Loop for dragon using flyspray
for (int idx = 0; idx < 42 && !_vm->shouldQuit(); ++idx) {
screen.vertMerge(SCREEN_HEIGHT);
- nwc[3].draw(screen, idx);
+ nwc[3].draw(0, idx);
screen.draw();
switch (idx) {
@@ -188,9 +188,9 @@ bool DarkSideCutscenes::showDarkSideIntro() {
for (int yCtr = SCREEN_HEIGHT, frameNum = 0; yCtr > 0; ) {
screen.vertMerge(yp);
- title.draw(screen, 0);
+ title.draw(0, 0);
if (frameNum)
- title.draw(screen, frameNum);
+ title.draw(0, frameNum);
idx1 = (idx1 + 1) % 4;
if (!idx1)
@@ -222,8 +222,8 @@ bool DarkSideCutscenes::showDarkSideIntro() {
// Zoom into the Pharoah's base closeup view
for (int idx = 14; idx >= 0; --idx) {
- pyraTop.draw(screen, 0, Common::Point(XLIST1[idx], YLIST1[idx]));
- pyraTop.draw(screen, 1, Common::Point(XLIST2[idx], YLIST1[idx]));
+ pyraTop.draw(0, 0, Common::Point(XLIST1[idx], YLIST1[idx]));
+ pyraTop.draw(0, 1, Common::Point(XLIST2[idx], YLIST1[idx]));
screen.draw();
if (idx == 2)
@@ -242,7 +242,7 @@ bool DarkSideCutscenes::showDarkSideIntro() {
bool phar2 = false;
for (int idx = 0; idx < 19; ++idx) {
screen.restoreBackground();
- pyramid.draw(screen, idx, Common::Point(132, 62));
+ pyramid.draw(0, idx, Common::Point(132, 62));
showSubtitles();
if (!sound.isPlaying() && !phar2)
@@ -289,13 +289,13 @@ bool DarkSideCutscenes::showDarkSideIntro() {
screen.loadPage(0);
screen.loadBackground("1room.raw");
screen.horizMerge(SCREEN_WIDTH);
- dragon.draw(screen, 0, Common::Point(XLIST3[0], YLIST3[0]), SPRFLAG_800);
+ dragon.draw(0, 0, Common::Point(XLIST3[0], YLIST3[0]), SPRFLAG_800);
int posNum = 0, phar2Index = 0, ctr = 0;
for (int idx = SCREEN_WIDTH, frameNum = 0; idx >= 0; --idx) {
events.updateGameCounter();
screen.horizMerge(idx);
- dragon.draw(screen, FRAMES3[frameNum], Common::Point(XLIST3[posNum], YLIST3[posNum]), SPRFLAG_800);
+ dragon.draw(0, FRAMES3[frameNum], Common::Point(XLIST3[posNum], YLIST3[posNum]), SPRFLAG_800);
showSubtitles();
events.pollEventsAndWait();
if (events.isKeyMousePressed())
@@ -348,7 +348,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
SpriteResource faceEnd("face.end");
screen.restoreBackground();
- faceEnd.draw(screen, 0, Common::Point(29, 76), SPRFLAG_4000);
+ faceEnd.draw(0, 0, Common::Point(29, 76), SPRFLAG_4000);
screen.update();
screen.fadeIn();
@@ -365,7 +365,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.stopSong();
screen.restoreBackground();
- faceEnd.draw(screen, 0, Common::Point(29, idx), SPRFLAG_4000);
+ faceEnd.draw(0, 0, Common::Point(29, idx), SPRFLAG_4000);
screen.update();
WAIT(2);
@@ -379,7 +379,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
// Show the entire throne room
screen.loadBackground("mainback.raw");
SpriteResource sc03a("sc03a.end"), sc03b("sc03b.end"), sc03c("sc03c.end");
- sc03a.draw(screen, 0, Common::Point(250, 0));
+ sc03a.draw(0, 0, Common::Point(250, 0));
screen.saveBackground();
screen.update();
@@ -389,7 +389,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playSound("door.voc");
for (int idx = 0; idx < 6; ++idx) {
screen.restoreBackground();
- sc03b.draw(screen, idx, Common::Point(72, 125));
+ sc03b.draw(0, idx, Common::Point(72, 125));
screen.update();
WAIT(4);
@@ -398,7 +398,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
// Silhouette of playing entering
for (int idx = 0; idx < 19; ++idx) {
screen.restoreBackground();
- sc03c.draw(screen, idx, Common::Point(72, 125));
+ sc03c.draw(0, idx, Common::Point(72, 125));
screen.update();
if (idx == 3 || idx == 11)
@@ -426,10 +426,10 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int xp = 0; xp < 320; xp += 2) {
screen.horizMerge(xp);
- disk.draw(screen, frameNum, Common::Point(xp / 2, yp));
+ disk.draw(0, frameNum, Common::Point(xp / 2, yp));
if (xp < 44)
- disk.draw(screen, 11, Common::Point(-xp, 22), SPRFLAG_800);
- disk.draw(screen, 10, Common::Point(0, 134));
+ disk.draw(0, 11, Common::Point(-xp, 22), SPRFLAG_800);
+ disk.draw(0, 10, Common::Point(0, 134));
if (!(xp % 22))
sound.playSound(whoosh);
@@ -474,7 +474,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 34; ++idx) {
screen.restoreBackground();
- diskOpen[idx / 8].draw(screen, idx % 8, Common::Point(28, 11));
+ diskOpen[idx / 8].draw(0, idx % 8, Common::Point(28, 11));
WAIT(3);
if (idx == 0 || idx == 2 || idx == 4 || idx == 6)
@@ -495,7 +495,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
};
screen.loadBackground("mainback.raw");
screen.saveBackground();
- sc06[0].draw(screen, 0);
+ sc06[0].draw(0, 0);
screen.update();
sound.playSound("alien2.voc");
@@ -506,7 +506,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playFX(3);
screen.restoreBackground();
- sc06[idx / 10].draw(screen, idx % 10);
+ sc06[idx / 10].draw(0, idx % 10);
screen.update();
WAIT(3);
@@ -534,7 +534,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 45; ++idx) {
screen.restoreBackground();
- sc07[idx / 6].draw(screen, idx % 6, Common::Point(61, 12));
+ sc07[idx / 6].draw(0, idx % 6, Common::Point(61, 12));
if (_subtitleSize == 0)
screen.update();
@@ -566,13 +566,13 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playSound("yes1.voc");
// Animate Corak speaking
- sc08.draw(screen, sound.isPlaying() ? getSpeakingFrame(0, 2) : 0);
+ sc08.draw(0, sound.isPlaying() ? getSpeakingFrame(0, 2) : 0);
showSubtitles();
WAIT(3);
}
do {
- sc08.draw(screen, 0);
+ sc08.draw(0, 0);
showSubtitles();
} while (_subtitleSize);
@@ -592,7 +592,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playSound("nowre1.voc");
screen.restoreBackground();
- sc09.draw(screen, getSpeakingFrame(0, 8));
+ sc09.draw(0, getSpeakingFrame(0, 8));
showSubtitles();
WAIT(3);
}
@@ -613,7 +613,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playSound("nordo2.voc");
screen.restoreBackground();
- sc10.draw(screen, getSpeakingFrame(0, 1));
+ sc10.draw(0, getSpeakingFrame(0, 1));
showSubtitles();
WAIT(3);
}
@@ -635,7 +635,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 15; ++idx) {
screen.restoreBackground();
- sc11.draw(screen, idx, Common::Point(100, 44));
+ sc11.draw(0, idx, Common::Point(100, 44));
if (idx == 0)
screen.fadeIn();
@@ -652,9 +652,9 @@ bool DarkSideCutscenes::showDarkSideEnding() {
// Helmet raises, we see the face appear
for (int idx = 80; idx > 20; idx -= 2) {
screen.restoreBackground();
- sc11.draw(screen, 15, Common::Point(60, 80));
- sc11.draw(screen, 16, Common::Point(61, idx));
- sc11.draw(screen, 17);
+ sc11.draw(0, 15, Common::Point(60, 80));
+ sc11.draw(0, 16, Common::Point(61, idx));
+ sc11.draw(0, 17);
screen.update();
if (idx == 80)
@@ -681,7 +681,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
if (idx == 1)
sound.playSound("ready2.voc");
- sc13.draw(screen, getSpeakingFrame(0, 3));
+ sc13.draw(0, getSpeakingFrame(0, 3));
showSubtitles();
if (idx == 0)
@@ -690,7 +690,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
}
do {
- sc13.draw(screen, 0);
+ sc13.draw(0, 0);
showSubtitles();
events.pollEventsAndWait();
} while (_subtitleSize);
@@ -705,7 +705,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
screen.loadBackground("blank.raw");
screen.saveBackground();
- sc14.draw(screen, 0, Common::Point(37, 37));
+ sc14.draw(0, 0, Common::Point(37, 37));
screen.update();
screen.fadeIn();
@@ -715,7 +715,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playSound("fight2.voc");
screen.restoreBackground();
- sc14.draw(screen, idx, Common::Point(37, 37));
+ sc14.draw(0, idx, Common::Point(37, 37));
showSubtitles();
WAIT(3);
}
@@ -732,12 +732,12 @@ bool DarkSideCutscenes::showDarkSideEnding() {
SpriteResource sc15("sc15.end");
screen.loadBackground("mainback.raw");
screen.saveBackground();
- sc15.draw(screen, 0, Common::Point(52, 84));
+ sc15.draw(0, 0, Common::Point(52, 84));
screen.update();
for (int idx = 0; idx < 21; ++idx) {
screen.restoreBackground();
- sc15.draw(screen, idx, Common::Point(52, 84));
+ sc15.draw(0, idx, Common::Point(52, 84));
screen.update();
WAIT(3);
@@ -761,13 +761,13 @@ bool DarkSideCutscenes::showDarkSideEnding() {
screen.loadBackground("sc170001.raw");
screen.saveBackground();
screen.horizMerge(0);
- sc16.draw(screen, 0, Common::Point(7, 29));
+ sc16.draw(0, 0, Common::Point(7, 29));
showSubtitles();
sound.playSound("fail1.voc");
for (int idx = 0; idx < 5; ++idx) {
screen.horizMerge(0);
- sc16.draw(screen, idx, Common::Point(7, 29));
+ sc16.draw(0, idx, Common::Point(7, 29));
showSubtitles();
WAIT(4);
}
@@ -776,11 +776,11 @@ bool DarkSideCutscenes::showDarkSideEnding() {
int val = 5;
for (int idx = 0; idx < 320; idx += 16) {
screen.horizMerge(idx);
- sc16.draw(screen, (val >= 12) ? 11 : val++,
+ sc16.draw(0, (val >= 12) ? 11 : val++,
Common::Point(idx * -1 + 7, 29));
if (val > 10)
- sc16.draw(screen, 12, Common::Point(273, 70));
+ sc16.draw(0, 12, Common::Point(273, 70));
showSubtitles();
WAIT(2);
@@ -801,7 +801,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 16; ++idx) {
screen.restoreBackground();
- sc17[idx / 8].draw(screen, idx % 8, Common::Point(44, 19));
+ sc17[idx / 8].draw(0, idx % 8, Common::Point(44, 19));
screen.update();
WAIT(3);
@@ -825,7 +825,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 31; ++idx) {
screen.restoreBackground();
- sc18[idx / 8].draw(screen, idx % 8, Common::Point(29, 12));
+ sc18[idx / 8].draw(0, idx % 8, Common::Point(29, 12));
screen.update();
WAIT(3);
@@ -847,7 +847,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.songCommand(207);
screen.restoreBackground();
- sc19.draw(screen, idx, Common::Point(33, 10));
+ sc19.draw(0, idx, Common::Point(33, 10));
WAIT(3);
}
@@ -869,7 +869,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 9; ++idx) {
screen.restoreBackground();
- sc20.draw(screen, idx, Common::Point(80, 18));
+ sc20.draw(0, idx, Common::Point(80, 18));
screen.update();
WAIT(3);
}
@@ -882,7 +882,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
File alien2("alien2.voc");
screen.loadBackground("mainback.raw");
screen.saveBackground();
- sc21.draw(screen, 0, Common::Point(133, 81));
+ sc21.draw(0, 0, Common::Point(133, 81));
screen.update();
for (int boltNum = 0; boltNum < 4; ++boltNum) {
@@ -890,13 +890,13 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = (boltNum == 0) ? 0 : 3; idx < 13; ++idx) {
screen.restoreBackground();
- sc21.draw(screen, idx, Common::Point(133, 81));
+ sc21.draw(0, idx, Common::Point(133, 81));
WAIT(2);
}
}
screen.restoreBackground();
- sc21.draw(screen, 0, Common::Point(133, 81));
+ sc21.draw(0, 0, Common::Point(133, 81));
screen.update();
sc21.clear();
@@ -916,13 +916,13 @@ bool DarkSideCutscenes::showDarkSideEnding() {
WAIT(1);
}
- sc22.draw(screen, 0, Common::Point(156, 28));
+ sc22.draw(0, 0, Common::Point(156, 28));
screen.update();
sound.playSound("cast.voc");
for (int idx = 0; idx < 5; ++idx) {
screen.horizMerge(SCREEN_WIDTH);
- sc22.draw(screen, idx, Common::Point(156, 28));
+ sc22.draw(0, idx, Common::Point(156, 28));
screen.update();
WAIT(3);
}
@@ -933,10 +933,10 @@ bool DarkSideCutscenes::showDarkSideEnding() {
int ctr = 5;
for (int idx = SCREEN_WIDTH, xOffset = 0; idx >= 0; idx -= 16, xOffset += 16) {
screen.horizMerge(idx);
- sc22.draw(screen, (ctr >= 8) ? 7 : ctr++,
+ sc22.draw(0, (ctr >= 8) ? 7 : ctr++,
Common::Point(xOffset + 156, 28), SPRFLAG_800);
if (ctr > 7)
- sc22.draw(screen, 8, Common::Point(136, 64));
+ sc22.draw(0, 8, Common::Point(136, 64));
screen.update();
WAIT(2);
@@ -956,7 +956,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; idx < 19; ++idx) {
screen.restoreBackground();
- sc23[idx / 12].draw(screen, idx % 12, Common::Point(72, 4));
+ sc23[idx / 12].draw(0, idx % 12, Common::Point(72, 4));
screen.update();
WAIT(3);
@@ -967,7 +967,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
}
screen.restoreBackground();
- sc23[0].draw(screen, 0, Common::Point(72, 4));
+ sc23[0].draw(0, 0, Common::Point(72, 4));
screen.update();
screen.fadeOut();
@@ -981,14 +981,14 @@ bool DarkSideCutscenes::showDarkSideEnding() {
screen.loadBackground("mainback.raw");
screen.saveBackground();
- sc24[0].draw(screen, 0, Common::Point(148, 0));
+ sc24[0].draw(0, 0, Common::Point(148, 0));
screen.update();
screen.fadeIn(4);
sound.playSound("cast.voc");
for (int idx = 0; idx < 30; ++idx) {
screen.restoreBackground();
- sc24[idx / 15].draw(screen, idx % 15, Common::Point(148, 0));
+ sc24[idx / 15].draw(0, idx % 15, Common::Point(148, 0));
screen.update();
WAIT(3);
@@ -1012,7 +1012,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
screen.loadBackground("sc250001.raw");
screen.saveBackground();
- sc25.draw(screen, 0, Common::Point(27, 30));
+ sc25.draw(0, 0, Common::Point(27, 30));
screen.update();
for (int struggleNum = 0; struggleNum < 2; ++struggleNum) {
@@ -1020,7 +1020,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
if (struggleNum == 0 && idx == 2)
sound.playSound("admit2.voc");
- sc25.draw(screen, idx, Common::Point(27, 30));
+ sc25.draw(0, idx, Common::Point(27, 30));
showSubtitles();
WAIT(3);
}
@@ -1042,7 +1042,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int idx = 0; sound.isPlaying() || _subtitleSize; ) {
screen.restoreBackground();
- sc26[idx / 8].draw(screen, idx % 8, Common::Point(58, 25));
+ sc26[idx / 8].draw(0, idx % 8, Common::Point(58, 25));
WAIT(2);
idx = (idx == 31) ? 22 : idx + 1;
@@ -1070,7 +1070,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
sound.playSound("what3.voc");
screen.restoreBackground();
- sc27.draw(screen, idx, Common::Point(65, 22));
+ sc27.draw(0, idx, Common::Point(65, 22));
showSubtitles();
WAIT(3);
}
@@ -1093,13 +1093,13 @@ bool DarkSideCutscenes::showDarkSideEnding() {
screen.loadBackground("mainback.raw");
screen.saveBackground();
- sc28[0].draw(screen, 0, Common::Point(74, 0));
+ sc28[0].draw(0, 0, Common::Point(74, 0));
screen.update();
screen.fadeIn();
for (int idx = 0; idx < 44; ++idx) {
screen.restoreBackground();
- sc28[idx / 4].draw(screen, idx % 4, Common::Point(74, 0));
+ sc28[idx / 4].draw(0, idx % 4, Common::Point(74, 0));
screen.update();
WAIT(3);
@@ -1131,7 +1131,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
if (idx == 40)
sound.songCommand(207);
- sc29[idx / 10].draw(screen, idx % 10, Common::Point(92, 10));
+ sc29[idx / 10].draw(0, idx % 10, Common::Point(92, 10));
screen.update();
WAIT(3);
@@ -1143,7 +1143,7 @@ bool DarkSideCutscenes::showDarkSideEnding() {
for (int loopNum = 0; loopNum < 4; ++loopNum) {
for (int idx = 49; idx < 54; ++idx) {
screen.restoreBackground();
- sc29[idx / 10].draw(screen, idx % 10, Common::Point(92, 10));
+ sc29[idx / 10].draw(0, idx % 10, Common::Point(92, 10));
screen.update();
WAIT(3);
}
@@ -1191,10 +1191,10 @@ void DarkSideCutscenes::showPharaohEndText(const char *msg1, const char *msg2, c
screen.loadBackground("3room.raw");
screen.saveBackground();
screen.loadPalette("dark.pal");
- claw.draw(screen, 5, Common::Point(CUTSCENES_XLIST[0], CUTSCENES_YLIST[0]), SPRFLAG_800);
- claw.draw(screen, 6, Common::Point(149, 184));
- dragon1.draw(screen, FRAMES[0], Common::Point(139, YLIST[0]), SPRFLAG_800);
- claw.draw(screen, 0, Common::Point(XLIST2[0], YLIST2[0]), SPRFLAG_800);
+ claw.draw(0, 5, Common::Point(CUTSCENES_XLIST[0], CUTSCENES_YLIST[0]), SPRFLAG_800);
+ claw.draw(0, 6, Common::Point(149, 184));
+ dragon1.draw(0, FRAMES[0], Common::Point(139, YLIST[0]), SPRFLAG_800);
+ claw.draw(0, 0, Common::Point(XLIST2[0], YLIST2[0]), SPRFLAG_800);
screen.update();
screen.fadeIn();
events.clearEvents();
@@ -1206,10 +1206,10 @@ void DarkSideCutscenes::showPharaohEndText(const char *msg1, const char *msg2, c
do {
// Draw the dragon pharoah
screen.restoreBackground();
- claw.draw(screen, 5, Common::Point(CUTSCENES_XLIST[idx], CUTSCENES_YLIST[idx]), SPRFLAG_800);
- claw.draw(screen, 6, Common::Point(145, 185));
- dragon1.draw(screen, FRAMES[idx], Common::Point(139, YLIST[idx]), SPRFLAG_800);
- claw.draw(screen, idx % 5, Common::Point(XLIST2[idx], YLIST2[idx]), SPRFLAG_800);
+ claw.draw(0, 5, Common::Point(CUTSCENES_XLIST[idx], CUTSCENES_YLIST[idx]), SPRFLAG_800);
+ claw.draw(0, 6, Common::Point(145, 185));
+ dragon1.draw(0, FRAMES[idx], Common::Point(139, YLIST[idx]), SPRFLAG_800);
+ claw.draw(0, idx % 5, Common::Point(XLIST2[idx], YLIST2[idx]), SPRFLAG_800);
// Form the text string to display the text
Common::String str1 = Common::String::format(Res.PHAROAH_ENDING_TEXT1,
diff --git a/engines/xeen/worldofxeen/worldofxeen_menu.cpp b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
index 919b003b1c..54cde36d46 100644
--- a/engines/xeen/worldofxeen/worldofxeen_menu.cpp
+++ b/engines/xeen/worldofxeen/worldofxeen_menu.cpp
@@ -52,7 +52,6 @@ void WorldOfXeenMenu::show(XeenEngine *vm) {
void WorldOfXeenMenu::execute() {
SpriteResource special("special.icn");
- Screen &screen = *_vm->_screen;
Windows &windows = *_vm->_windows;
EventsManager &events = *_vm->_events;
@@ -120,7 +119,7 @@ void WorldOfXeenMenu::showTitles1(SpriteResource &sprites) {
frameNum = (frameNum + 1) % (_vm->getGameID() == GType_WorldOfXeen ? 5 : 10);
screen.restoreBackground();
- sprites.draw(screen, frameNum);
+ sprites.draw(0, frameNum);
events.wait(4);
}
@@ -141,14 +140,14 @@ void WorldOfXeenMenu::showTitles2() {
SpriteResource("title2h.int"), SpriteResource("title2i.int"),
};
- kludgeSprites.draw(screen, 0);
+ kludgeSprites.draw(0, 0);
screen.saveBackground();
sound.playSound("elect.voc");
for (int i = 0; i < 30 && !_vm->shouldQuit(); ++i) {
events.updateGameCounter();
screen.restoreBackground();
- title2Sprites[i / 4].draw(screen, i % 4);
+ title2Sprites[i / 4].draw(0, i % 4);
windows[0].update();
if (i == 19)