aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/dialogs/dialogs_party.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/dialogs/dialogs_party.cpp')
-rw-r--r--engines/xeen/dialogs/dialogs_party.cpp34
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);