public override void Execute() { var channel = MarketingChannelView.channel; var company = Flagship; var relay = FindObjectOfType <FlagshipRelayInCompanyView>(); var channelId = channel.ID; var task = new TeamTaskChannelActivity(channelId, Marketing.GetChannelCost(company, channelId)); relay.AddPendingTask(task); var channelList = FindObjectOfType <MarketingChannelsListView>(); if (channelList != null) { // view render to recalculate features count channelList.ViewRender(); if (channelList.count == 0) { CloseModal("Marketing"); } MarketingChannelView.ViewRender(); } }
public override void ViewRender() { base.ViewRender(); var company = Flagship; // modal RenderMarketingEfficiencyInModal(company); CalculateROI(company); if (PossibleChannels != null) { Draw(PossibleChannels, !ShowAffordableOnly); } if (AllChannels != null) { Draw(AllChannels, ShowAffordableOnly); } // list var channels = ShowAffordableOnly ? Markets.GetAffordableMarketingChannels(company, Q) : Markets.GetTheoreticallyPossibleMarketingChannels(company); // ---------------------------------------------------- var p = Teams.GetMarketingTaskMockup(); var activeTasks = Teams.GetActiveSameTaskTypeSlots(company, p); var pending = Teams.GetPendingSameTypeTaskAmount(company, p); AmountOfFeatures.text = $"{activeTasks}"; if (pending > 0) { AmountOfFeatures.text += $"+{Visuals.Colorize(pending.ToString(), "orange")}"; } Draw(PendingTaskIcon, pending > 0); AmountOfSlots.text = Visuals.Colorize((long)Teams.GetOverallSlotsForTaskType(company, p)); // ---------------------------------------------------- SetItems(channels.OrderByDescending(c => Marketing.GetChannelCost(company, c.ID))); }
void RenderCost(GameEntity company) { var channelId = channel.ID; var adCost = Marketing.GetChannelCost(company, channelId); var clientCost = Marketing.GetChannelCostPerUser(company, channelId); var repaymentColor = Visuals.GetGradientColor(minCost, maxCost, clientCost, true); var canMaintain = Economy.IsCanMaintainForAWhile(MyCompany, Q, adCost, 1); var isFreeChannel = adCost == 0; Cost.text = isFreeChannel ? "FREE" : $"{Format.Money(adCost, true)} weekly"; // (${clientCost.ToString("0.00")} each) Cost.color = Visuals.GetColorPositiveOrNegative(canMaintain); CostPerUser.text = $"{clientCost:0.0}$"; CostPerUser.color = repaymentColor; }
public override void ViewRender() { base.ViewRender(); var product = Flagship; var channelId = ChannelInfo.ID; var cost = Marketing.GetChannelCost(product, channelId); cost = (long)ChannelInfo.costPerAd; var clients = Marketing.GetChannelClientGain(product, ChannelInfo); Cost.text = "for " + Format.Money(cost, true); Gain.text = Visuals.Positive("+" + Format.MinifyToInteger(clients)); // 2K => 3,3 // 10M => 6 bool isUpgrading = Marketing.IsActiveInChannel(product, channelId); var duration = Marketing.GetCampaignDuration(product, ChannelInfo); // Mathf.Log(clients, 5) / 2; var period = C.PERIOD * duration; var f = CurrentIntDate % period; var percent = Mathf.Ceil(f * 100 / period); if (isUpgrading) { var task = product.team.Teams[0].Tasks .First(t => t.IsMarketingTask && (t as TeamTaskChannelActivity).ChannelId == channelId); //Debug.Log("curr " + Format.FormatDate(CurrentIntDate) + " start " + Format.FormatDate(task.StartDate) + " end " + Format.FormatDate(task.EndDate)); RenderChannelProgress((CurrentIntDate - task.StartDate) * 100 / (task.EndDate - task.StartDate)); } else { RenderChannelProgress(0); } /*ProgressBar.SetValue(f, period); * ProgressBar.SetCustomText(percent + "%"); * * if (TextualProgress) * TextualProgress.text = percent + "%";*/ Draw(Fade, isUpgrading); Draw(ProgressBar, isUpgrading); return; bool needsToEnd = f < 2; // ScheduleUtils.IsMonthEnd(CurrentIntDate); /*if (needsToEnd && isUpgrading) * { * var task = product.team.Teams[0].Tasks.First(t => t.IsMarketingTask && (t as TeamTaskChannelActivity).ChannelId == channelId); * * //task.StartDate = * * Teams.RemoveTeamTask(Flagship, Q, task); * //Marketing.AddClients(product, clients); * * // Spawn animation * //Animate(Visuals.Positive($"+{Format.Minify(clients)} users")); * }*/ }