3 using System.Collections.Generic;
15 private Dictionary<char, Func<GameObject>> oldLegend =
new Dictionary<char, Func<GameObject>>();
17 protected override char Null 26 public Func<GameObject>
this[
char c]
28 get {
return oldLegend[c]; }
29 set { oldLegend[c] = value; }
47 char[,]
tiles = ReadFromFile( path );
57 char[,]
tiles = ReadFromStringArray(lines);
67 string[] lines =
Game.
Instance.Content.Load<
string[]>(assetName);
68 char[,]
tiles = ReadFromStringArray(lines);
91 public void Insert(
double tileWidth,
double tileHeight )
94 int width =
tiles.GetLength( 1 );
95 int height =
tiles.GetLength( 0 );
100 for (
int y = height - 1; y >= 0; y-- )
102 for (
int x = 0; x < width; x++ )
104 char symbol =
tiles[y, x];
105 if ( oldLegend.ContainsKey( symbol ) )
107 Func<GameObject> create = oldLegend[symbol];
109 o.
X = game.
Level.
Left + ( x * tileWidth ) + ( tileWidth / 2 );
110 o.
Y = game.
Level.
Top - ( y * tileHeight ) - ( tileHeight / 2 );
122 internal static char[,] ReadFromFile(
string path )
124 var tileBuffer =
new List<char[]>();
126 using (StreamReader input = File.OpenText(path))
129 while ( ( line = input.ReadLine() ) != null )
131 tileBuffer.Add( line.ToCharArray() );
135 return ListToArray(tileBuffer);
138 internal static char[,] ReadFromStringArray(
string[] lines)
140 var tileBuffer =
new List<char[]>();
142 for (
int i = 0; i < lines.Length; i++ )
145 tileBuffer.Add(lines[i].ToCharArray());
149 return ListToArray(tileBuffer);
152 private static char[,] ListToArray(List<
char[]> list)
154 int finalWidth = list.Max(cs => cs.Length);
156 char[,]
tiles =
new char[list.Count, finalWidth];
158 for (
int y = 0; y < list.Count; y++)
160 char[] row = list.ElementAt(y);
162 for (
int x = 0; x < row.Length; x++)
164 tiles[y, x] = row[x];
double X
Olion paikan X-koordinaatti.
double Y
Olion paikan Y-koordinaatti.
TileMap(char[,] tiles)
Luo uuden ruutukartan.
double Top
Kentän yläreunan y-koordinaatti.
void Insert()
Asettaa oliot kenttään aiemmin annettujen merkkien perusteella.
void Add(IGameObject o)
Lisää olion peliin. Tavalliset oliot tulevat automaattisesti kerrokselle 0 ja ruutuoliot päällimmäise...
Peliluokka reaaliaikaisille peleille.
static TileMap FromStringArray(string[] lines)
Lukee ruutukentän merkkijonotaulukosta.
double Height
Kentän korkeus.
Level Level
Aktiivinen kenttä.
double Width
Kentän leveys.
static TileMap FromFile(string path)
Lukee ruutukentän tiedostosta.
static TileMap FromLevelAsset(string assetName)
Lukee ruutukentän Content-projektin tekstitiedostosta.
Ruutukartta, jonka avulla olioita voidaan helposti asettaa tasavälein ruudukkoon. Ruutukartta koostuu...
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
void Insert(double tileWidth, double tileHeight)
Asettaa oliot kenttään aiemmin annettujen merkkien perusteella.
double Left
Kentän vasemman reunan x-koordinaatti.