public static void MaxArtAction(string input) { WorkItem WorkItem = GameSettings.Instance.MyCompany.WorkItems .Where(item => item.GetType() == typeof(SoftwareAlpha)).FirstOrDefault(item => (item as SoftwareAlpha).Name == input && !(item as SoftwareAlpha).InBeta); if (WorkItem == null) { return; } var art = ((SoftwareAlpha)WorkItem); float optimalProgress = 0; for (int i = 1; i < 5; i++) { float p = SoftwareAlpha.FinalQualityCalc( (Mathf.Pow(10, i) - 1f) / Mathf.Pow(10, i), SoftwareAlpha.GetMaxCodeQuality(art.ArtProgress) ); if (p > optimalProgress) { optimalProgress = p; } } art.ArtProgress = optimalProgress; }
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(); } } } } }
public static void CheckSoftwareProgress(SoftwareAlpha software) { string softwareName = software.SoftwareName; if (!software.InBeta) { MaxCodeAction(softwareName); MaxArtAction(softwareName); software.PromoteAction(); } else { FixBugsAction(softwareName); } }
public static void MaxFollowersAction(string input) { WorkItem WorkItem = GameSettings.Instance.MyCompany.WorkItems .Where(item => item.GetType() == typeof(SoftwareAlpha)).FirstOrDefault(item => (item as SoftwareAlpha).Name == input && !(item as SoftwareAlpha).Paused); if (WorkItem == null) { return; } SoftwareAlpha alpha = (SoftwareAlpha)WorkItem; alpha.MaxFollowers += 1000000000; alpha.ReEvaluateMaxFollowers(); alpha.FollowerChange += 1000000000f; alpha.Followers += 1000000000f; }
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); }