XEEN: Fix to correct remember last caster when reopening Cast Spell dialog

This commit is contained in:
Paul Gilbert 2018-03-30 20:30:39 -04:00
parent eca76ea91e
commit 60bb10e92b
3 changed files with 6 additions and 13 deletions

View File

@ -383,8 +383,10 @@ CastSpell::~CastSpell() {
int CastSpell::show(XeenEngine *vm) {
Combat &combat = *vm->_combat;
Interface &intf = *vm->_interface;
Party &party = *vm->_party;
Spells &spells = *vm->_spells;
int result = 0, spellId = 0;
int charNum;
// Get which character is doing the casting
@ -401,20 +403,11 @@ int CastSpell::show(XeenEngine *vm) {
}
}
Character *c = &party._activeParty[charNum];
return show(vm, c);
}
int CastSpell::show(XeenEngine *vm, Character *&c) {
Interface &intf = *vm->_interface;
Spells &spells = *vm->_spells;
CastSpell *dlg = new CastSpell(vm);
int spellId;
int result = -1;
// Highlight the character
Character *c = &party._activeParty[charNum];
intf.highlightChar(c);
CastSpell *dlg = new CastSpell(vm);
do {
spellId = dlg->execute(c);
@ -481,6 +474,7 @@ int CastSpell::execute(Character *&c) {
if (_buttonValue < (int)party._activeParty.size()) {
c = &party._activeParty[_buttonValue];
intf.highlightChar(_buttonValue);
spells._lastCaster = _buttonValue;
redrawFlag = true;
break;
}

View File

@ -93,7 +93,6 @@ private:
void loadButtons();
public:
static int show(XeenEngine *vm);
static int show(XeenEngine *vm, Character *&c);
};
class SpellOnWho : public ButtonContainer {

View File

@ -527,7 +527,7 @@ void Interface::perform() {
spells._lastCaster >= (int)party._activeParty.size()) ?
(int)party._activeParty.size() - 1 : spells._lastCaster];
int result = CastSpell::show(_vm, c);
int result = CastSpell::show(_vm);
if (result == 1) {
chargeStep();