示例#1
0
        private static int AdjacentHexagonHeight(AdjBlendTile adj_tile)
        {
            int height = 0;

            switch (adj_tile)
            {
            case AdjBlendTile.L:
            case AdjBlendTile.LC:
            case AdjBlendTile.lc:
                height = -1;
                break;

            case AdjBlendTile.H1:
                height = 1;
                break;

            case AdjBlendTile.H2:
                height = 2;
                break;

            case AdjBlendTile.H3:
                height = 3;
                break;

            case AdjBlendTile.H4:
                height = 4;
                break;

            case AdjBlendTile.X:
                height = 6;
                break;
            }
            return(height);
        }
        public void ShiftReverse()
        {
            AdjBlendTile storage = _adj_tiles[0];

            for (int d = 0; d < 5; d++)
            {
                _adj_tiles[d] = _adj_tiles[d + 1];
            }
            _adj_tiles[5] = storage;
        }
        public void ShiftForward()
        {
            AdjBlendTile storage = _adj_tiles[5];

            for (int d = 5; d > 0; d--)
            {
                _adj_tiles[d] = _adj_tiles[d - 1];
            }
            _adj_tiles[0] = storage;
        }
示例#4
0
        private static BlendTile ClassifyAdjacentTile(AdjBlendTile adj_tile)
        {
            BlendTile tile = BlendTile.None;

            switch (adj_tile)
            {
            case AdjBlendTile.BC:
                tile = BlendTile.Triple;
                break;

            case AdjBlendTile.bc:
            case AdjBlendTile.LC:
            case AdjBlendTile.lc:
                tile = BlendTile.Single;
                break;
            }
            return(tile);
        }
示例#5
0
 private static int CalculateAdjacentShift(BlendTile tile, AdjBlendTile adj_tile, int d)
 {
     if (tile == BlendTile.Triple)
     {
         return(MeshGeneration.D[5, d]);
     }
     else if (tile == BlendTile.Single)
     {
         if (adj_tile == AdjBlendTile.bc || adj_tile == AdjBlendTile.lc)
         {
             return(MeshGeneration.D[4, d]);
         }
         else
         {
             return(MeshGeneration.D[3, d]);
         }
     }
     else
     {
         return(0);
     }
 }
        public static char Key(this AdjBlendTile rule_flag)
        {
            switch (rule_flag)
            {
            case AdjBlendTile.BC:
                return('b');

            case AdjBlendTile.bc:
                return('c');

            case AdjBlendTile.L:
                return('d');

            case AdjBlendTile.LC:
                return('e');

            case AdjBlendTile.lc:
                return('f');

            case AdjBlendTile.H1:
                return('g');

            case AdjBlendTile.H2:
                return('h');

            case AdjBlendTile.H3:
                return('i');

            case AdjBlendTile.H4:
                return('j');

            case AdjBlendTile.X:
                return('k');

            default:
                return('a');
            }
        }