Пример #1
0
        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);
        }