private void HandleMarketing(SoftwareWorkItem item) { AutoDevWorkItem autoDev = GetAutoDevWorkItem(item); AutoDevWorkItem.AutoDevItem autoDevItem = null; if (autoDev != null) { autoDevItem = autoDev.Items.FirstOrDefault(adi => adi.Alpha == item); } if (autoDev == null || autoDevItem == null) { Console.LogError("Could not find auto dev task for current work item"); return; } bool doneSomething = false; /// Do press release if (!autoDevItem.InHouse && (!autoDevItem.PressRelease && autoDev.MarketingTeams.Count > 0)) { MarketingWindow marketingWindow = HUD.Instance.marketingWindow; float cost = marketingWindow.PressOptionCost.Sum(); float potential = marketingWindow.PressOptionEffect.Sum(); autoDevItem.PressRelease = true; MarketingPlan marketingPlan = new MarketingPlan(autoDevItem.Alpha, MarketingPlan.TaskType.PressRelease, cost, potential, !(autoDevItem.Alpha.guiItem == null) ? autoDevItem.Alpha.guiItem.transform .GetSiblingIndex() + 1 : -1); marketingPlan.AutoDev = true; marketingPlan.Hidden = false; autoDev.AssignTeams(marketingPlan, autoDev.MarketingTeams); GameSettings.Instance.MyCompany.WorkItems.Add(marketingPlan); doneSomething = true; } /// Do Press builds if (!autoDevItem.InHouse && autoDev.MarketingTeams.Count > 0) { SoftwareAlpha alpha = item as SoftwareAlpha; GameSettings.Instance.PressBuildQueue.Add(autoDevItem.Alpha); HUD.Instance.AddPopupMessage("PressBuildConfirmation".LocColor((object)item), "Info", PopupManager.PopUpAction.None, 0U, PopupManager.NotificationSound.Neutral, 0.0f, PopupManager.PopupIDs.None, 6); autoDevItem.PressBuild = true; doneSomething = true; } if (!doneSomething) { HUD.Instance.AddPopupMessage("Can't market product at this time.", "Exclamation", PopupManager.PopUpAction.None, 0, PopupManager.NotificationSound.Warning, 0f); } }
private void SetupMarketColumnDefinition(GUIListView marketList) { NameColumn(marketList); marketList.AddColumn("Type", o => { MarketingPlan item = o as MarketingPlan; Debug.Assert(item != null); return(item.Type); }, null, false); marketList.AddColumn("Progress", o => { MarketingPlan item = o as MarketingPlan; Debug.Assert(item != null); return(string.Format("{0:00}%", item.GetProgress() * 100f)); }, (o, o1) => { MarketingPlan item = o as MarketingPlan; MarketingPlan item1 = o1 as MarketingPlan; Debug.Assert(item != null); Debug.Assert(item1 != null); return((int)(item.GetProgress() - item1.GetProgress())); }, true); marketList.AddColumn("Budget", o => { MarketingPlan item = o as MarketingPlan; Debug.Assert(item != null); return(item.MaxBudget.Currency(false)); }, (o, o1) => { MarketingPlan item = o as MarketingPlan; MarketingPlan item1 = o1 as MarketingPlan; Debug.Assert(item != null); Debug.Assert(item1 != null); return((int)(item.MaxBudget - item1.MaxBudget)); }, true); marketList.AddColumn("Cost", o => { MarketingPlan item = o as MarketingPlan; Debug.Assert(item != null); return(item.Spent.Currency(true)); }, (o, o1) => { MarketingPlan item = o as MarketingPlan; MarketingPlan item1 = o1 as MarketingPlan; Debug.Assert(item != null); Debug.Assert(item1 != null); return((int)(item.Spent - item1.Spent)); }, true); marketList.AddActionColumn("Takeover", o => { MarketingPlan item = o as MarketingPlan; Debug.Assert(item != null); item.AutoDev = false; item.Hidden = false; var autoDevTasks = GameSettings.Instance.MyCompany.WorkItems.Where(wi => wi is AutoDevWorkItem); foreach (var workItem in autoDevTasks) { var autoDev = (AutoDevWorkItem)workItem; autoDev.MarketingItems.Remove(item); } }, false); }