]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/TargetSelection.cpp
extracted battle logic into a class
[l2e.git] / src / battle / TargetSelection.cpp
index 876933061528176eebd3837b1fb50605f314fc39..573200a799c1caf96e3819f47850e5eb67fd4a29 100644 (file)
@@ -1,25 +1,31 @@
-/*
- * TargetSelection.cpp
- *
- *  Created on: Aug 9, 2012
- *      Author: holy
- */
-
 #include "TargetSelection.h"
 
-#include "BattleState.h"
+#include "Battle.h"
 #include "../common/TargetingMode.h"
 
+#include <cassert>
+
+
 namespace battle {
 
-TargetSelection::TargetSelection(BattleState *battle, bool multiple, bool atEnemy)
+TargetSelection::TargetSelection()
+: battle(0)
+, selected()
+, selection(-1)
+, cursor(0)
+, multiple(false)
+, enemy(true) {
+
+}
+
+TargetSelection::TargetSelection(Battle *battle, bool multiple, bool atEnemy)
 : battle(battle)
-, selected(battle ? (battle->MaxMonsters() > battle->NumHeroes() ? battle->MaxMonsters() : battle->NumHeroes()) : 0, State())
+, selected(battle->MaxMonsters() > battle->NumHeroes() ? battle->MaxMonsters() : battle->NumHeroes(), State())
 , selection(-1)
 , cursor(0)
 , multiple(multiple)
 , enemy(atEnemy) {
-       if (battle && enemy) {
+       if (enemy) {
                FindNextEnemy();
        }
 }
@@ -74,6 +80,7 @@ void TargetSelection::MoveUp() {
 }
 
 void TargetSelection::MoveRight() {
+       assert(battle);
        if (TargetsMonsters()) {
                cursor = (cursor + 1) % battle->MaxMonsters();
                while (!battle->MonsterPositionOccupied(cursor)) {
@@ -85,6 +92,7 @@ void TargetSelection::MoveRight() {
 }
 
 void TargetSelection::MoveDown() {
+       assert(battle);
        if (TargetsMonsters()) {
                SelectHeroes();
                return;
@@ -96,6 +104,7 @@ void TargetSelection::MoveDown() {
 }
 
 void TargetSelection::MoveLeft() {
+       assert(battle);
        if (TargetsMonsters()) {
                cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
                FindNextEnemy();
@@ -105,6 +114,7 @@ void TargetSelection::MoveLeft() {
 }
 
 void TargetSelection::FindNextEnemy() {
+       assert(battle);
        int start(cursor);
        while (!battle->MonsterPositionOccupied(cursor)) {
                cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();