Example #1
0
        public static HexCoordCubic Neighbour(HexCoordCubic origin, HexDirectionFlat dir)
        {
            switch (dir)
            {
            case HexDirectionFlat.UP:
                return(origin + FLAT_UP);

            case HexDirectionFlat.UP_LEFT:
                return(origin + FLAT_UP_LEFT);

            case HexDirectionFlat.DOWN_LEFT:
                return(origin + FLAT_DOWN_LEFT);

            case HexDirectionFlat.DOWN:
                return(origin + FLAT_DOWN);

            case HexDirectionFlat.DOWN_RIGHT:
                return(origin + FLAT_DOWN_RIGHT);

            case HexDirectionFlat.UP_RIGHT:
                return(origin + FLAT_UP_RIGHT);
            }
            //default - should never happen
            return(origin);
        }
Example #2
0
        //end recursive cunstructor



        //creates or updates map whenever radius has been changed!
        //public void BuildMap()
        //{
        //	ringList = ringList ?? new List<List<HexTile>>(radius+1);

        //	//Building map from rings
        //	for (int i = 0; i <= radius; i++)
        //	{
        //		if (ringList.Count <= i)
        //			ringList.Add(BuildRing(i));
        //	}

        //	HexTile[] HexList = gameObject.GetComponentsInChildren<HexTile>();
        //	//setting up QrList of the tiles.
        //	int length = radius*2 + 1;
        //	QrList = new List<List<HexTile>>(length);
        //	//QrList.Add

        //	for (int i=-radius; i<= radius; i++)
        //	{
        //		List<HexTile> qList = HexList.Where((HexTile arg1) => arg1.HexCoord.q == i).OrderBy((HexTile arg1) => arg1.HexCoord.r).ToList();
        //		QrList.Add(qList);
        //	}

        //}
        public List <HexTile> BuildRing(int r)
        {
            List <HexTile> ring = new List <HexTile>(r * 6);

            if (r > 0)
            {
                HexCoordCubic tc = HexCoordCubic.FLAT_DOWN_RIGHT * r;
                HexTile       t  = Instantiate(tilePrefab, transform);
                t.Setup(tc, this);
                ring.Add(t);

                //for(HexDirectionFlat dir = HexDirectionFlat.UP; dir <= HexDirectionFlat.UP_RIGHT; dir++)
                for (int i = 0; i < 6; i++)
                {
                    for (int j = 0; j < r; j++)
                    {
                        HexDirectionFlat dir = (HexDirectionFlat)i;
                        tc = HexCoordCubic.Neighbour(tc, dir);
                        t  = Instantiate(tilePrefab, transform);
                        t.Setup(tc, this);
                        ring.Add(t);
                    }
                }
            }
            else
            {
                ring.Add(center);
            }
            return(ring);

//function cube_ring(center, radius):
//    var results = []
//    # this code doesn't work for radius == 0; can you see why?
//    var cube = cube_add(center,
//                        cube_scale(cube_direction(4), radius))
//    for each 0 ≤ i < 6:
//        for each 0 ≤ j < radius:
//            results.append(cube)
//            cube = cube_neighbor(cube, i)
//    return results
        }
Example #3
0
 public HexTile Neighbour(HexDirectionFlat dir)
 {
     return(neighbours[(int)dir]);
 }
Example #4
0
        public static HexCoordCubic Neighbour(HexCoordCubic origin, int dir)
        {
            HexDirectionFlat flatConvert = (HexDirectionFlat)dir;

            return(Neighbour(origin, flatConvert));
        }