Пример #1
0
    public override void ViewRender()
    {
        base.ViewRender();

        var company = Flagship;

        var tasks = new List <TeamTask>();

        for (var teamId = 0; teamId < company.team.Teams.Count; teamId++)
        {
            var team = company.team.Teams[teamId];

            for (var slotId = 0; slotId < team.Tasks.Count; slotId++)
            {
                if (team.Tasks[slotId].IsMarketingTask)
                {
                    tasks.Add(team.Tasks[slotId]);
                }
                //tasks.Add(new SlotInfo { SlotId = slotId, TeamId = teamId });
            }
        }

        var marketingTasks = tasks
                             .OrderByDescending(t => Marketing.GetChannelClientGain(company, (t as TeamTaskChannelActivity).ChannelId))
                             .Take(12);

        SetItems(marketingTasks);
    }
Пример #2
0
    public override string RenderValue()
    {
        var task = TeamTask;

        var cost  = Economy.GetTeamTaskCost(Flagship, task);
        var costs = Format.Money(cost) + " / week";

        if (task is TeamTaskFeatureUpgrade)
        {
            var f = task as TeamTaskFeatureUpgrade;

            return($"Upgrading {f.NewProductFeature.Name} feature");
        }

        if (task is TeamTaskChannelActivity f1)
        {
            var gain = Marketing.GetChannelClientGain(Flagship, f1.ChannelId);

            return($"Marketing in Channel {f1.ChannelId} (+{Format.Minify(gain)} users / week). Costs {costs}");
        }

        if (task.IsHighloadTask)
        {
            var f = task as TeamTaskSupportFeature;

            return($"{task.GetPrettyName()} can maintain {Format.Minify(f.SupportFeature.SupportBonus.Max)} users. Costs {costs}");
        }

        return("???");
    }
Пример #3
0
    void RenderAudienceGain(GameEntity company)
    {
        var channelId = channel.ID;

        // audience gain
        var gain = Marketing.GetChannelClientGain(company, channelId);

        Users.text = "+" + Format.Minify(gain); // + " users";
    }
    string GetMarketingActivity(string text, GameEntity product)
    {
        var churn = Marketing.GetChurnRate(product, Q);

        var joinedChannels = product.companyMarketingActivities.Channels.Keys
                             .Select(k => Marketing.GetChannelClientGain(product, k))
                             .Sum();

        text += $"\n{(int)churn}% channels: " + Marketing.GetActiveChannelsCount(product) + $"  +{Format.Minify(joinedChannels)}\n";

        return(text);
    }
Пример #5
0
    void RenderMarketingTask(GameEntity product)
    {
        Icon.sprite = ChannelSprite;

        var channelId = (Task as TeamTaskChannelActivity).ChannelId;

        var gain = Marketing.GetChannelClientGain(product, channelId);

        RepresentativeNumber.text  = "+" + Format.Minify(gain); // .ToString("0.0")
        RepresentativeNumber.color = Visuals.GetColorPositiveOrNegative(true);

        TaskHint.SetHint($"Getting {Format.Minify(gain)} users from channel #{channelId}");
    }
Пример #6
0
    void RenderTaskAssignTeamView(TeamTask task, TeamInfo info)
    {
        if (task.IsFeatureUpgrade)
        {
            var maxLevel = Products.GetFeatureRatingCap(Flagship); // Random.Range(4, 10);
            var gain     = Products.GetFeatureRatingGain(Flagship);

            Text1.text = Visuals.Positive(gain.ToString("+0.0")); // from organisation

            Text2.text  = $"{maxLevel.ToString("0.0")} lvl";
            Text2.color = Visuals.GetGradientColor(0, 10, maxLevel);

            Text3.text = $"";
        }

        if (task.IsMarketingTask)
        {
            var marketingEfficiency = Teams.GetMarketingEfficiency(Flagship);

            var channelId = (task as TeamTaskChannelActivity).ChannelId;

            var baseGain  = Marketing.GetChannelClientGain(Flagship, channelId);
            var finalGain = baseGain * marketingEfficiency / 100;

            Text1.text  = $"{marketingEfficiency}%";
            Text1.color = Visuals.GetGradientColor(50, 150, marketingEfficiency);

            Text2.text  = $"+{Format.Minify(finalGain)} users"; // from organisation
            Text2.color = Visuals.Positive();                   // Visuals.GetGradientColor(50, 150, marketingEfficiency);

            Text3.text  = $"";
            Text3.color = Visuals.Neutral();
        }

        if (task.IsHighloadTask)
        {
            Text1.text = $"";
            //Text1.color = Visuals.GetGradientColor(5, 20, iterationSpeed);
            Text1.color = Visuals.GetColorFromString(Colors.COLOR_NEUTRAL);

            Text2.text  = $"";
            Text2.color = Visuals.GetColorFromString(Colors.COLOR_NEUTRAL);

            Text3.text  = $"";
            Text3.color = Visuals.GetColorFromString(Colors.COLOR_NEUTRAL);
        }

        Text4.text  = $"{(freeSlots == 0 ? "NO" : freeSlots.ToString())}";
        Text4.color = Visuals.GetColorPositiveOrNegative(freeSlots > 0);
    }
Пример #7
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"));
         * }*/
    }