X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fbattle%2FTargetSelection.cpp;h=876933061528176eebd3837b1fb50605f314fc39;hb=93cd8cb0f16c1809d76faa33ed6f281a3276140b;hp=1906c2bb7960ac4b1804300c34d8d498fb3cf8fc;hpb=9718062e6ed305d9f8f1674ff172079688e78088;p=l2e.git diff --git a/src/battle/TargetSelection.cpp b/src/battle/TargetSelection.cpp index 1906c2b..8769330 100644 --- a/src/battle/TargetSelection.cpp +++ b/src/battle/TargetSelection.cpp @@ -8,6 +8,7 @@ #include "TargetSelection.h" #include "BattleState.h" +#include "../common/TargetingMode.h" namespace battle { @@ -23,8 +24,23 @@ TargetSelection::TargetSelection(BattleState *battle, bool multiple, bool atEnem } } -void TargetSelection::SelectEnemies() { - if (TargetsEnemies()) return; + +void TargetSelection::ReadMode(const common::TargetingMode &tm) { + if (tm.TargetsEnemy()) { + SelectMonsters(); + } else { + SelectHeroes(); + } + if (tm.TargetsSingle()) { + SelectSingle(); + } else if (tm.TargetsMultiple()) { + SelectMultiple(); + } +} + + +void TargetSelection::SelectMonsters() { + if (TargetsMonsters()) return; enemy = true; UnselectAll(); cursor = 0; @@ -42,23 +58,23 @@ void TargetSelection::SelectHeroes() { void TargetSelection::Reset() { UnselectAll(); cursor = 0; - if (TargetsEnemies()) { + if (TargetsMonsters()) { FindNextEnemy(); } } void TargetSelection::MoveUp() { - if (TargetsEnemies()) return; + if (TargetsMonsters()) return; if (cursor < 2) { - SelectEnemies(); + SelectMonsters(); } else { cursor -= 2; } } void TargetSelection::MoveRight() { - if (TargetsEnemies()) { + if (TargetsMonsters()) { cursor = (cursor + 1) % battle->MaxMonsters(); while (!battle->MonsterPositionOccupied(cursor)) { cursor = (cursor + 1) % battle->MaxMonsters(); @@ -69,7 +85,7 @@ void TargetSelection::MoveRight() { } void TargetSelection::MoveDown() { - if (TargetsEnemies()) { + if (TargetsMonsters()) { SelectHeroes(); return; } @@ -80,7 +96,7 @@ void TargetSelection::MoveDown() { } void TargetSelection::MoveLeft() { - if (TargetsEnemies()) { + if (TargetsMonsters()) { cursor = (cursor + battle->MaxMonsters() - 1) % battle->MaxMonsters(); FindNextEnemy(); } else {