source: 2011/23/sijoseha/AdventureGame/AdventureGame/Map.cs @ 1727

Revision 1727, 3.5 KB checked in by tekrjant, 9 years ago (diff)

Added wannabe adventure game made with XNA

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Microsoft.Xna.Framework;
6using Microsoft.Xna.Framework.Graphics;
7
8namespace AdventureGame
9{
10    public class Map
11    {
12
13        private AdventureGame Game;
14        private List<Texture2D> tileTextures;
15        private Dictionary<TileType, Texture2D> textureType;
16        public List<Tile> Tiles;
17        public Tile SelectedTile;
18
19        public Map(AdventureGame game, Texture2D tileTextures, int tileSize, int mapWidth, int mapHeight)
20        {
21           
22            this.Tiles = new List<Tile>();
23            this.Game = game;
24            this.tileTextures = TilesFromImage(Game.GraphicsDevice, tileTextures, tileSize);
25            LoadTextures();
26            Random r = new Random();
27            for (int x = 0; x < mapWidth; x++)
28                for (int y = 0; y < mapHeight; y++)
29                    this.Tiles.Add(new Tile(TileType.Grass, new Rectangle(x * 32, y * 32, tileSize, tileSize))); 
30        }
31
32        private void LoadTextures()
33        {
34            textureType = new Dictionary<TileType, Texture2D>();
35            textureType.Add(TileType.Grass, tileTextures[0]);
36            textureType.Add(TileType.DarkGrass, tileTextures[1]);
37            textureType.Add(TileType.Sand, tileTextures[2]);
38            textureType.Add(TileType.Water, tileTextures[3]);
39        }
40
41        public void UnSelectAll()
42        {
43            for (int i = 0; i < this.Tiles.Count; i++)
44                Tiles[i].Selected = false;
45        }
46
47        public void SelectTile(Tile tile)
48        {
49            tile.Selected = true;
50            SelectedTile = tile;
51        }
52
53        public void ChangeTileTo(TileType tileType)
54        {
55            SelectedTile.TileType = tileType;
56        }
57
58        public void Draw(SpriteBatch sb)
59        {
60            foreach (Tile tile in Tiles)
61            {
62                sb.Draw(this.textureType[tile.TileType], tile.Boundaries, Color.White);
63                if (tile.Selected)
64                    sb.Draw(AdventureGame.selectionBox, tile.Boundaries, Color.White);
65            }
66        }
67
68        public static List<Texture2D> TilesFromImage(GraphicsDevice gDevice, Texture2D image, int size)
69        {
70            List<Texture2D> tiles = new List<Texture2D>();
71            Texture2D imageFrom = image;
72            Color[] imageColors = new Color[imageFrom.Width * imageFrom.Height];
73            imageFrom.GetData(imageColors);
74            Color[,] imageColors2D = new Color[imageFrom.Width, imageFrom.Height];
75            for (int x = 0; x < imageFrom.Width; x++)
76                for (int y = 0; y < imageFrom.Height; y++)
77                    imageColors2D[x, y] = imageColors[x + y * imageFrom.Width];
78            int tilesPerLine = imageFrom.Width / size;
79            int tilesPerColumn = imageFrom.Height / size;
80            for (int x = 0; x < 4; x++)
81                        {
82                for (int y = 0; y < 1; y++)
83                            {
84                    Color[] rColor = new Color[size * size];
85                    for (int xx = 0; xx < size; xx++)
86                        for (int yy = 0; yy < size; yy++)
87                            rColor[xx + yy * size] = imageColors2D[xx + size*x + x+1, yy + size*y + y+1];
88                    Texture2D newTile = new Texture2D(gDevice, size, size);
89                    newTile.SetData(rColor);
90                    tiles.Add(newTile);
91                            }
92                        }
93           
94            return tiles;
95        }
96    }
97}
Note: See TracBrowser for help on using the repository browser.