Example #1
0
        protected override List <IUnitController> CheckHit(List <HexEntry> recentPath)
        {
            if (recentPath.Count < 2)
            {
                return(new List <IUnitController>());
            }

            HexEntry current = recentPath[recentPath.Count - 1];
            HexEntry last    = recentPath[recentPath.Count - 2];

            Vector2 displacement = current.BoardPos - last.BoardPos;
            Vector2 targetPos1   = current.BoardPos + HexVectorUtil.RotateClockwise(displacement);
            Vector2 targetPos2   = current.BoardPos + HexVectorUtil.RotateCounterclockwise(displacement);

            List <IUnitController> results = new List <IUnitController>();

            if (scenarioLoader.HexGrid.ContainsKey(targetPos1))
            {
                results.Add(scenarioLoader.HexGrid[targetPos1].SimOccupant);
            }
            if (scenarioLoader.HexGrid.ContainsKey(targetPos2))
            {
                results.Add(scenarioLoader.HexGrid[targetPos2].SimOccupant);
            }
            return(results);
        }
Example #2
0
        protected override List <IUnitController> CheckHit(List <HexEntry> recentPath)
        {
            if (recentPath.Count < 2)
            {
                return(new List <IUnitController>());
            }

            HexEntry current = recentPath[recentPath.Count - 1];
            HexEntry last    = recentPath[recentPath.Count - 2];

            Vector2        displacement    = current.BoardPos - last.BoardPos;
            List <Vector2> targetPositions = new List <Vector2>();

            targetPositions.Add(current.BoardPos + displacement);
            targetPositions.Add(current.BoardPos + HexVectorUtil.RotateClockwise(displacement));
            targetPositions.Add(current.BoardPos + HexVectorUtil.RotateClockwise(HexVectorUtil.RotateClockwise(displacement)));
            targetPositions.Add(current.BoardPos + HexVectorUtil.RotateCounterclockwise(displacement));
            targetPositions.Add(current.BoardPos + HexVectorUtil.RotateCounterclockwise(HexVectorUtil.RotateCounterclockwise(displacement)));

            /* // For some unknowable reason this implementation doesn't work right
             * // The unit tries to attack itself I guess (includes current position)?
             * // But the behavior it creates depends on where you hover your mouse prior to clicking
             * List<Vector2> targetPositions = new List<Vector2>();
             * foreach (Bearing b in Enum.GetValues(typeof(Bearing))) {
             *  targetPositions.Add(current.BoardPos + HexVectorUtil.NeighborOffsetFromBearing(b));
             * }*/

            List <IUnitController> results = new List <IUnitController>();

            foreach (Vector2 targetPos in targetPositions)
            {
                if (scenarioLoader.HexGrid.ContainsKey(targetPos))
                {
                    results.Add(scenarioLoader.HexGrid[targetPos].SimOccupant);
                }
            }
            return(results);
        }