1 #include "TargetSelection.h"
4 #include "../common/TargetingMode.h"
11 TargetSelection::TargetSelection()
21 TargetSelection::TargetSelection(Battle *battle, bool multiple, bool atEnemy)
23 , selected(battle->MaxMonsters() > battle->NumHeroes() ? battle->MaxMonsters() : battle->NumHeroes(), State())
34 void TargetSelection::ReadMode(const common::TargetingMode &tm) {
35 if (tm.TargetsEnemy()) {
40 if (tm.TargetsSingle()) {
42 } else if (tm.TargetsMultiple()) {
48 void TargetSelection::SelectMonsters() {
49 if (TargetsMonsters()) return;
56 void TargetSelection::SelectHeroes() {
57 if (TargetsHeroes()) return;
64 void TargetSelection::Reset() {
67 if (TargetsMonsters()) {
73 void TargetSelection::MoveUp() {
74 if (TargetsMonsters()) return;
82 void TargetSelection::MoveRight() {
84 if (TargetsMonsters()) {
85 cursor = (cursor + 1) % battle->MaxMonsters();
86 while (!battle->MonsterPositionOccupied(cursor)) {
87 cursor = (cursor + 1) % battle->MaxMonsters();
90 cursor = (cursor + 1) % battle->NumHeroes();
94 void TargetSelection::MoveDown() {
96 if (TargetsMonsters()) {
100 int newCursor((cursor + 2) % 4);
101 if (newCursor < battle->NumHeroes()) {
106 void TargetSelection::MoveLeft() {
108 if (TargetsMonsters()) {
109 cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
112 cursor = (cursor + battle->NumHeroes() - 1) % battle->NumHeroes();
116 void TargetSelection::FindNextEnemy() {
119 while (!battle->MonsterPositionOccupied(cursor)) {
120 cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
121 if (cursor == start) break;