1 #include "TargetSelection.h"
3 #include "BattleState.h"
4 #include "../common/TargetingMode.h"
8 TargetSelection::TargetSelection(BattleState *battle, bool multiple, bool atEnemy)
10 , selected(battle ? (battle->MaxMonsters() > battle->NumHeroes() ? battle->MaxMonsters() : battle->NumHeroes()) : 0, State())
15 if (battle && enemy) {
21 void TargetSelection::ReadMode(const common::TargetingMode &tm) {
22 if (tm.TargetsEnemy()) {
27 if (tm.TargetsSingle()) {
29 } else if (tm.TargetsMultiple()) {
35 void TargetSelection::SelectMonsters() {
36 if (TargetsMonsters()) return;
43 void TargetSelection::SelectHeroes() {
44 if (TargetsHeroes()) return;
51 void TargetSelection::Reset() {
54 if (TargetsMonsters()) {
60 void TargetSelection::MoveUp() {
61 if (TargetsMonsters()) return;
69 void TargetSelection::MoveRight() {
70 if (TargetsMonsters()) {
71 cursor = (cursor + 1) % battle->MaxMonsters();
72 while (!battle->MonsterPositionOccupied(cursor)) {
73 cursor = (cursor + 1) % battle->MaxMonsters();
76 cursor = (cursor + 1) % battle->NumHeroes();
80 void TargetSelection::MoveDown() {
81 if (TargetsMonsters()) {
85 int newCursor((cursor + 2) % 4);
86 if (newCursor < battle->NumHeroes()) {
91 void TargetSelection::MoveLeft() {
92 if (TargetsMonsters()) {
93 cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
96 cursor = (cursor + battle->NumHeroes() - 1) % battle->NumHeroes();
100 void TargetSelection::FindNextEnemy() {
102 while (!battle->MonsterPositionOccupied(cursor)) {
103 cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
104 if (cursor == start) break;