public void SetParent(Tile obj) { _parent = obj; }
public void ChangeTile(int layer, Vector2 position, int tileID) { int posX = (int)(position.X / tileSize); int posY = (int)(position.Y / tileSize); if (isValid(posX, posY) && layer >= 0 && layer < 3) { if ((_layers[layer][posX, posY] == null && tileID < 0) || (_layers[layer][posX, posY] != null && tileID == _layers[layer][posX, posY].TileID)) return; Tile newTile = new Tile(this, new Rectangle(tileID * tileSize, 0, tileSize, tileSize), new Rectangle(posX * tileSize, posY * tileSize, tileSize, tileSize), layer == 1); if (tileID == -1) _layers[layer][posX, posY] = null; else _layers[layer][posX, posY] = newTile; IGORR.Protocol.Messages.ChangeTileMessage ctm = (IGORR.Protocol.Messages.ChangeTileMessage)ObjectManager.Server.ProtocolHelper.NewMessage(IGORR.Protocol.MessageTypes.ChangeTile); ctm.tileID = tileID; ctm.x = posX; ctm.y = posY; ctm.layer = layer; ctm.Encode(); manager.Server.SendAllMapReliable(this, ctm, true); TileModification tmod = new TileModification(); tmod.layer=layer; tmod.Position=new Point(posX,posY); tmod.TileID=tileID; for (int x = 0; x < _tileMods.Count; x++) if (_tileMods[x].Position == tmod.Position && _tileMods[x].layer == tmod.layer) { _tileMods[x].TileID = tileID; return; } _tileMods.Add(tmod); } }
public void LoadNew(string file) { _id = idCounter++; Console.WriteLine("Loading Map " + file); BinaryReader reader = new BinaryReader(File.OpenRead("Content\\map\\"+file+".map")); int sizeX = reader.ReadInt32(); int sizeY = reader.ReadInt32(); reader.ReadString(); /* int tpCount = reader.ReadInt32(); _teleportPoints = new List<TeleportPoint>(); for (int x = 0; x < tpCount; x++) { TeleportPoint point = new TeleportPoint(); point.mapID = reader.ReadInt32(); point.X = reader.ReadInt32(); point.Y = reader.ReadInt32(); _teleportPoints.Add(point); } */ _layers = new Tile[4][,]; for (int layer = 0; layer < 4; layer++) { int count = 0; _layers[layer] = new Tile[sizeX, sizeY]; for (int x = 0; x < sizeX; x++) for (int y = 0; y < sizeY; y++) { if (layer == 3) { _layers[layer][x, y] = new Tile(this, new Rectangle(0, 0, tileSize, tileSize), new Rectangle(x * tileSize, y * tileSize, tileSize, tileSize), false); } else { int tileID = reader.ReadInt32(); if (tileID >= 0) { _layers[layer][x, y] = new Tile(this, new Rectangle(0, 0, tileSize, tileSize), new Rectangle(x * tileSize, y * tileSize, tileSize, tileSize), layer == 1); count++; } else _layers[layer][x, y] = null; } } Console.WriteLine(count.ToString() + " tiles in layer " + layer.ToString()); } _spawnIDs = new int[sizeX, sizeY]; _spawnPoints = new Dictionary<int, List<Point>>(); try { for (int x = 0; x < sizeX; x++) for (int y = 0; y < sizeY; y++) { int objectID = reader.ReadInt32(); if (objectID >= 0) { _spawnIDs[x, y] = objectID; if (!_spawnPoints.ContainsKey(objectID)) _spawnPoints.Add(objectID, new List<Point>()); _spawnPoints[objectID].Add(new Point(x * tileSize, y * tileSize)); SpawnItem(objectID,new Vector2(x*tileSize,y*tileSize), reader); } else _spawnIDs[x, y] = -1; } } catch (EndOfStreamException e) { } reader.Close(); Console.WriteLine(); }
public void ChangeTile(int layer, Vector2 position, int tileID) { int posX = (int)(position.X / tileSize); int posY = (int)(position.Y / tileSize); if (isValid(posX, posY) && layer >= 0 && layer < 3) { Tile newTile = new Tile(this, new Rectangle(tileID * tileSize, 0, tileSize, tileSize), new Rectangle(posX * tileSize, posY * tileSize, tileSize, tileSize), layer == 1); if (tileID == -1) _layers[layer][posX, posY] = null; else _layers[layer][posX, posY] = newTile; TileModification tmod = new TileModification(); tmod.layer=layer; tmod.Position=new Point(posX,posY); tmod.TileID=tileID; for (int x = 0; x < _tileMods.Count; x++) if (_tileMods[x].Position == tmod.Position && _tileMods[x].layer == tmod.layer) { _tileMods[x].TileID = tileID; return; } _tileMods.Add(tmod); } }