Exemple #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);
        }
Exemple #2
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            m_sectorManager.Load(new FileInfo(ofdLoadSandbox.FileName));
            bool changed = false;

            foreach (var ship in m_sectorManager.Sector.CubeGrids)
            {
                foreach (var cube in ship.CubeBlocks)
                {
                    Type cubeType = cube.GetType();

                    if (cubeType == typeof(CubeBlockEntity))
                    {
                        CubeBlockEntity cubeBlock = (CubeBlockEntity)cube;

                        if (cubeBlock.Name == "LargeBlockInteriorWall")
                        {
                            MyBlockOrientation orientation = cubeBlock.BlockOrientation;

                            if (orientation.Up == Base6Directions.Direction.Up)
                            {
                                orientation.Up = Base6Directions.Direction.Down;
                                changed        = true;
                            }
                            else if (orientation.Up == Base6Directions.Direction.Down)
                            {
                                orientation.Up = Base6Directions.Direction.Up;
                                changed        = true;
                            }
                            cubeBlock.BlockOrientation = orientation;
                        }
                    }
                }
            }

            if (changed)
            {
                m_sectorManager.Save();
                MessageBox.Show("Save completed!");
            }
            else
            {
                MessageBox.Show("Nothing needs to be changed (No Interior wall was found)");
            }
        }