public bool isReachable(Position targetedTile) { Position positionUnit = SelectedUnit.Position; float ptMoveAvailable = SelectedUnit.Move; float ptMoveRequired = SelectedUnit.computeMovePoint(Map.getTileAt(targetedTile)); // Si le nombre de MovePoint est suffisant et que le déplacement est bien sur une case accessible if (ptMoveAvailable >= ptMoveRequired && (((Math.Abs(positionUnit.X - targetedTile.X) == 1 && Math.Abs(positionUnit.Y - targetedTile.Y) == 0)) ^ ((Math.Abs(positionUnit.X - targetedTile.X) == 0 && Math.Abs(positionUnit.Y - targetedTile.Y) == 1)))) { return(true); } return(false); }
public bool moveUnit(Position targetedTile) { bool isAccessible = false; Position positionUnit = SelectedUnit.Position; float ptMoveAvailable = SelectedUnit.Move; float ptMoveRequired = SelectedUnit.computeMovePoint(Map.getTileAt(targetedTile)); // Si le nombre de MovePoint est suffisant et que le déplacement est bien sur une case accessible if (isPossibleMove(targetedTile)) { isAccessible = true; MoveCommand mc = new MoveCommand(SelectedUnit.IdUnit, targetedTile, ptMoveRequired); mc.execute(); } return(isAccessible); }
// Return true si l'unité est accessible public bool attackUnit(Position targetedTile) { bool isAccessible = false; Position positionUnit = SelectedUnit.Position; float ptMoveAvailable = SelectedUnit.Move; float ptMoveRequired = SelectedUnit.computeMovePoint(Map.getTileAt(targetedTile)); // Si le nombre de MovePoint est suffisant et que l'attaque est effectuée sur une unité à portée if (isPossibleAttack(targetedTile)) { isAccessible = true; AttackCommand mc = new AttackCommand(SelectedUnit.IdUnit, choseDefender(targetedTile).IdUnit, ptMoveRequired); mc.execute(); } return(isAccessible); }