Ejemplo n.º 1
0
        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();
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
        }