示例#1
0
    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();
        }
    }
示例#2
0
    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)));
    }
示例#3
0
    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;
    }
示例#4
0
    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"));
         * }*/
    }