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); }
private static void Postfix() { uConsole.RegisterCommand("load_campaign", "loads a campaign", new uConsole.DebugCommand(instance.LoadCampaignCommand)); uConsole.RegisterCommand("load_all_campaigns", "loads all the campaigns", new uConsole.DebugCommand(instance.LoadAllCampaignsCommand)); uConsole.RegisterCommand("create_campaign", "creates an empty campaign", new uConsole.DebugCommand(instance.CreateCampaignCommand)); uConsole.RegisterCommand("remove_campaign", "remove a campaign", new uConsole.DebugCommand(instance.RemoveCampaignCommand)); uConsole.RegisterCommand("campaign_info", "shows some info of a campaign or a list of all campaigns", new uConsole.DebugCommand(instance.CampaignInfoCommand)); uConsole.RegisterCommand("edit_campaign_info", "edit campaign info", new uConsole.DebugCommand(instance.EditCampaignInfoCommand)); uConsole.RegisterCommand("remove_level", "removes a level from a campaign", new uConsole.DebugCommand(instance.RemoveLevelCommand)); uConsole.RegisterCommand("add_this_level", "adds current sandbox level to a campaign", new uConsole.DebugCommand(instance.AddThisLevelCommand)); uConsole.RegisterCommand("unload_campaign", "unloads a campaign", new uConsole.DebugCommand(instance.UnloadCampaignCommand)); uConsole.RegisterCommand("export_campaign", "exports a campaign to a .campaign file", new uConsole.DebugCommand(instance.ExportCampaignCommand)); uConsole.RegisterCommand("import_campaign", "imports a campaign from a .campaign file", new uConsole.DebugCommand(instance.ImportCampaignCommand)); ResponseData.Campaign lol = new ResponseData.Campaign(); }
public void LoadCampaign(string cPath, string Name) { if (!Directory.Exists(cPath)) { uConsole.Log(Name + " does not exist!"); return; } else if (!File.Exists(cPath + "/CampaignData.json")) { uConsole.Log(Name + " is missing CampaignData.json!"); return; } CampaignLayoutData cData = JsonUtility.FromJson <CampaignLayoutData>(File.ReadAllText(cPath + "/CampaignData.json")); ResponseData.Campaign campaign = GenerateCampaign(cPath, cData); if (campaign == null) { return; } Keys.Add(campaign.id); uConsole.Log(Name + " loaded!"); }