Пример #1
0
 public void SetParent(Tile obj)
 {
     _parent = obj;
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
            }
        }