示例#1
0
        private void handleCreateInteriorBtn()
        {
            var interiorDimensions = new Point(20, 20);
            var player             = SimulationGame.Player;
            var currentWorldPart   = player.InteriorID == Interior.Outside ? (WorldPart)SimulationGame.World.GetFromRealPoint((int)player.Position.X, (int)player.Position.Y) : SimulationGame.World.InteriorManager.Get(player.InteriorID);
            var dialog             = new InputDialog("Interior Dimensions", JToken.FromObject(interiorDimensions, SerializationUtils.Serializer).ToString(Formatting.Indented));

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                interiorDimensions = SerializationUtils.Serializer.Deserialize <Point>(new JTokenReader(JToken.Parse(dialog.ResultText)));

                var newInterior = new Interior(interiorDimensions);

                newInterior.SetPersistent(true);

                for (int i = 0; i < interiorDimensions.X; i++)
                {
                    for (int j = 0; j < interiorDimensions.Y; j++)
                    {
                        newInterior.SetBlockType(i, j, 1);
                    }
                }

                var interiorWorldLink = new WorldLink(new WorldPosition(0, 0, newInterior.ID), player.Position.ToBlockPosition());

                newInterior.AddWorldLink(interiorWorldLink);

                WorldLoader.SaveInterior(newInterior);

                currentWorldPart.SetPersistent(true);
                currentWorldPart.AddWorldLink(interiorWorldLink.SwapFromTo());
            }
        }
示例#2
0
        private void handleChangePersistencyBtn()
        {
            var       player           = SimulationGame.Player;
            WorldPart currentWorldPart = player.InteriorID == Interior.Outside ? (WorldPart)SimulationGame.World.GetFromRealPoint((int)player.Position.X, (int)player.Position.Y) : SimulationGame.World.InteriorManager.Get(player.InteriorID);

            currentWorldPart.SetPersistent(!currentWorldPart.IsPersistent);

            if (currentWorldPart is WorldGridChunk)
            {
                var chunkPoint = GeometryUtils.GetChunkPosition((int)player.Position.X, (int)player.Position.Y, WorldGrid.WorldChunkPixelSize.X, WorldGrid.WorldChunkPixelSize.Y);

                WorldLoader.SaveWorldGridChunk(chunkPoint.X, chunkPoint.Y, (WorldGridChunk)currentWorldPart);
                WorldLoader.SaveWalkableGridChunk(chunkPoint.X, chunkPoint.Y, (WalkableGridChunk)SimulationGame.World.WalkableGrid.GetFromRealPoint(chunkPoint.X, chunkPoint.Y));
            }
            else
            {
                WorldLoader.SaveInterior(SimulationGame.World.InteriorManager.Get(player.InteriorID));
            }
        }
示例#3
0
 protected override void saveUnguarded(string key, Interior part)
 {
     WorldLoader.SaveInterior(part);
 }