示例#1
0
        /// <summary>
        /// Get texture rectangle for tile type
        /// </summary>
        /// <param name="level">Level object tile is bound to</param>
        /// <param name="tile">Tile needed texture rect for</param>
        /// <returns>Rectangle used to get texture data from sprite sheet</returns>
        private Rectangle GetRect(Level level, Tile tile)
        {
            int offsetX = 0;
            int offsetY = 0;

            // Calculate offset in sprite sheet for the tile type
            switch (tile.TileType)
            {
                case TileType.TILE_TYPE_WALL:
                    {
                        offsetX = 1;
                    }
                    break;
                case TileType.TILE_TYPE_STORAGE:
                    {
                        offsetX = 4;
                    }
                    break;
                case TileType.TILE_TYPE_BOX:
                    {
                        offsetX = 3;
                        // Check if the box stands on a storage tile
                        // then change to another type.
                        if (level.IsTrigger((int)tile.PositionX, (int)tile.PositionY))
                        {
                            offsetX = 2;
                        }
                    }
                    break;
                case TileType.TILE_TYPE_START:
                    {
                        offsetX = 0;
                        offsetY = 1;
                    }
                    break;
                case TileType.TILE_TYPE_FLOOR:
                    {
                        offsetX = 0;
                    }
                    break;
                case TileType.TILE_TYPE_NONE:
                default:
                    // First sprite is the empty
                    break;
            }
            // Create a rectangle for fetching texture data for this tile
            Rectangle rc = new Rectangle(offsetX * m_tileSpriteWidth, offsetY * m_tileSpriteHeight, m_tileSpriteWidth, m_tileSpriteHeight);
            return rc;
        }