source: 2016/27/SimoR/SimplePhysicsTest/SimplePhysics/TileMap.cs @ 7638

Revision 7638, 2.1 KB checked in by sieerinn, 3 years ago (diff)

Alkeellinen versio fysiikkamoottorista (jossa liikkuvat tasanteet ei vielä toimi)

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4
5namespace SimplePhysics
6{
7    public class TileMap
8    {
9        private Color[,] mapData;
10
11        private Dictionary<Color, Action<int, int>> tileMethods;
12
13        public TileMap(string assetName)
14        {
15            Initialize(Jypeli.Game.LoadImage(assetName).GetData());
16        }
17
18        public TileMap(Color[,] data)
19        {
20            Initialize(data);
21        }
22
23        private void Initialize(Color[,] data)
24        {
25            mapData = data;
26            tileMethods = new Dictionary<Color, Action<int, int>>();
27        }
28
29        public void Execute()
30        {
31            var game = (Game)Jypeli.Game.Instance;
32            int width = mapData.GetLength(1);
33            int height = mapData.GetLength(0);
34
35            game.InitializeTileMap(width, height);
36            game.Level.Width = width * game.TileSize;
37            game.Level.Height = height * game.TileSize;
38            for (int x = 0; x < width; x++)
39            {
40                for (int y = 0; y < height; y++)
41                {
42                    var color = mapData[y, x];
43                    if (!tileMethods.ContainsKey(color)) continue;
44                    var method = tileMethods[color];
45                    method(x, y);
46                }
47            }
48        }
49
50        public void SetTileMethod(Color color, Action<int, int> action)
51        {
52            tileMethods[color] = action;
53        }
54
55        public void SetTileMethod<T1>(Color color, Action<int, int, T1> action, T1 param1)
56        {
57            tileMethods[color] = (x, y) => action(x, y, param1);
58        }
59
60        public void SetTileMethod<T1, T2>(Color color, Action<int, int, T1, T2> action, T1 param1, T2 param2)
61        {
62            tileMethods[color] = (x, y) => action(x, y, param1, param2);
63        }
64
65        public void SetTileMethod<T1, T2, T3>(Color color, Action<int, int, T1, T2, T3> action, T1 param1, T2 param2, T3 param3)
66        {
67            tileMethods[color] = (x, y) => action(x, y, param1, param2, param3);
68        }
69    }
70}
Note: See TracBrowser for help on using the repository browser.