diff options
Diffstat (limited to 'engines/xeen/dialogs/dialogs_party.cpp')
-rw-r--r-- | engines/xeen/dialogs/dialogs_party.cpp | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/engines/xeen/dialogs/dialogs_party.cpp b/engines/xeen/dialogs/dialogs_party.cpp index 824f45fcc8..ac92ceb760 100644 --- a/engines/xeen/dialogs/dialogs_party.cpp +++ b/engines/xeen/dialogs/dialogs_party.cpp @@ -64,14 +64,7 @@ void PartyDialog::execute() { // Build up a list of available characters in the Roster that are on the // same side of Xeen as the player is currently on - _charList.clear(); - for (int i = 0; i < XEEN_TOTAL_CHARACTERS; ++i) { - Character &player = party._roster[i]; - if (player._name.empty() || player._xeenSide != map._loadCcNum) - continue; - - _charList.push_back(i); - } + loadCharacters(); Window &w = windows[11]; w.open(); @@ -254,15 +247,8 @@ void PartyDialog::execute() { // Empty the character in the roster c.clear(); - // Rebuild the character list - _charList.clear(); - for (int idx = 0; idx < XEEN_TOTAL_CHARACTERS; ++idx) { - Character &ch = party._roster[idx]; - if (!ch._name.empty() && ch._savedMazeId == party._priorMazeId) { - _charList.push_back(idx); - } - } - + loadCharacters(); + startingChar = 0; startingCharChanged(startingChar); } } @@ -289,6 +275,20 @@ void PartyDialog::execute() { } } +void PartyDialog::loadCharacters() { + Map &map = *_vm->_map; + Party &party = *_vm->_party; + + _charList.clear(); + for (int i = 0; i < XEEN_TOTAL_CHARACTERS; ++i) { + Character &player = party._roster[i]; + if (player._name.empty() || player._xeenSide != map._loadCcNum) + continue; + + _charList.push_back(i); + } +} + void PartyDialog::loadButtons() { _uiSprites.load("inn.icn"); addButton(Common::Rect(16, 100, 40, 120), Common::KEYCODE_UP, &_uiSprites); |