public void UnloadCampaignCommand() { if (!instance.CheckForCheating()) { uConsole.Log("Campaign Mod is not enabled!"); return; } int Args = uConsole.GetNumParameters(); if (Args != 1) { uConsole.Log("Usage: unload_campaign <name>"); } else { string Tag = uConsole.GetString() + "CampaignMod"; if (!PersistentWorkshopCampaigns.Exists(Tag)) { uConsole.Log("That campaign is not loaded!"); return; } PersistentWorkshopCampaign campaign = PersistentWorkshopCampaigns.Get(Tag); foreach (ResponseData.Item item in campaign.definition.items) { PersistentWorkshopItems.Delete(item.id); } PersistentWorkshopCampaigns.Delete(Tag); uConsole.Log("Unloaded " + Tag + "!"); } }
public ResponseData.Campaign GenerateCampaign(string cPath, CampaignLayoutData cData) { string cName = cData.m_Title; if (cData.m_ItemIds.Count == 0) { uConsole.Log(cName + " doesn't have any levels!"); return(null); } List <LevelData> levelDatas = new List <LevelData>(); foreach (string id in cData.m_ItemIds) { if (!File.Exists(cPath + "/" + id.Replace("CampaignMod", "") + ".level")) { uConsole.Log(cName + " tried to load " + id.Replace("CampaignMod", "") + " but it doesn't exist!"); return(null); } byte[] bytes = File.ReadAllBytes(cPath + "/" + id.Replace("CampaignMod", "") + ".level"); int offset = 0; levelDatas.Add(LevelData.Deserialize(bytes, ref offset)); } List <ResponseData.Item> items = new List <ResponseData.Item>(); foreach (LevelData levelData in levelDatas) { ResponseData.Item item = levelData.GenerateItem(); PersistentWorkshopItems.Create(item, levelData.PreviewData, Utils.ZipPayload(levelData.LayoutBytes)); items.Add(item); } ResponseData.Campaign campaign = new ResponseData.Campaign(); campaign.ownedBy = items[0].ownedBy; campaign.items = items.ToArray(); campaign.id = cName + "CampaignMod"; campaign.title = cName; campaign.description = cData.m_Description; campaign.winMessage = cData.m_WinMessage; PersistentWorkshopCampaigns.Delete(campaign.id); PersistentWorkshopCampaigns.Create(campaign); return(campaign); }