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()); } }
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)); } }
protected override void saveUnguarded(string key, Interior part) { WorldLoader.SaveInterior(part); }