|
24 | 24 | #include "../Engine/Language.h" |
25 | 25 | #include "../Engine/Options.h" |
26 | 26 | #include "../Engine/Palette.h" |
27 | | -#include "../Geoscape/PsiTrainingState.h" |
| 27 | +#include "../Geoscape/AllocatePsiTrainingState.h" |
28 | 28 | #include "../Interface/Bar.h" |
29 | 29 | #include "../Interface/TextButton.h" |
30 | 30 | #include "../Interface/Text.h" |
31 | 31 | #include "../Interface/TextEdit.h" |
| 32 | +#include "../Interface/ToggleTextButton.h" |
32 | 33 | #include "../Engine/Surface.h" |
33 | 34 | #include "../Savegame/Base.h" |
34 | 35 | #include "../Savegame/Craft.h" |
@@ -64,7 +65,7 @@ SoldierInfoState::SoldierInfoState(Game *game, Base *base, size_t soldier) : Sta |
64 | 65 | _txtCraft = new Text(130, 9, 0, 56); |
65 | 66 | _txtRecovery = new Text(180, 9, 130, 56); |
66 | 67 | _txtPsionic = new Text(140, 9, 0, 66); |
67 | | - _btnPsionic = new TextButton(46, 24, 274, 33); |
| 68 | + _btnPsionic = new ToggleTextButton(140, 14, 0, 65); |
68 | 69 |
|
69 | 70 | _txtTimeUnits = new Text(120, 9, 6, 82); |
70 | 71 | _numTimeUnits = new Text(18, 9, 131, 82); |
@@ -206,7 +207,7 @@ SoldierInfoState::SoldierInfoState(Game *game, Base *base, size_t soldier) : Sta |
206 | 207 | _txtPsionic->setText(_game->getLanguage()->getString("STR_IN_PSIONIC_TRAINING")); |
207 | 208 |
|
208 | 209 | _btnPsionic->setColor(Palette::blockOffset(15)+6); |
209 | | - _btnPsionic->setText(_game->getLanguage()->getString("STR_IN_TRAINING")); |
| 210 | + _btnPsionic->setText(_game->getLanguage()->getString("STR_IN_PSIONIC_TRAINING")); |
210 | 211 | _btnPsionic->onMouseClick((ActionHandler)&SoldierInfoState::btnPsionicClick); |
211 | 212 |
|
212 | 213 |
|
@@ -444,8 +445,9 @@ void SoldierInfoState::init() |
444 | 445 | _txtRecovery->setText(L""); |
445 | 446 | } |
446 | 447 |
|
447 | | - _txtPsionic->setVisible(s->isInPsiTraining()); |
448 | | - _btnPsionic->setVisible(Options::getBool("quickPsiTraining") && _base->getAvailablePsiLabs() > 0 && !(s->isInPsiTraining())); |
| 448 | + _txtPsionic->setVisible(!Options::getBool("quickPsiTraining") && s->isInPsiTraining()); |
| 449 | + _btnPsionic->setVisible( Options::getBool("quickPsiTraining") && _base->getAvailablePsiLabs() > 0); |
| 450 | + _btnPsionic->setPressed(s->isInPsiTraining()); |
449 | 451 |
|
450 | 452 | if(current->psiSkill > 0) |
451 | 453 | { |
@@ -549,7 +551,10 @@ void SoldierInfoState::btnArmorClick(Action *) |
549 | 551 | */ |
550 | 552 | void SoldierInfoState::btnPsionicClick(Action *) |
551 | 553 | { |
552 | | - _game->pushState(new PsiTrainingState(_game, "PALETTES.DAT_1")); |
| 554 | + if (_btnPsionic->getPressed()) |
| 555 | + _game->pushState(new AllocatePsiTrainingState(_game, _base)); |
| 556 | + else |
| 557 | + _base->getSoldiers()->at(_soldier)->setPsiTraining(); |
553 | 558 | } |
554 | 559 |
|
555 | 560 | } |
0 commit comments