- 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) {
- battle->HeroAnimationAt(battle->NumHeroes() - 1).Stop();
- }
- titleBarText = battle->MonsterAt(cursor).Name();
- }
- } else {
- const AttackChoice &ac(battle->AttackChoiceAt(cursor));
- if (titleBarText) {
- titleBarText = 0;
-
- switch (ac.GetType()) {
- case AttackChoice::SWORD:
- battle->HeroAnimationAt(cursor) = Animation(
- battle->HeroAt(cursor).Sprite(),
- battle->HeroAt(cursor).AttackFrameTime(),
- battle->HeroAt(cursor).AttackFrames(), 2);
- break;
- case AttackChoice::MAGIC:
- battle->HeroAnimationAt(cursor) = Animation(
- battle->HeroAt(cursor).Sprite(),
- battle->HeroAt(cursor).SpellFrameTime(),
- battle->HeroAt(cursor).SpellFrames(), 3);
- break;
- case AttackChoice::DEFEND:
- break;
- case AttackChoice::IKARI:
- if (ac.GetItem()->HasIkari()) {
- if (ac.GetItem()->GetIkari()->IsMagical()) {
- battle->HeroAnimationAt(cursor) = Animation(
- battle->HeroAt(cursor).Sprite(),
- battle->HeroAt(cursor).SpellFrameTime(),
- battle->HeroAt(cursor).SpellFrames(), 3);
- } else {
- battle->HeroAnimationAt(cursor) = Animation(
- battle->HeroAt(cursor).Sprite(),
- battle->HeroAt(cursor).AttackFrameTime(),
- battle->HeroAt(cursor).AttackFrames(), 2);
- }
- }
- break;
- case AttackChoice::ITEM:
- break;
- case AttackChoice::UNDECIDED:
- break;
- }
- battle->HeroAnimationAt(cursor).Start(*this);