Пример #1
0
    string GetCompanyHint(bool hasControl)
    {
        StringBuilder hint = new StringBuilder(company.company.Name);

        var position = Markets.GetPositionOnMarket(Q, company);

        //
        var clients = Marketing.GetUsers(company);

        var change = Marketing.GetAudienceChange(company, Q);

        //CompanyGrowth.text = Format.SignOf(change) + Format.Minify(change);
        //CompanyGrowth.color = Visuals.GetColorPositiveOrNegative(change);
        //CompanyGrowth.GetComponent<Hint>().SetHint($"Audience change: <b>{Format.Minify(change)}</b>");

        hint.AppendLine($"\n\n");
        hint.AppendLine($"Users: <b>{Format.Minify(clients)}</b> (#{position + 1})");
        hint.AppendLine($"Audience change: <b>{Format.Minify(change)}</b>");

        hint.AppendLine(GetProfitDescription());

        if (hasControl)
        {
            hint.AppendLine(Visuals.Colorize("\nYou control this company", Colors.COLOR_CONTROL));
        }

        return(hint.ToString());
    }
Пример #2
0
    void RenderUsers()
    {
        var users = Marketing.GetUsers(company);


        var growth     = Marketing.GetAudienceChange(company, Q, true);
        var growthSum  = growth.Sum();
        var growthSign = Format.SignOf(growthSum);

        var growthPhrase      = $"<b>{growthSign}{Format.MinifyToInteger(growthSum)}</b>";
        var growthDescription = Visuals.Colorize(growthPhrase, growthSum > 0);

        Growth.text = $"<b>{Format.MinifyToInteger(users)}</b> users";
        if (growthSum != 0)
        {
            Growth.text += $" ({growthDescription})";
        }

        Users.text = $"<b>{company.company.Name}</b>";

        if (users != previousUsers)
        {
            AnimationSpawner.Spawn(Visuals.Colorize(growthPhrase + " users", growthSum > 0), null);
            // PlaySound();
            previousUsers = users;
        }
    }
Пример #3
0
    string GetCompanyHint(bool hasControl)
    {
        var position = Markets.GetPositionOnMarket(Q, company);

        // #{position + 1}
        var clients = Marketing.GetUsers(company);

        var change = Marketing.GetAudienceChange(company, Q);

        var changeFormatted = $"<b>{Format.SignOf(change) + Format.Minify(change)}</b> weekly";

        StringBuilder hint = new StringBuilder($"<size=35>{Visuals.Colorize(company.company.Name, hasControl ? Colors.COLOR_CONTROL : Colors.COLOR_NEUTRAL)}</size>");

        if (hasControl)
        {
            hint.AppendLine(Visuals.Colorize("\n\nYour company", Colors.COLOR_CONTROL));
        }
        else
        {
            hint.AppendLine("\n<b>Goals</b>: " + string.Join("\n", company.companyGoal.Goals.Select(g => g.GetFormattedName())));
        }

        hint.AppendLine($"\n\nUsers: <b>{Format.Minify(clients)}</b>");
        hint.AppendLine($"{Visuals.Colorize(changeFormatted, change >=0)}\n");
        //hint.AppendLine($"Users: <b>{Format.Minify(clients)}</b> {Visuals.Colorize(changeFormatted, change >=0)}\n");
        //hint.AppendLine(RenderStars("Product", techStars));

        //hint.AppendLine();

        // STRENGTH
        //hint.AppendLine(RenderStars("Company strength", productStrength));

        //hint.AppendLine(RenderStars("Budget", budgetStars));

        //hint.AppendLine();
        //hint.AppendLine(RenderStars("Managers", managerStars));
        //hint.AppendLine(RenderStars("Teams", teamStars));


        //hint.AppendLine($"\n<b>{company.team.Teams.Count}</b> teams");
        //hint.AppendLine($"Managers: <b>{Teams.GetTeamAverageStrength(company, Q)}LVL</b>");

        //hint.AppendLine($"\nBudget: <b>{Visuals.Positive(budgetFormatted)}</b>");

        //hint.AppendLine(GetProfitDescription());

        //if (hasControl)
        //    hint.AppendLine(Visuals.Colorize("\nYour company", Colors.COLOR_CONTROL));

        return(hint.ToString());
    }
Пример #4
0
    public void SetEntity(GameEntity c, bool darkImage, bool ShowIncome)
    {
        company         = c;
        EnableDarkTheme = darkImage;

        bool hasControl = Companies.GetControlInCompany(MyCompany, c, Q) > 0;

        Name.text  = c.company.Name; // .Substring(0, 1);
        Name.color = Visuals.GetColorFromString(hasControl ? Colors.COLOR_CONTROL : Colors.COLOR_NEUTRAL);
        SetEmblemColor();

        LinkToProjectView.CompanyId = c.company.Id;
        ShowProductChanges.SetEntity(company);

        var change = Marketing.GetAudienceChange(c, Q);

        var changeBonus = Marketing.GetAudienceChange(company, Q, true);


        CompanyGrowth.text  = Format.SignOf(change) + Format.Minify(change);
        CompanyGrowth.color = Visuals.GetColorPositiveOrNegative(change);
        CompanyGrowth.GetComponent <Hint>().SetHint($"Audience change: <b>{Format.Minify(change)}</b>");

        CompanyHint.SetHint(GetCompanyHint(hasControl));

        var clients = Marketing.GetUsers(company);

        Concept.text = ShowIncome ? Format.Money(Economy.GetIncome(Q, company), true) : Format.Minify(clients); // Products.GetProductLevel(c) + "LVL";

        var position = Markets.GetPositionOnMarket(Q, company);

        PositionOnMarket.text = $"#{position + 1}";

        var marketShare = Companies.GetMarketShareOfCompanyMultipliedByHundred(c, Q);
        var lastMetrics = CompanyStatisticsUtils.GetLastMetrics(company, 1);

        var lastShare   = Random.Range(2f, 30f);
        var shareChange = marketShare - lastShare;

        //Animate(Visuals.Colorize(Format.SignOf((long)shareChange) + shareChange.ToString("0.0%"), shareChange >= 0), AnimationPosition);

        if (Profitability != null)
        {
            //var shareChange = 1;
            //Profitability.text = Visuals.DescribeValueWithText(shareChange, marketShare + "%", marketShare + "%", "");

            Profitability.text = Visuals.Positive(marketShare + "%");
        }
    }
Пример #5
0
    public override void ViewRender()
    {
        Name.text = company.company.Name;

        if (company.hasProduct)
        {
            Users.text  = Format.Minify(Marketing.GetUsers(company));
            Users.color = Visuals.GetColorPositiveOrNegative(Marketing.GetAudienceChange(company, Q) >= 0);
        }
        else
        {
            Users.text = Format.Money(Economy.CostOf(company, Q));
            //Users.color
        }

        Hide(CircularProgressbar);

        Link.CompanyId = company.company.Id;

        EmblemText.text        = Companies.GetShortName(company);
        EmblemBackground.color = Companies.GetCompanyUniqueColor(company.company.Id);
    }
Пример #6
0
    public void SetEntity(GameEntity company, ProductPositioning positioning)
    {
        AudienceLoyalty.text  = "appQuality.ToString()";
        AudienceLoyalty.color = Visuals.GetColorPositiveOrNegative(-1333);

        var change = Marketing.GetAudienceChange(company, Q);

        CompanyValue.text = Format.SignOf(change) + Format.MinifyToInteger(change);
        //CompanyValue.color = Visuals.GetColorPositiveOrNegative(change);

        CompanyLogo.color = Companies.GetCompanyUniqueColor(company.company.Id);

        bool playerControlled = Companies.IsDirectlyRelatedToPlayer(Q, company);

        Border.color = Visuals.GetColorFromString(playerControlled ? Colors.COLOR_CONTROL : Colors.COLOR_CONTROL_NO);

        var income          = Economy.GetProductCompanyMaintenance(company, true);
        var marketingBudget = income.Only("Marketing in").Sum();

        CompanyHint.SetHint(
            $"{RenderName(company)}" +
            $"\n\n" +
            $"Weekly Audience Growth:\n{Visuals.Colorize(Format.Minify(change), Visuals.GetColorPositiveOrNegative(change))}" +
            $"\n" +
            $"Marketing Budget:\n{Format.Money(marketingBudget, true)}"
            );

        CompanyName.text              = company.company.Name;
        CompanyStatsDescription.text  = $"{Format.SignOf(change) + Format.MinifyToInteger(change)} users weekly";
        CompanyStatsDescription.color = Visuals.GetColorPositiveOrNegative(change);

        var clients = Marketing.GetUsers(company);

        CompanyValue.text = Format.MinifyToInteger(clients);

        LinkToProjectView.CompanyId = company.company.Id;
    }
Пример #7
0
    public void Render(GameEntity company)
    {
        Clients.text = Format.Minify(Marketing.GetUsers(company));

        // market share
        bool isPlayerFlagship      = company.company.Id == Flagship.company.Id;
        bool needToShowMarketShare = company.isRelease;

        var share = Companies.GetMarketShareOfCompanyMultipliedByHundred(company, Q);

        MarketShare.GetComponent <Text>().text  = share.ToString("0") + "%";
        MarketShare.GetComponent <Text>().color = Visuals.GetGradientColor(0, 100, share);

        Draw(MarketShare, true);
        Draw(MarketShareLabel, false);

        ResizeFirmLogo(company);

        // product level
        var levelStatus = Products.GetConceptStatus(company, Q);
        var statusColor = Colors.COLOR_WHITE;

        if (levelStatus == ConceptStatus.Leader)
        {
            statusColor = Colors.COLOR_BEST;
        }

        if (levelStatus == ConceptStatus.Outdated)
        {
            statusColor = Colors.COLOR_NEGATIVE;
        }

        var market   = Markets.Get(Q, company);
        var maxLevel = Products.GetMarketDemand(market);

        var outOf = "";

        if (!company.isRelease)
        {
            outOf = $" / {maxLevel}";
        }

        var level = Products.GetProductLevel(company);

        ProductLevel.text  = level + outOf + "LVL";
        ProductLevel.color = Visuals.GetGradientColor(0, maxLevel, level);

        // brand
        Brand.text = (int)company.branding.BrandPower + "";
        Draw(BrandIcon, false); // company.isRelease
        Draw(Brand, false);

        // workers

        var str = "";

        foreach (var t in company.team.Teams)
        {
            str += "* " + t.Name + "\n";
            for (var taskId = 0; taskId < t.Tasks.Count; taskId++)
            {
                var task = t.Tasks[taskId];
                str += "  " + task.GetTaskName() + "\n";
            }
        }
        Teams.text = str;

        var change = Marketing.GetAudienceChange(company, Q);


        Growth.text  = Format.SignOf(change) + Format.Minify(change) + " weekly";
        Growth.color = Visuals.GetColorPositiveOrNegative(change);
    }
Пример #8
0
    public override string RenderHint()
    {
        var bonus = Marketing.GetAudienceChange(Flagship, Q, true);

        return(Visuals.Positive(bonus.ToString())); // + "\n" + churnBonus.ToString(true);
    }
Пример #9
0
    void RenderPositioningChangeBenefit()
    {
        var product        = Flagship;
        var audienceChange = (double)Marketing.GetAudienceChange(product, Q);


        var audienceGrowth = (double)Marketing.GetAudienceGrowth(product, Q);

        // Fake positioning change -------------------
        var positioning = Marketing.GetPositioning(product);

        Marketing.ChangePositioning(product, Positioning.ID);
        var newAudienceGrowth = (double)Marketing.GetAudienceGrowth(product, Q);

        var companies = Companies.GetCompetitionInSegment(product, Q, Positioning.ID, true);

        //var newBestAppQuality = Marketing
        Marketing.ChangePositioning(product, positioning.ID);
        // --------------------------------

        var incomePerUser    = Economy.GetIncomePerUser(product, 0) * C.PERIOD / 30; //  0.05d;
        var newIncomePerUser = incomePerUser;

        bool noCompetitors = companies.Count() == 0;

        if (noCompetitors)
        {
            newAudienceGrowth *= 2;
        }


        var incomeGrowth    = Convert.ToInt64((audienceGrowth * incomePerUser));
        var newIncomeGrowth = Convert.ToInt64(newAudienceGrowth * newIncomePerUser);


        var situation = $"Your income grows by {Format.Money(incomeGrowth)} every week (by getting {Format.Minify(audienceGrowth)} users).";

        ChangeGain.text = situation;

        var incomeChange         = newIncomeGrowth - incomeGrowth;
        var audienceGrowthChange = newAudienceGrowth - audienceGrowth;

        if (newAudienceGrowth != audienceGrowth)
        {
            ChangeGain.text += $"\nAfter positioning change you will ";

            if (newAudienceGrowth > audienceGrowth)
            {
                var incomeGainDescription   = "+" + Format.Money(incomeChange) + " / week";
                var audienceGainDescription = "+" + Format.Minify(audienceGrowthChange) + " users";

                ChangeGain.text += $"<b>GET</b> additional <b>{Visuals.Positive(incomeGainDescription)}</b> (by getting <b>additional</b> {Visuals.Positive(audienceGainDescription)})";
            }

            if (newAudienceGrowth < audienceGrowth)
            {
                var incomeGainDescription   = Format.Money(-incomeChange) + " / week";
                var audienceGainDescription = Format.Minify(-audienceGrowthChange) + " users";

                ChangeGain.text += $"<b>LOSE</b> <b>{Visuals.Negative(incomeGainDescription)}</b> (by losing {Visuals.Negative(audienceGainDescription)})";
            }
        }
        else
        {
            ChangeGain.text += Visuals.Colorize("\nThis is our current positioning", Colors.COLOR_CONTROL);
        }


        // Competition --------------------
        if (noCompetitors)
        {
            ChangeGain.text += "\n" + Visuals.Positive("There are NO competitors, so you will get <b>TWICE</b> more users!");
        }
        // -------------------------
        //if (newAudienceGrowth == audienceGrowth)
        //{
        //    ChangeGain.text += $""
        //}
    }