- if (fakeMoveTimer.JustHit()) {
- if (monsters) {
- if (titleBarText) {
- titleBarText = 0;
- ++cursor;
- while (cursor < battle->MaxMonsters() && !battle->MonsterPositionOccupied(cursor)) {
- ++cursor;
- }
- if (cursor >= battle->MaxMonsters()) {
- battle->ClearAllAttacks();
- ctrl->PopState();
- }
- } else {
- if (cursor == 0) {
- if (battle->HeroAt(battle->NumHeroes() - 1).AttackAnimation()) {
- battle->HeroAt(battle->NumHeroes() - 1).AttackAnimation()->Stop();
- }
- if (battle->HeroAt(battle->NumHeroes() - 1).SpellAnimation()) {
- battle->HeroAt(battle->NumHeroes() - 1).SpellAnimation()->Stop();
- }
- }
- titleBarText = battle->MonsterAt(cursor).Name();
- }
- } else {
- const AttackChoice &ac(battle->AttackChoiceAt(cursor));
- if (titleBarText) {
- titleBarText = 0;
-
- switch (ac.GetType()) {
- case AttackChoice::SWORD:
- if (battle->HeroAt(cursor).AttackAnimation()) {
- battle->HeroAt(cursor).AttackAnimation()->Start(*this);
- }
- break;
- case AttackChoice::MAGIC:
- if (battle->HeroAt(cursor).SpellAnimation()) {
- battle->HeroAt(cursor).SpellAnimation()->Start(*this);
- }
- break;
- case AttackChoice::DEFEND:
- break;
- case AttackChoice::IKARI:
- if (ac.GetItem()->HasIkari()) {
- if (ac.GetItem()->GetIkari()->IsMagical()) {
- if (battle->HeroAt(cursor).SpellAnimation()) {
- battle->HeroAt(cursor).SpellAnimation()->Start(*this);
- }
- } else {
- if (battle->HeroAt(cursor).AttackAnimation()) {
- battle->HeroAt(cursor).AttackAnimation()->Start(*this);
- }
- }
- }
- break;
- case AttackChoice::ITEM:
- break;
- case AttackChoice::UNDECIDED:
- break;
- }