aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/xeen.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2015-01-02 16:08:38 -1000
committerPaul Gilbert2015-01-02 16:08:38 -1000
commit1a999e3ceb39603bca213f81342a055e1eee7ebe (patch)
tree5a02d388861e6676ee3a63c63d7096af3f03bc74 /engines/xeen/xeen.cpp
parent7d4fcfd5afb272c62ad7f1628cc1adfe17c8ee6f (diff)
downloadscummvm-rg350-1a999e3ceb39603bca213f81342a055e1eee7ebe.tar.gz
scummvm-rg350-1a999e3ceb39603bca213f81342a055e1eee7ebe.tar.bz2
scummvm-rg350-1a999e3ceb39603bca213f81342a055e1eee7ebe.zip
XEEN: Refactored checkSkill into Party class
Diffstat (limited to 'engines/xeen/xeen.cpp')
-rw-r--r--engines/xeen/xeen.cpp36
1 files changed, 4 insertions, 32 deletions
diff --git a/engines/xeen/xeen.cpp b/engines/xeen/xeen.cpp
index a46526e6ec..315e5172b7 100644
--- a/engines/xeen/xeen.cpp
+++ b/engines/xeen/xeen.cpp
@@ -41,7 +41,6 @@ XeenEngine::XeenEngine(OSystem *syst, const XeenGameDescription *gameDesc)
_screen = nullptr;
_sound = nullptr;
_eventData = nullptr;
- Common::fill(&_activeRoster[0], &_activeRoster[MAX_ACTIVE_PARTY], nullptr);
Common::fill(&_partyFaces[0], &_partyFaces[MAX_ACTIVE_PARTY], nullptr);
_isEarlyGame = false;
_loadDarkSide = 1;
@@ -265,9 +264,9 @@ void XeenEngine::setupUI(bool soundPlayed) {
_spellFxSprites.load("spellfx.icn");
// Get mappings to the active characters in the party
- Common::fill(&_activeRoster[0], &_activeRoster[MAX_ACTIVE_PARTY], nullptr);
+ _party._activeParty.resize(_party._partyCount);
for (int i = 0; i < _party._partyCount; ++i) {
- _activeRoster[i] = &_roster[_party._partyMembers[i]];
+ _party._activeParty[i] = &_roster[_party._partyMembers[i]];
}
_isEarlyGame = _party._minutes >= 300;
@@ -342,13 +341,13 @@ void XeenEngine::assembleBorder() {
// Draw UI element to indicate whether can spot hidden doors
_borderSprites.draw(*_screen,
- (_spotDoorsAllowed && checkSkill(SPOT_DOORS)) ? _spotDoorsUIFrame + 28 : 28,
+ (_spotDoorsAllowed && _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,
- (_dangerSenseAllowed && checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40,
+ (_dangerSenseAllowed && _party.checkSkill(DANGER_SENSE)) ? _spotDoorsUIFrame + 40 : 40,
Common::Point(107, 9));
_dangerSenseUIFrame = (_dangerSenseUIFrame + 1) % 12;
@@ -356,31 +355,4 @@ void XeenEngine::assembleBorder() {
// TODO
}
-bool XeenEngine::checkSkill(Skill skillId) {
- int total = 0;
- for (int i = 0; i < _party._partyCount; ++i) {
- if (_activeRoster[i]->_skills[skillId]) {
- ++total;
-
- switch (skillId) {
- case MOUNTAINEER:
- case PATHFINDER:
- // At least two characters need skill for check to return true
- if (total == 2)
- return true;
- break;
- case CRUSADER:
- case SWIMMING:
- // Entire party must have skill for check to return true
- if (total == _party._partyCount)
- return true;
- break;
- default:
- // All other skills only need to have a single player having it
- return true;
- }
- }
- }
-}
-
} // End of namespace Xeen