예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        // 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);
        }