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);
 }