diff options
author | Paul Gilbert | 2019-08-29 20:52:11 -0700 |
---|---|---|
committer | Paul Gilbert | 2019-08-29 20:52:11 -0700 |
commit | bbd663d3661c5daf4ae04071e3d3326ef4709143 (patch) | |
tree | 923bd1b8c874d501a14b68e9f8f8d39506fdf107 /engines/xeen | |
parent | de4d181295fb8ae470fe63f58484cea787111d93 (diff) | |
download | scummvm-rg350-bbd663d3661c5daf4ae04071e3d3326ef4709143.tar.gz scummvm-rg350-bbd663d3661c5daf4ae04071e3d3326ef4709143.tar.bz2 scummvm-rg350-bbd663d3661c5daf4ae04071e3d3326ef4709143.zip |
XEEN: Fix for deleting characters from the roster
Diffstat (limited to 'engines/xeen')
-rw-r--r-- | engines/xeen/character.cpp | 1 | ||||
-rw-r--r-- | engines/xeen/dialogs/dialogs_party.cpp | 34 | ||||
-rw-r--r-- | engines/xeen/dialogs/dialogs_party.h | 5 |
3 files changed, 23 insertions, 17 deletions
diff --git a/engines/xeen/character.cpp b/engines/xeen/character.cpp index 1712bbb244..982ffd88ad 100644 --- a/engines/xeen/character.cpp +++ b/engines/xeen/character.cpp @@ -59,6 +59,7 @@ Character::Character(const Character &src) : _weapons(this), _armor(this), _acce } void Character::clear() { + _name = ""; _sex = MALE; _race = HUMAN; _xeenSide = 0; 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); diff --git a/engines/xeen/dialogs/dialogs_party.h b/engines/xeen/dialogs/dialogs_party.h index 8f87ca3aa6..b906c12050 100644 --- a/engines/xeen/dialogs/dialogs_party.h +++ b/engines/xeen/dialogs/dialogs_party.h @@ -53,6 +53,11 @@ private: void execute(); /** + * Loads the list of character + */ + void loadCharacters(); + + /** * Loads buttons for the dialog */ void loadButtons(); |