コード例 #1
0
ファイル: EditMap.cs プロジェクト: MyEyes/Igorr
        public Map(int sizeX, int sizeY, string tileset)
        {
            _dummy = new IGORR.Server.Logic.DummyMap();
            tileSet = ContentInterface.LoadTexture(tileset);
            font = ContentInterface.LoadFont("font");
            tileSetName = tileset;

            _layers = new Tile[3][,]; //0=background, 1=collisionlayer, 2=foreground
            for (int x = 0; x < 3; x++)
            {
                _layers[x] = new Tile[sizeX, sizeY];
            }
            _spawns = new SpawnPoint[sizeX, sizeY];
            for (int x = 0; x < sizeX; x++)
            {
                for (int y = 0; y < sizeY; y++)
                {
                    _layers[0][x, y] = new Tile(tileSet, new Rectangle(tileSize * x, tileSize * y, tileSize, tileSize), new Rectangle(0, 0, tileSize, tileSize));
                }
            }
        }
コード例 #2
0
ファイル: EditMap.cs プロジェクト: MyEyes/Igorr
        public Map(string fileName)
        {
            _dummy = new IGORR.Server.Logic.DummyMap();
            font = ContentInterface.LoadFont("font");
            _fileName = fileName;
            BinaryReader reader = new BinaryReader(File.OpenRead(_fileName));
            int sizeX = reader.ReadInt32();
            int sizeY = reader.ReadInt32();
            tileSetName = reader.ReadString();
            tileSet = ContentInterface.LoadTexture(tileSetName);
            /*
            int tpCount = reader.ReadInt32();
            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[3][,];
            for (int layer = 0; layer < 3; layer++)
            {
                _layers[layer] = new Tile[sizeX, sizeY];
                for (int x = 0; x < sizeX; x++)
                    for (int y = 0; y < sizeY; y++)
                    {
                        int tileID=reader.ReadInt32();
                        if (tileID >= 0 && tileID * tileSize < tileSet.Width)
                            _layers[layer][x, y] = new Tile(tileSet, new Rectangle(x * tileSize, y * tileSize, tileSize, tileSize), new Rectangle(tileID * tileSize, 0, tileSize, tileSize));
                        else
                            _layers[layer][x, y] = null;
                    }
            }
            _spawns = new SpawnPoint[sizeX, sizeY];
            try
            {
                for (int x = 0; x < sizeX; x++)
                    for (int y = 0; y < sizeY; y++)
                    {
                        int objectID = reader.ReadInt32();
                        if (objectID >= 0)
                        {
                            _spawns[x, y] = new SpawnPoint();
                            _spawns[x, y].objectID = objectID;
                            _spawns[x, y].X = x;
                            _spawns[x, y].Y = y;
                            if (objectID > 0)
                            {
                                ObjectControl ctrl =ModuleManager.GetControl(objectID, reader);
                                if (ctrl != null)
                                    _spawns[x, y].bytes = ctrl.GetObjectBytes();
                                //ModuleManager.SpawnByIdServer(_dummy, objectID, 0, Point.Zero, reader);
                            }

                        }
                        else
                            _spawns[x, y] = null;
                    }
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Error loading objects in the map, you can still continue though");
            }
            reader.Close();
            _teleportPoints.Clear();
        }