// Constructor public TileMap() { _name = ""; _maxX = _maxY = 0; _myLayer = new List<TileLayer>(); _block = new TileProperty[5]; for (int i = 0; i < _block.Length; i++) _block[i] = new TileProperty(_maxX, _maxY); _eventManager = new EventManager[0, 0]; for (int x = 0; x < _eventManager.GetLength(0); x++) { for (int y = 0; y < _eventManager.GetLength(1); y++) { _eventManager[x, y] = new EventManager(); } } }
public TileMap(int maxX, int maxY, string name) { _name = name; _maxX = maxX; _maxY = maxY; _myLayer = new List<TileLayer>(); _block = new TileProperty[5]; for (int i = 0; i < _block.Length; i++) _block[i] = new TileProperty(_maxX, _maxY); _eventManager = new EventManager[_maxX, _maxY]; for (int x = 0; x < _eventManager.GetLength(0); x++) { for (int y = 0; y < _eventManager.GetLength(1); y++) { _eventManager[x, y] = new EventManager(); } } }
// Load the actual project. This will be the load game function for the actual game as well. Along with others game-only-related stuffs like Character save and such public void LoadProject(string path, Game obj) { Tile _tempTile = new Tile(); Tileset _tempTileset = new Tileset(); TileLayer _tempLayer = new TileLayer(); TileLayer _tempMiniLayer = new TileLayer(); TileMap _tempMap = new TileMap(); Actor _tempActor = new Actor(); Sprites _tempSprite = new Sprites(); Face _tempFace = new Face(); Switch _tempSwitch = new Switch(); Variable _tempVariable = new Variable(); GResource _tempResource = new GResource(); using (br = new BinaryReader(File.Open(path, FileMode.Open))) { obj.Name = br.ReadString(); obj.Path = br.ReadString(); obj.Author = br.ReadString(); obj.Description = br.ReadString(); obj.SubName = br.ReadString(); obj.TileX = br.ReadInt32(); obj.TileY = br.ReadInt32(); obj.StartMap = br.ReadInt32(); obj.StartX = br.ReadInt32(); obj.StartY = br.ReadInt32(); int max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempSwitch = new Switch(); _tempSwitch.Name = br.ReadString(); obj.MySwitch.Add(_tempSwitch); } max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempVariable = new Variable(); _tempVariable.Name = br.ReadString(); obj.MyVariable.Add(_tempVariable); } //Initial Party max = br.ReadInt32(); for (int i = 0; i < max; i++) { obj.InitialParty.Add(br.ReadInt32()); } //Please keep all the non engine related stuff up here // From this point onward is all engine related stuff // Tile Engine max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempTileset = new Tileset(); _tempTileset.Name = br.ReadString(); _tempTileset.ID = br.ReadInt32(); obj.TM.myTileset.Add(_tempTileset); } max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempMap = new TileMap(); _tempMap.maxX = br.ReadInt32(); _tempMap.maxY = br.ReadInt32(); _tempMap.InitEvent(); _tempMap.Name = br.ReadString(); _tempMap.PlayerAbove = br.ReadInt32(); _tempMap.Block = new TileProperty[5]; for (int b = 0; b < 5; b++) { TileProperty _tempTileProperty = new TileProperty(_tempMap.maxX, _tempMap.maxY); for (int x = 0; x < _tempMap.maxX; x++) for (int y = 0; y < _tempMap.maxY; y++) _tempTileProperty.MyLayer[x, y] = br.ReadByte(); _tempMap.Block[b] = _tempTileProperty; } int secmax = br.ReadInt32(); for (int l = 0; l < secmax; l++) { _tempLayer = new TileLayer(); _tempLayer.Name = br.ReadString(); _tempLayer.Opacity = br.ReadInt32(); _tempLayer.Order = br.ReadInt32(); _tempLayer.Visible = br.ReadBoolean(); int thimax = br.ReadInt32(); for (int t = 0; t < thimax; t++) { _tempTile = new Tile(); _tempTile.Width = br.ReadInt32(); _tempTile.Height = br.ReadInt32(); _tempTile.TS = br.ReadInt32(); _tempTile.Opacity = br.ReadInt32(); _tempTile.plcX = br.ReadInt32(); _tempTile.plcY = br.ReadInt32(); _tempTile.srcX = br.ReadInt32(); _tempTile.srcY = br.ReadInt32(); _tempLayer.addTile(_tempTile); } thimax = br.ReadInt32(); for (int ml = 0; ml < thimax; ml++) { _tempMiniLayer = new TileLayer(); _tempMiniLayer.Name = br.ReadString(); _tempMiniLayer.Opacity = br.ReadInt32(); _tempMiniLayer.Order = br.ReadInt32(); _tempMiniLayer.Visible = br.ReadBoolean(); int foumax = br.ReadInt32(); for (int t = 0; t < foumax; t++) { _tempTile = new Tile(); _tempTile.Width = br.ReadInt32(); _tempTile.Height = br.ReadInt32(); _tempTile.TS = br.ReadInt32(); _tempTile.Opacity = br.ReadInt32(); _tempTile.plcX = br.ReadInt32(); _tempTile.plcY = br.ReadInt32(); _tempTile.srcX = br.ReadInt32(); _tempTile.srcY = br.ReadInt32(); _tempMiniLayer.addTile(_tempTile); } _tempLayer.MiniLayer.Add(_tempMiniLayer); } _tempMap.myLayer.Add(_tempLayer); } for (int x = 0; x < _tempMap.maxX; x++) { for (int y = 0; y < _tempMap.maxY; y++) { int count = br.ReadInt32(); for (int c = 0; c < count; c++) LoadEvent(obj, _tempMap.EM[x, y].MyEvent); } } obj.TM.myMap.Add(_tempMap); } // Graphic Manager max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempResource = new GResource(); _tempResource.Path = br.ReadString(); _tempResource.Type = br.ReadInt32(); obj.GM.myResource.Add(_tempResource); } // Actor Manager max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempActor = new Actor(); _tempActor.Name = br.ReadString(); _tempActor.Description = br.ReadString(); _tempActor.Level = br.ReadInt32(); _tempActor.Gender = br.ReadInt32(); _tempActor.Face = br.ReadInt32(); _tempActor.Sprite = br.ReadInt32(); _tempActor.Job = br.ReadInt32(); _tempActor.JobLevel = br.ReadInt32(); _tempActor.StatPoints = br.ReadInt32(); _tempActor.Stat = new int[br.ReadInt32()]; for (int s = 0; s < _tempActor.Stat.Length; s++) { _tempActor.Stat[s] = br.ReadInt32(); } obj.AM.MyActor.Add(_tempActor); } max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempFace = new Face(); _tempFace.Name = br.ReadString(); _tempFace.ID = br.ReadInt32(); obj.AM.MyFace.Add(_tempFace); } max = br.ReadInt32(); for (int i = 0; i < max; i++) { _tempSprite = new Sprites(); _tempSprite.Name = br.ReadString(); _tempSprite.ID = br.ReadInt32(); obj.AM.MySprite.Add(_tempSprite); } } }
public void DrawBlock(Texture t, int tilew, int tileh, RenderWindow toDraw, TileProperty[] tp, int x, int y) { Sprite sp = new Sprite(t); // Drawing the left most arrow) if (tp[4].MyLayer[x, y] != 1) { sp.TextureRect = new IntRect(0, 0, 8, 8); sp.Position = new Vector2f(x * tilew + 0, y * tileh + (tileh / 2) - 4); } else { sp.TextureRect = new IntRect(0, 8, 8, 8); sp.Position = new Vector2f(x * tilew + 0, y * tileh + (tileh / 2) - 4); } toDraw.Draw(sp); // Drawing the top most arrow) if (tp[3].MyLayer[x, y] != 1) { sp.TextureRect = new IntRect(8, 0, 8, 8); sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + 0); } else { sp.TextureRect = new IntRect(8, 8, 8, 8); sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + 0); } toDraw.Draw(sp); // Drawing the right most arrow) if (tp[2].MyLayer[x, y] != 1) { sp.TextureRect = new IntRect(16, 0, 8, 8); sp.Position = new Vector2f(x * tilew + tilew - 8, y * tileh + (tileh / 2) - 4); } else { sp.TextureRect = new IntRect(16, 8, 8, 8); sp.Position = new Vector2f(x * tilew + tilew - 8, y * tileh + (tileh / 2) - 4); } toDraw.Draw(sp); // Drawing the bottom most arrow) if (tp[1].MyLayer[x, y] != 1) { sp.TextureRect = new IntRect(24, 0, 8, 8); sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh - 8); } else { sp.TextureRect = new IntRect(24, 8, 8, 8); sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh - 8); } toDraw.Draw(sp); // Drawing the center) if (tp[0].MyLayer[x, y] != 1) { sp.TextureRect = new IntRect(32, 0, 8, 8); sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh / 2 - 4); } else { sp.TextureRect = new IntRect(32, 8, 8, 8); sp.Position = new Vector2f(x * tilew + tilew / 2 - 4, y * tileh + tileh / 2 - 4); } toDraw.Draw(sp); }