From e1404f127d376225d0c15c43b12f59749689c731 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 2 Jan 2015 13:30:00 -1000 Subject: XEEN: Simplified SpriteResource class, char faces loading in main engine --- engines/xeen/xeen.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'engines/xeen/xeen.cpp') diff --git a/engines/xeen/xeen.cpp b/engines/xeen/xeen.cpp index dfa05b0aa1..f2bbbe0517 100644 --- a/engines/xeen/xeen.cpp +++ b/engines/xeen/xeen.cpp @@ -42,7 +42,10 @@ XeenEngine::XeenEngine(OSystem *syst, const XeenGameDescription *gameDesc) _sound = nullptr; _eventData = nullptr; Common::fill(&_activeRoster[0], &_activeRoster[MAX_ACTIVE_PARTY], nullptr); + Common::fill(&_partyFaces[0], &_partyFaces[MAX_ACTIVE_PARTY], nullptr); + _isEarlyGame = false; + } XeenEngine::~XeenEngine() { @@ -243,14 +246,14 @@ void XeenEngine::showMainMenu() { void XeenEngine::playGame() { _saves->reset(); - drawUI(); + drawUI(true); } /* * Lots of stuff in this method. * TODO: Consider renaming method when better understood */ -void XeenEngine::drawUI() { +void XeenEngine::drawUI(bool soundPlayed) { SpriteResource sprites1("global.icn"), borderSprites("border.icn"); // Get mappings to the active characters in the party @@ -260,6 +263,30 @@ void XeenEngine::drawUI() { } _isEarlyGame = _party._minutes >= 300; + + if (_party._mazeId == 0) { + if (!soundPlayed) { + warning("TODO: loadSound?"); + } + + if (!_partyFaces[0]) { + // Xeen only uses 24 of possible 30 character slots + loadCharIcons(24); + + for (int i = 0; i < _party._partyCount; ++i) + _partyFaces[i] = &_charFaces[_party._partyMembers[i]]; + } + } +} + +void XeenEngine::loadCharIcons(int numChars) { + for (int i = 0; i < numChars; ++i) { + // Load new character resource + Common::String name = Common::String::format("char%02d.fac", i); + _charFaces[i].load(name); + } + + _dseFace.load("dse.fac"); } } // End of namespace Xeen -- cgit v1.2.3