]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/TargetSelection.cpp
moved monster's position to Monster
[l2e.git] / src / battle / TargetSelection.cpp
index 85639074fd3f5ba998fcbd7ede41a625574b3ef2..1906c2bb7960ac4b1804300c34d8d498fb3cf8fc 100644 (file)
@@ -13,7 +13,7 @@ namespace battle {
 
 TargetSelection::TargetSelection(BattleState *battle, bool multiple, bool atEnemy)
 : battle(battle)
-, selected(battle ? (battle->MonsterPositions().size() > battle->Heroes().size() ? battle->MonsterPositions().size() : battle->Heroes().size()) : 0, false)
+, selected(battle ? (battle->MaxMonsters() > battle->NumHeroes() ? battle->MaxMonsters() : battle->NumHeroes()) : 0, State())
 , selection(-1)
 , cursor(0)
 , multiple(multiple)
@@ -59,12 +59,12 @@ void TargetSelection::MoveUp() {
 
 void TargetSelection::MoveRight() {
        if (TargetsEnemies()) {
-               cursor = (cursor + 1) % battle->MonsterPositions().size();
+               cursor = (cursor + 1) % battle->MaxMonsters();
                while (!battle->MonsterPositionOccupied(cursor)) {
-                       cursor = (cursor + 1) % battle->MonsterPositions().size();
+                       cursor = (cursor + 1) % battle->MaxMonsters();
                }
        } else {
-               cursor = (cursor + 1) % battle->Heroes().size();
+               cursor = (cursor + 1) % battle->NumHeroes();
        }
 }
 
@@ -73,24 +73,26 @@ void TargetSelection::MoveDown() {
                SelectHeroes();
                return;
        }
-       int newCursor(cursor + 2 % 4);
-       if (newCursor < int(battle->Heroes().size())) {
+       int newCursor((cursor + 2) % 4);
+       if (newCursor < battle->NumHeroes()) {
                cursor = newCursor;
        }
 }
 
 void TargetSelection::MoveLeft() {
        if (TargetsEnemies()) {
-               cursor = (cursor + battle->MonsterPositions().size() - 1) % battle->MonsterPositions().size();
+               cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
                FindNextEnemy();
        } else {
-               cursor = (cursor + battle->Heroes().size() - 1) % battle->Heroes().size();
+               cursor = (cursor + battle->NumHeroes() - 1) % battle->NumHeroes();
        }
 }
 
 void TargetSelection::FindNextEnemy() {
+       int start(cursor);
        while (!battle->MonsterPositionOccupied(cursor)) {
-               cursor = (cursor + battle->MonsterPositions().size() - 1) % battle->MonsterPositions().size();
+               cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters();
+               if (cursor == start) break;
        }
 }