Exemplo n.º 1
0
        public TezHexOffsetCoordinate toOffset(TezHexGrid.Layout layout)
        {
            switch (layout)
            {
            case TezHexGrid.Layout.Pointy:
            {
                ///-5, 0, 5
                ///-5 + (5 + (5 & 1) >> 1)
                ///-5 + (6 >> 1)
                ///-5 + 3 = -2
                /// = 5
                var q = x + (z + (z & 1) >> 1);
                var r = z;
                return(new TezHexOffsetCoordinate(q, r));
            }

            case TezHexGrid.Layout.Flat:
            {
                var q = x;
                var r = z + (x + (x & 1) >> 1);
                return(new TezHexOffsetCoordinate(q, r));
            }
            }

            throw new Exception("TezHexCoordinate toOffsetCoordinate");
        }
Exemplo n.º 2
0
        /// <summary>
        /// 初始化Block
        /// </summary>
        public void initBlock(TezHexCubeCoordinate coordinate, TezHexGrid.Layout layout, Block block)
        {
            var array_index = this.toArrayIndex(coordinate.toOffset(layout));

            if (array_index.isChunkOutOfRange(m_ChunkXCount, m_ChunkYCount))
            {
                throw new IndexOutOfRangeException("Chunk Out Of Range");
            }

            block.coordinate = coordinate;
            m_ChunkArray[array_index.chunkX, array_index.chunkY].initBlock(array_index.blockX, array_index.blockY, block);
            this.onBlockInited(block);
        }
        public TezHexCubeCoordinate toCube(TezHexGrid.Layout layout)
        {
            switch (layout)
            {
            case TezHexGrid.Layout.Pointy:
            {
                var x = q - (r + (r & 1) >> 1);
                var z = r;
                return(new TezHexCubeCoordinate(x, z));
            }

            case TezHexGrid.Layout.Flat:
            {
                var x = q;
                var z = r - (q + (q & 1) >> 1);
                return(new TezHexCubeCoordinate(x, z));
            }
            }

            throw new Exception("TezHexOffsetCoordinate toCoordinate");
        }
Exemplo n.º 4
0
        public static TezHexCubeCoordinate fromOffset(int q, int r, TezHexGrid.Layout layout)
        {
            switch (layout)
            {
            case TezHexGrid.Layout.Pointy:
            {
                var x = q - (r + (r & 1) >> 1);
                var z = r;
                return(new TezHexCubeCoordinate(x, z));
            }

            case TezHexGrid.Layout.Flat:
            {
                var x = q;
                var z = r - (q + (q & 1) >> 1);
                return(new TezHexCubeCoordinate(x, z));
            }
            }

            throw new Exception("TezHexCoordinate fromOffset");
        }