示例#1
0
        public bool IsWithinGridBoundary(HexCoordinates coords)
        {
            var pos = HexCoordinates.ToPosition(coords);

            return(Mathf.Abs(pos.x) < boardHalfSizeWorldUnits.x &&
                   Mathf.Abs(pos.z) < boardHalfSizeWorldUnits.z);
        }
示例#2
0
        public void ScrollTo(HexCoordinates coords)
        {
            var pos = HexCoordinates.ToPosition(coords);

            pos.y  = transform.position.y;
            pos.z -= 5f;
            // TODO lerp
            camTf.position = pos;
        }
示例#3
0
        public Vector3 GetBoardLimitsInWorldUnits()
        {
            var lengthCoord = new HexCoordinates(boardHalfSize.x, 0);
            var heightCoord = new HexCoordinates(0, boardHalfSize.y);
            var lengthPos   = HexCoordinates.ToPosition(lengthCoord);
            var heightPos   = HexCoordinates.ToPosition(heightCoord);

            return(new Vector3(lengthPos.x, 0f, heightPos.z));
        }
示例#4
0
        private void ShowIndicatorGrid(List <HexCoordinates> coords, Color color)
        {
            var indicators = GetPlacementIndicators(coords.Count);

            for (int i = 0; i < coords.Count; i++)
            {
                indicators[i].transform.position = HexCoordinates.ToPosition(coords[i]);
                var mr = indicators[i].GetComponentInChildren <MeshRenderer>();
                mr.material.color = color;
            }
        }
示例#5
0
        private HexCoordinates ShowPositionHandles(HexCoordinates coords, int player)
        {
            var pos = HexCoordinates.ToPosition(coords);

            Handles.color = Color.black;
            Handles.DrawSolidDisc(pos, Vector3.up, 1f);
            Handles.color = player == 1 ? Color.white : Color.black;
            Handles.DrawSolidDisc(pos, Vector3.up, 0.9f);

            var newPos   = Handles.PositionHandle(pos, Quaternion.identity);
            var newCoord = HexCoordinates.FromPosition(newPos);

            return(newCoord);
        }
示例#6
0
        private static List <Vector3> ConstructPath(PathCell target, int maxDistance)
        {
            var path = new Stack <Vector3>();
            var cell = target;

            while (cell != null)
            {
                if (path.Count - 1 >= maxDistance)
                {
                    return(null);
                }

                path.Push(HexCoordinates.ToPosition(cell.X, cell.Z));
                cell = cell.PreviousCell;
            }

            return(path.ToList());
        }
示例#7
0
 public void SetCoordinates(HexCoordinates coords)
 {
     Coordinates        = coords;
     transform.position = HexCoordinates.ToPosition(coords);
 }