Esempio n. 1
0
        public MultiplayerConfig LoadMultiplayer(byte[] data)
        {
            MemoryStream memoryStream = new MemoryStream(data);
            BinaryReader br           = new BinaryReader(memoryStream);

            //Read compressed bytes
            int uncompressedSize = br.ReadInt32();

            //Uncompress bytes
            byte[]     uncompressedBytes = new byte[uncompressedSize];
            GZipStream gzipStream        = new GZipStream(memoryStream, CompressionMode.Decompress);
            int        bytesRead         = 0;

            while (true)
            {
                int read = gzipStream.Read(uncompressedBytes, bytesRead, uncompressedSize - bytesRead);

                if (read == 0)
                {
                    break;
                }

                bytesRead += read;
            }

            br = new BinaryReader(new MemoryStream(uncompressedBytes));

            //Load world from uncompressed bytes
            MultiplayerConfig config = LoadMultiplayer(br);

            tileManager.Create(config.tileDefinitions, sizeXbits, sizeYbits, sizeZbits);
            itemManager.Create(config.itemDefinitions);
            avatarManager.Create(config.avatarDefinitions);
            sectorManager.Create();
            dayCycleManager.Create(null);

            tileManager.Load(br);
            itemManager.Load(br);
            sectorManager.Load(br);
            dayCycleManager.Load(br);

            //Player avatar
            int    playerObjectId = br.ReadInt32();
            Player player         = (Player)avatarManager.CreateAvatar(avatarManager.GetAvatarDefinitionById("player"), playerObjectId, new Vector3(), false);

            player.Load(br);

            cwListener.CreateObject(player);

            gameplay.WorldLoaded();

            return(config);
        }