private void UpdatePublicOffers() { //Update all public offer market items! if (!Hangar.IsRunning) { return; } //Need to remove existing ones string PublicOfferPath = Plugin.Market.ServerOffersDir; //Clear list GridMarket.PublicOfferseGridList.Clear(); foreach (PublicOffers offer in Plugin.Config.PublicOffers) { if (offer.Forsale && (offer.Name != null || offer.Name != "")) { string GridFilePath = System.IO.Path.Combine(PublicOfferPath, offer.Name + ".sbc"); Hangar.Debug("Blueprint Path: " + GridFilePath); MyObjectBuilderSerializer.DeserializeXML(GridFilePath, out MyObjectBuilder_Definitions myObjectBuilder_Definitions); MyObjectBuilder_ShipBlueprintDefinition[] shipBlueprint = null; try { shipBlueprint = myObjectBuilder_Definitions.ShipBlueprints; } catch { Hangar.Debug("Error on BP: " + offer.Name + "! Most likely you put in the SBC5 file! Dont do that!"); continue; } MyObjectBuilder_CubeGrid grid = shipBlueprint[0].CubeGrids[0]; byte[] Definition = MyAPIGateway.Utilities.SerializeToBinary(grid); HangarChecks.GetPublicOfferBPDetails(shipBlueprint, out GridStamp stamp); //Straight up add new ones MarketList NewList = new MarketList(); NewList.Steamid = 0; NewList.Name = offer.Name; NewList.Seller = offer.Seller; NewList.SellerFaction = offer.SellerFaction; NewList.Price = offer.Price; NewList.Description = offer.Description; NewList.GridDefinition = Definition; NewList.GridBuiltPercent = stamp.GridBuiltPercent; NewList.NumberofBlocks = stamp.NumberofBlocks; NewList.SmallGrids = stamp.SmallGrids; NewList.LargeGrids = stamp.LargeGrids; NewList.BlockTypeCount = stamp.BlockTypeCount; //Need to setTotalBuys GridMarket.PublicOfferseGridList.Add(NewList); Hangar.Debug("Adding new public offer: " + offer.Name); } } //Update Everything! Comms.SendListToModOnInitilize(); MarketData Data = new MarketData(); Data.List = GridMarket.PublicOfferseGridList; //Write to file FileSaver.Save(Plugin.Market.ServerMarketFileDir, Data); //File.WriteAllText(Main.ServerMarketFileDir, JsonConvert.SerializeObject(Data)); //This will force the market to update the market items }
//Forces refresh of all admin offered grids and syncs them to the blocks in the server public void UpdatePublicOffers() { //Update all public offer market items! //Need to remove existing ones for (int i = 0; i < GridList.Count; i++) { if (GridList[i].Steamid != 0) { continue; } Hangar.Debug("Removing public offer: " + GridList[i].Name); GridList.RemoveAt(i); } string PublicOfferPath = ServerOffersDir; //Clear list PublicOfferseGridList.Clear(); foreach (PublicOffers offer in Config.PublicOffers) { if (offer.Forsale) { string GridFilePath = System.IO.Path.Combine(PublicOfferPath, offer.Name + ".sbc"); MyObjectBuilderSerializer.DeserializeXML(GridFilePath, out MyObjectBuilder_Definitions myObjectBuilder_Definitions); MyObjectBuilder_ShipBlueprintDefinition[] shipBlueprint = null; try { shipBlueprint = myObjectBuilder_Definitions.ShipBlueprints; } catch { Hangar.Debug("Error on BP: " + offer.Name + "! Most likely you put in the SBC5 file! Dont do that!"); continue; } MyObjectBuilder_CubeGrid grid = shipBlueprint[0].CubeGrids[0]; byte[] Definition = MyAPIGateway.Utilities.SerializeToBinary(grid); //HangarChecks.GetPublicOfferBPDetails(shipBlueprint, out GridStamp stamp); //Straight up add new ones MarketList NewList = new MarketList(); NewList.Steamid = 0; NewList.Name = offer.Name; NewList.Seller = offer.Seller; NewList.SellerFaction = offer.SellerFaction; NewList.Price = offer.Price; NewList.Description = offer.Description; NewList.GridDefinition = Definition; //NewList.GridBuiltPercent = stamp.GridBuiltPercent; //NewList.NumberofBlocks = stamp.NumberofBlocks; //NewList.SmallGrids = stamp.SmallGrids; //NewList.LargeGrids = stamp.LargeGrids; // NewList.BlockTypeCount = stamp.BlockTypeCount; //Need to setTotalBuys PublicOfferseGridList.Add(NewList); Hangar.Debug("Adding new public offer: " + offer.Name); } } //Update Everything! Comms.SendListToModOnInitilize(); MarketData Data = new MarketData(); Data.List = PublicOfferseGridList; FileSaver.Save(ServerMarketFileDir, Data); }