private static void PromoteSoftware(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; } if (item is SoftwareAlpha) { SoftwareAlpha alpha = item as SoftwareAlpha; if (alpha.InBeta) { autoDevItem.AlreadyDev = autoDevItem.MonthsToSpend; } if (!alpha.InDelay) { item.PromoteAction(); Console.Log("Manually moving out of alpha"); //if (!alpha.InDelay) { Console.Log("PrintingCopies target = " + autoDev.PrintingCopies); if (autoDev.PrintingCopies > 0U && !autoDevItem.hasPrinted) { uint num = autoDev.PrintingCopies; if (autoDev.PrintingCopyRel) { num = (uint)(item.Followers * (autoDev.PrintingCopies / 100.0)); } Console.Log("PrintingCopies num = " + num); autoDevItem.hasPrinted = true; PrintJob printJob = new PrintJob(alpha.ForceID(), 1f) { Limit = num }; GameSettings.Instance.PrintOrders[printJob.ID] = printJob; HUD.Instance.distributionWindow.RefreshOrders(); } } } } }
private static AutoDevWorkItem GetAutoDevWorkItem(SoftwareWorkItem item) { var autoDevTasks = GameSettings.Instance.MyCompany.WorkItems.Where(wi => wi is AutoDevWorkItem); foreach (var workItem in autoDevTasks) { var autoDev = (AutoDevWorkItem)workItem; if (autoDev.Items.Any(adi => adi.Alpha == item)) { return(workItem as AutoDevWorkItem); } } return(null); }
private string GetDevStatus(object o) { SoftwareWorkItem item = o as SoftwareWorkItem; Debug.Assert(item != null); var autoDev = GetAutoDevWorkItem(item); if (autoDev == null) { return("Design"); } if (autoDev.Paused) { return("Paused"); } var autoDevItem = autoDev.Items.FirstOrDefault(i => item == i.Alpha); if (autoDevItem != null && autoDevItem.Queued) { return("Queued"); } return("Active"); }
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 SetupDevColumnDefinition(GUIListView listView) { NameColumn(listView); listView.AddFilterColumn("Status", GetDevStatus, (o, o1) => String.Compare(GetDevStatus(o), GetDevStatus(o1), StringComparison.Ordinal), true, GUIListView.FilterType.Name, GetDevStatus); listView.AddFilterColumn("Phase", o => { if (o is SoftwareAlpha) { var sa = o as SoftwareAlpha; if (sa.InBeta) { return("Beta"); } if (sa.InDelay) { return("Delay"); } return("Alpha"); } return(o.GetType().ToString()); }, (o, o1) => { string phase1 = ""; string phase2 = ""; if (o is SoftwareAlpha) { var sa = o as SoftwareAlpha; if (sa.InBeta) { phase1 = "Beta"; } if (sa.InDelay) { phase1 = "Delay"; } phase1 = "Alpha"; } if (o1 is SoftwareAlpha) { var sa = o as SoftwareAlpha; if (sa.InBeta) { phase2 = "Beta"; } if (sa.InDelay) { phase2 = "Delay"; } phase2 = "Alpha"; } return(String.CompareOrdinal(phase1, phase2)); }, true, GUIListView.FilterType.Name, o => { if (o is SoftwareAlpha) { var sa = o as SoftwareAlpha; if (sa.InBeta) { return("Beta"); } if (sa.InDelay) { return("Delay"); } return("Alpha"); } return(o.GetType().ToString()); }); listView.AddColumn("Followers", o => { SoftwareWorkItem item = o as SoftwareWorkItem; Debug.Assert(item != null); return(Mathf.RoundToInt(item.Followers).ToString("N0")); }, (o, o1) => { SoftwareWorkItem item = o as SoftwareWorkItem; SoftwareWorkItem item1 = o1 as SoftwareWorkItem; Debug.Assert(item != null); Debug.Assert(item1 != null); return((int)(item.Followers - item1.Followers)); }, true); listView.AddColumn("Code", o => { if (o is SoftwareAlpha) { SoftwareAlpha item = o as SoftwareAlpha; return(string.Format("{0:0.##}/{1:0.##}", (item.CodeProgress * item.CodeDevTime), item.CodeDevTime)); } return("n/a"); }, (o, o1) => { SoftwareAlpha item = o as SoftwareAlpha; SoftwareAlpha item1 = o1 as SoftwareAlpha; float val1 = item != null ? item.CodeProgress : float.MaxValue; float val2 = item1 != null ? item1.CodeProgress : float.MaxValue; return((int)(val1 - val2)); }, true); listView.AddColumn("Art", o => { if (o is SoftwareAlpha) { SoftwareAlpha item = o as SoftwareAlpha; return(string.Format("{0:0.##}/{1:0.##}", (item.ArtProgress * item.ArtDevTime), item.ArtDevTime)); } return("n/a"); }, (o, o1) => { SoftwareAlpha item = o as SoftwareAlpha; SoftwareAlpha item1 = o1 as SoftwareAlpha; float val1 = item != null ? item.ArtProgress : float.MaxValue; float val2 = item1 != null ? item1.ArtProgress : float.MaxValue; return((int)(val1 - val2)); }, true); listView.AddColumn("StillBugs", o => { if (o is SoftwareAlpha) { SoftwareAlpha item = o as SoftwareAlpha; if (item.InBeta) { return((int)item.FixedBugs); } } return("n/a"); }, (o, o1) => { SoftwareAlpha item = o as SoftwareAlpha; SoftwareAlpha item1 = o1 as SoftwareAlpha; float val1 = item != null && item.InBeta ? item.FixedBugs : float.MaxValue; float val2 = item1 != null && item.InBeta ? item1.FixedBugs : float.MaxValue; return((int)(val1 - val2)); }, true); listView.AddActionColumn("Market", o => { SoftwareWorkItem item = o as SoftwareWorkItem; Debug.Assert(item != null); HandleMarketing(item); }, false); listView.AddActionColumn("Promote", o => { SoftwareWorkItem item = o as SoftwareWorkItem; Debug.Assert(item != null); PromoteSoftware(item); }, false); }