aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen
diff options
context:
space:
mode:
authorPaul Gilbert2015-02-15 14:20:35 -0500
committerPaul Gilbert2015-02-15 14:20:35 -0500
commitadde24a338eafc5aab0c3e51c439aea64bfdbfb7 (patch)
treeefb16b6afcedf78ee07c86017ce268a0167eb6c0 /engines/xeen
parent74b4d91f4a5b68b2aa0ec2a46f76131ccf897535 (diff)
downloadscummvm-rg350-adde24a338eafc5aab0c3e51c439aea64bfdbfb7.tar.gz
scummvm-rg350-adde24a338eafc5aab0c3e51c439aea64bfdbfb7.tar.bz2
scummvm-rg350-adde24a338eafc5aab0c3e51c439aea64bfdbfb7.zip
XEEN: Move more code from InterfaceMap that should be in Interface class
Diffstat (limited to 'engines/xeen')
-rw-r--r--engines/xeen/interface.cpp119
-rw-r--r--engines/xeen/interface.h8
-rw-r--r--engines/xeen/interface_map.cpp117
-rw-r--r--engines/xeen/interface_map.h8
4 files changed, 125 insertions, 127 deletions
diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp
index 8a35563ba1..0d488d1645 100644
--- a/engines/xeen/interface.cpp
+++ b/engines/xeen/interface.cpp
@@ -153,7 +153,11 @@ void Interface::initDrawStructs() {
}
void Interface::setup() {
- InterfaceMap::setup();
+ _borderSprites.load("border.icn");
+ _spellFxSprites.load("spellfx.icn");
+ _fecpSprites.load("fecp.brd");
+ _blessSprites.load("bless.icn");
+ _charPowSprites.load("charpow.icn");
_uiSprites.load("inn.icn");
Party &party = *_vm->_party;
@@ -1656,4 +1660,117 @@ void Interface::drawMiniMap() {
party._wizardEyeActive = eyeActive;
}
+/**
+ * Draw the display borders
+ */
+void Interface::assembleBorder() {
+ Resources &res = *_vm->_resources;
+ Screen &screen = *_vm->_screen;
+
+ // Draw the outer frame
+ res._globalSprites.draw(screen._windows[0], 0, Common::Point(8, 8));
+
+ // Draw the animating bat character used to show when levitate is active
+ _borderSprites.draw(screen._windows[0], _vm->_party->_levitateActive ? _batUIFrame + 16 : 16,
+ Common::Point(0, 82));
+ _batUIFrame = (_batUIFrame + 1) % 12;
+
+ // Draw UI element to indicate whether can spot hidden doors
+ _borderSprites.draw(screen,
+ (_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,
+ (_vm->_dangerSenseAllowed && _vm->_party->checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40,
+ Common::Point(107, 9));
+ _dangerSenseUIFrame = (_dangerSenseUIFrame + 1) % 12;
+
+ // Handle the face UI elements for indicating clairvoyance status
+ _face1UIFrame = (_face1UIFrame + 1) % 4;
+ if (_face1State == 0)
+ _face1UIFrame += 4;
+ else if (_face1State == 2)
+ _face1UIFrame = 0;
+
+ _face2UIFrame = (_face2UIFrame + 1) % 4 + 12;
+ if (_face2State == 0)
+ _face2UIFrame += 252;
+ else if (_face2State == 2)
+ _face2UIFrame = 0;
+
+ if (!_vm->_party->_clairvoyanceActive) {
+ _face1UIFrame = 0;
+ _face2UIFrame = 8;
+ }
+
+ _borderSprites.draw(screen, _face1UIFrame, Common::Point(0, 32));
+ _borderSprites.draw(screen,
+ screen._windows[10]._enabled || screen._windows[2]._enabled ?
+ 52 : _face2UIFrame,
+ Common::Point(215, 32));
+
+ // Draw resistence indicators
+ if (!screen._windows[10]._enabled && !screen._windows[2]._enabled
+ && screen._windows[38]._enabled) {
+ _fecpSprites.draw(screen, _vm->_party->_fireResistence ? 1 : 0,
+ Common::Point(2, 2));
+ _fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 3 : 2,
+ Common::Point(219, 2));
+ _fecpSprites.draw(screen, _vm->_party->_coldResistence ? 5 : 4,
+ Common::Point(2, 134));
+ _fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 7 : 6,
+ Common::Point(219, 134));
+ } else {
+ _fecpSprites.draw(screen, _vm->_party->_fireResistence ? 9 : 8,
+ Common::Point(8, 8));
+ _fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 10 : 11,
+ Common::Point(219, 8));
+ _fecpSprites.draw(screen, _vm->_party->_coldResistence ? 12 : 13,
+ Common::Point(8, 134));
+ _fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 14 : 15,
+ Common::Point(219, 134));
+ }
+
+ // Draw UI element for blessed
+ _blessSprites.draw(screen, 16, Common::Point(33, 137));
+ if (_vm->_party->_blessed) {
+ _blessedUIFrame = (_blessedUIFrame + 1) % 4;
+ _blessSprites.draw(screen, _blessedUIFrame, Common::Point(33, 137));
+ }
+
+ // Draw UI element for power shield
+ if (_vm->_party->_powerShield) {
+ _powerShieldUIFrame = (_powerShieldUIFrame + 1) % 4;
+ _blessSprites.draw(screen, _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));
+ }
+
+ // Draw UI element for heroism
+ if (_vm->_party->_heroism) {
+ _heroismUIFrame = (_heroismUIFrame + 1) % 4;
+ _blessSprites.draw(screen, _heroismUIFrame + 12, Common::Point(182, 137));
+ }
+
+ // Draw direction character if direction sense is active
+ if (_vm->_party->checkSkill(DIRECTION_SENSE) && !_vm->_noDirectionSense) {
+ const char *dirText = DIRECTION_TEXT_UPPER[_vm->_party->_mazeDirection];
+ Common::String msg = Common::String::format(
+ "\002""08\003""c\013""139\011""116%c\014""d\001", *dirText);
+ screen._windows[0].writeString(msg);
+ }
+
+ // Draw view frame
+ if (screen._windows[12]._enabled)
+ screen._windows[12].frame();
+}
+
+
} // End of namespace Xeen
diff --git a/engines/xeen/interface.h b/engines/xeen/interface.h
index e4278459af..8d3044fd72 100644
--- a/engines/xeen/interface.h
+++ b/engines/xeen/interface.h
@@ -64,6 +64,10 @@ private:
XeenEngine *_vm;
SpriteResource _uiSprites;
SpriteResource _iconSprites;
+ SpriteResource _borderSprites;
+ SpriteResource _spellFxSprites;
+ SpriteResource _fecpSprites;
+ SpriteResource _blessSprites;
DrawStruct _mainList[16];
int _combatCharIds[8];
@@ -104,7 +108,7 @@ public:
virtual ~Interface() {}
- virtual void setup();
+ void setup();
void manageCharacters(bool soundPlayed);
@@ -121,6 +125,8 @@ public:
void bash(const Common::Point &pt, Direction direction);
void draw3d(bool updateFlag);
+
+ void assembleBorder();
};
} // End of namespace Xeen
diff --git a/engines/xeen/interface_map.cpp b/engines/xeen/interface_map.cpp
index 4f408d18e2..837971b2fb 100644
--- a/engines/xeen/interface_map.cpp
+++ b/engines/xeen/interface_map.cpp
@@ -398,14 +398,6 @@ InterfaceMap::InterfaceMap(XeenEngine *vm): _vm(vm) {
_face1State = _face2State = 0;
}
-void InterfaceMap::setup() {
- _borderSprites.load("border.icn");
- _spellFxSprites.load("spellfx.icn");
- _fecpSprites.load("fecp.brd");
- _blessSprites.load("bless.icn");
- _charPowSprites.load("charpow.icn");
-}
-
void InterfaceMap::drawMap() {
Combat &combat = *_vm->_combat;
Map &map = *_vm->_map;
@@ -4447,113 +4439,4 @@ void InterfaceMap::moveMonsters() {
// TODO
}
-void InterfaceMap::assembleBorder() {
- Resources &res = *_vm->_resources;
- Screen &screen = *_vm->_screen;
-
- // Draw the outer frame
- res._globalSprites.draw(screen._windows[0], 0, Common::Point(8, 8));
-
- // Draw the animating bat character used to show when levitate is active
- _borderSprites.draw(screen._windows[0], _vm->_party->_levitateActive ? _batUIFrame + 16 : 16,
- Common::Point(0, 82));
- _batUIFrame = (_batUIFrame + 1) % 12;
-
- // Draw UI element to indicate whether can spot hidden doors
- _borderSprites.draw(screen,
- (_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,
- (_vm->_dangerSenseAllowed && _vm->_party->checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40,
- Common::Point(107, 9));
- _dangerSenseUIFrame = (_dangerSenseUIFrame + 1) % 12;
-
- // Handle the face UI elements for indicating clairvoyance status
- _face1UIFrame = (_face1UIFrame + 1) % 4;
- if (_face1State == 0)
- _face1UIFrame += 4;
- else if (_face1State == 2)
- _face1UIFrame = 0;
-
- _face2UIFrame = (_face2UIFrame + 1) % 4 + 12;
- if (_face2State == 0)
- _face2UIFrame += 252;
- else if (_face2State == 2)
- _face2UIFrame = 0;
-
- if (!_vm->_party->_clairvoyanceActive) {
- _face1UIFrame = 0;
- _face2UIFrame = 8;
- }
-
- _borderSprites.draw(screen, _face1UIFrame, Common::Point(0, 32));
- _borderSprites.draw(screen,
- screen._windows[10]._enabled || screen._windows[2]._enabled ?
- 52 : _face2UIFrame,
- Common::Point(215, 32));
-
- // Draw resistence indicators
- if (!screen._windows[10]._enabled && !screen._windows[2]._enabled
- && screen._windows[38]._enabled) {
- _fecpSprites.draw(screen, _vm->_party->_fireResistence ? 1 : 0,
- Common::Point(2, 2));
- _fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 3 : 2,
- Common::Point(219, 2));
- _fecpSprites.draw(screen, _vm->_party->_coldResistence ? 5 : 4,
- Common::Point(2, 134));
- _fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 7 : 6,
- Common::Point(219, 134));
- } else {
- _fecpSprites.draw(screen, _vm->_party->_fireResistence ? 9 : 8,
- Common::Point(8, 8));
- _fecpSprites.draw(screen, _vm->_party->_electricityResistence ? 10 : 11,
- Common::Point(219, 8));
- _fecpSprites.draw(screen, _vm->_party->_coldResistence ? 12 : 13,
- Common::Point(8, 134));
- _fecpSprites.draw(screen, _vm->_party->_poisonResistence ? 14 : 15,
- Common::Point(219, 134));
- }
-
- // Draw UI element for blessed
- _blessSprites.draw(screen, 16, Common::Point(33, 137));
- if (_vm->_party->_blessed) {
- _blessedUIFrame = (_blessedUIFrame + 1) % 4;
- _blessSprites.draw(screen, _blessedUIFrame, Common::Point(33, 137));
- }
-
- // Draw UI element for power shield
- if (_vm->_party->_powerShield) {
- _powerShieldUIFrame = (_powerShieldUIFrame + 1) % 4;
- _blessSprites.draw(screen, _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));
- }
-
- // Draw UI element for heroism
- if (_vm->_party->_heroism) {
- _heroismUIFrame = (_heroismUIFrame + 1) % 4;
- _blessSprites.draw(screen, _heroismUIFrame + 12, Common::Point(182, 137));
- }
-
- // Draw direction character if direction sense is active
- if (_vm->_party->checkSkill(DIRECTION_SENSE) && !_vm->_noDirectionSense) {
- const char *dirText = DIRECTION_TEXT_UPPER[_vm->_party->_mazeDirection];
- Common::String msg = Common::String::format(
- "\002""08\003""c\013""139\011""116%c\014""d\001", *dirText);
- screen._windows[0].writeString(msg);
- }
-
- // Draw view frame
- if (screen._windows[12]._enabled)
- screen._windows[12].frame();
-}
-
} // End of namespace Xeen
diff --git a/engines/xeen/interface_map.h b/engines/xeen/interface_map.h
index a0626249de..9ac9222b67 100644
--- a/engines/xeen/interface_map.h
+++ b/engines/xeen/interface_map.h
@@ -92,10 +92,6 @@ public:
class InterfaceMap {
private:
XeenEngine *_vm;
- SpriteResource _borderSprites;
- SpriteResource _spellFxSprites;
- SpriteResource _fecpSprites;
- SpriteResource _blessSprites;
int _combatFloatCounter;
void initDrawStructs();
@@ -123,8 +119,6 @@ protected:
void animate3d();
- virtual void setup();
-
void drawMap();
public:
OutdoorDrawList _outdoorList;
@@ -160,8 +154,6 @@ public:
void drawOutdoors();
- void assembleBorder();
-
void moveMonsters();
};