public bool LoadGrid(int ID, out IEnumerable <MyObjectBuilder_CubeGrid> Grids, out GridStamp Stamp) { Grids = null; Stamp = null; if (ID - 1 >= SelectedPlayerFile.Grids.Count || ID < 1) { Chat?.Respond("Invalid Index! Grid doent exsist in that slot!"); return(false); } Stamp = SelectedPlayerFile.GetGrid(ID); string GridPath = Path.Combine(PlayersFolderPath, Stamp.GridName + ".sbc"); Log.Warn("Attempting to load grid @" + GridPath); if (!GridSerializer.LoadGrid(GridPath, out Grids)) { return(false); } PluginDependencies.BackupGrid(Grids.ToList(), IdentityID); GridSerializer.TransferGridOwnership(Grids, IdentityID); return(true); }
public void Initialize(Grid <Tile> grid = null) { if (grid == null && string.IsNullOrEmpty(GridData)) { return; } if (grid == null) { _grid = GridSerializer.Deserialize(GridData); if (_grid == null) { Debug.LogError("There was an error deserializing the grid data."); } } else { _grid = grid; GridData = GridSerializer.Serialize(_grid); } GridWidth = _grid.GetGrid().GetLength(0); GridHeight = _grid.GetGrid().GetLength(1); GridCellSize = _grid.GetCellSize(); GridOrigin = _grid.GetOrigin(); if (Instance != null && Instance != this) { Destroy(gameObject); } else { Instance = this; } }
private static void Main(string[] args) { args = new string[2]; args[0] = @"C:\Source\CC\input.txt"; args[1] = "42"; var importer = new InputImporter(); Input input = importer.Import(args[0]); input.StartIndex = int.Parse(args[1]); Grid bestSolution = null; for (int i = 0; i < 10000; i++) { var puzzle = new TetrisPuzzle(); Grid solution = puzzle.Solve(input); if (bestSolution == null || solution.NumEmpty < bestSolution.NumEmpty) { bestSolution = solution; } } var serializer = new GridSerializer(); string output = serializer.Execute(bestSolution); Console.WriteLine(output); File.WriteAllText("output.txt", output); Console.ReadKey(); }
public bool TryGetGrids(string PlayersFolderPath, out IEnumerable <MyObjectBuilder_CubeGrid> Grids) { Grids = null; string GridPath = Path.Combine(PlayersFolderPath, GridName + ".sbc"); if (!GridSerializer.LoadGrid(GridPath, out Grids)) { return(false); } return(true); }
public bool LoadGrid(GridStamp Stamp, out IEnumerable <MyObjectBuilder_CubeGrid> Grids) { Grids = null; if (!Stamp.TryGetGrids(PlayersFolderPath, out Grids)) { return(false); } PluginDependencies.BackupGrid(Grids.ToList(), Identity.IdentityId); GridSerializer.TransferGridOwnership(Grids, Identity.IdentityId, Stamp.TransferOwnerShipOnLoad); return(true); }
public void GraphIsEqualAfterSerializeAndDeSerialize() { var grid = Grid.CreateGridWithLateralConnections(new GridSize(2, 4), new Size(Distance.FromMeters(2.0f), Distance.FromMeters(1.0f)), Velocity.FromKilometersPerHour(3)); var stringGrid = GridSerializer.SerializeGrid(grid); var deserializedGrid = GridSerializer.DeSerializeGrid(stringGrid); Assert.AreEqual(grid.Rows, deserializedGrid.Rows); Assert.AreEqual(grid.Columns, deserializedGrid.Columns); for (int i = 0; i < grid.Columns; i++) { for (int j = 0; j < grid.Rows; j++) { var gridPosition = new GridPosition(i, j); var originalNode = grid.GetNode(gridPosition); var deserializedNode = grid.GetNode(gridPosition); Assert.AreEqual(originalNode.Position, deserializedNode.Position); Assert.AreEqual(originalNode.Outgoing.Count, deserializedNode.Outgoing.Count); Assert.AreEqual(originalNode.Incoming.Count, deserializedNode.Incoming.Count); foreach (var edge in originalNode.Outgoing) { var matchingEdge = deserializedNode.Outgoing.Single(o => o.Start.Position.Equals(edge.Start.Position) && o.End.Position.Equals(edge.End.Position)); Assert.AreEqual(edge.Distance, matchingEdge.Distance); Assert.AreEqual(edge.TraversalDuration, matchingEdge.TraversalDuration); Assert.AreEqual(edge.TraversalVelocity, matchingEdge.TraversalVelocity); } foreach (var edge in originalNode.Incoming) { var matchingEdge = deserializedNode.Incoming.Single(o => o.Start.Position.Equals(edge.Start.Position) && o.End.Position.Equals(edge.End.Position)); Assert.AreEqual(edge.Distance, matchingEdge.Distance); Assert.AreEqual(edge.TraversalDuration, matchingEdge.TraversalDuration); Assert.AreEqual(edge.TraversalVelocity, matchingEdge.TraversalVelocity); } } } }
public static void SetGridPreview(long EntityID, ulong Owner, string GridName) { if (!ValidGrid(Owner, GridName, out MarketListing Offer, out string GridPath)) { return; } if (Offer.NumberofBlocks > 100000) { Log.Warn("MarketPreview Blocked. Grid is greater than 100000 blocks"); return; } //Need async Log.Warn("Loading Grid"); if (!GridSerializer.LoadGrid(GridPath, out IEnumerable <MyObjectBuilder_CubeGrid> GridBuilders)) { RemoveMarketListing(Owner, GridName); return; } //Now attempt to load grid if (MyEntities.TryGetEntityById(EntityID, out MyEntity entity)) { MyProjectorBase proj = entity as MyProjectorBase; if (proj != null) { proj.SendRemoveProjection(); var Grids = GridBuilders.ToList(); Log.Warn("Setting projection!"); SendNewProjection.Invoke(proj, new object[] { Grids }); } } }
public async Task <bool> SaveGridsToFile(GridResult Grids, string FileName) { return(await GridSerializer.SaveGridsAndClose(Grids.Grids, PlayersFolderPath, FileName, Identity.IdentityId)); }
public bool SaveGridsToFile(GridResult Grids, string FileName) { return(GridSerializer.SaveGridsAndClose(Grids.Grids, PlayersFolderPath, FileName, IdentityID)); }