コード例 #1
0
    void ManageMarketing(GameEntity product)
    {
        var brandingCost  = Marketing.GetBrandingCost(product, gameContext);
        var targetingCost = Marketing.GetTargetingCost(product, gameContext);



        if (product.isRelease)
        {
            if (Companies.IsEnoughResources(product, brandingCost))
            {
                Marketing.StartBrandingCampaign(product, gameContext);
            }

            if (Companies.IsEnoughResources(product, targetingCost))
            {
                Marketing.StartTargetingCampaign(product, gameContext);
            }
        }
        else
        {
            if (Companies.IsReleaseableApp(product, gameContext))
            {
                Marketing.ReleaseApp(gameContext, product);
            }
            else
            {
                Marketing.StartTestCampaign(product, gameContext);
            }
        }
    }
コード例 #2
0
    public override bool IsInteractable()
    {
        var company = Companies.Get(Q, CompanyId);

        var cost = Marketing.GetBrandingCost(company, Q);

        return(!HasActiveTimer() && Companies.IsEnoughResources(MyCompany, cost));
    }
コード例 #3
0
    public override void Execute()
    {
        var company = Companies.Get(Q, CompanyId);

        var cost = Marketing.GetBrandingCost(company, Q);

        Companies.SupportCompany(MyCompany, company, cost);
        Marketing.StartBrandingCampaign(company, Q);
    }
コード例 #4
0
    void PayAIDividends(GameEntity e)
    {
        long marketingBudget = 0;

        if (e.hasProduct)
        {
            marketingBudget = Marketing.GetBrandingCost(e, gameContext) + Marketing.GetTargetingCost(e, gameContext);
        }


        var dividends = Economy.BalanceOf(e) - Economy.GetCompanyMaintenance(gameContext, e) - marketingBudget;

        if (dividends > 0)
        {
            Companies.PayDividends(gameContext, e, dividends);
        }
    }
コード例 #5
0
    void Render()
    {
        if (company == null)
        {
            return;
        }

        var id = company.company.Id;

        var clients      = Marketing.GetClients(company);
        var churn        = Marketing.GetChurnRate(Q, company);
        var churnClients = Marketing.GetChurnClients(Q, id);

        var profit = Economy.GetProfit(Q, id);

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

        var nameColor   = hasControl ? Colors.COLOR_CONTROL : Colors.COLOR_NEUTRAL;
        var profitColor = profit >= 0 ? Colors.COLOR_POSITIVE : Colors.COLOR_NEGATIVE;

        var positionOnMarket = Markets.GetPositionOnMarket(Q, company) + 1;

        var brand       = (int)company.branding.BrandPower;
        var brandChange = Marketing.GetBrandChange(company, Q);

        var effeciency = Products.GetTeamEffeciency(Q, company);



        SetEmblemColor();

        Clients.text = Format.Minify(clients);

        CompanyHint.SetHint(GetCompanyHint());

        Expertise.text = $"Effeciency: {effeciency}%";

        Name.text  = company.company.Name;
        Name.color = Visuals.GetColorFromString(nameColor);

        Profitability.text  = Format.Money(profit);
        Profitability.color = Visuals.GetColorFromString(profitColor);

        PositionOnMarket.text = $"#{positionOnMarket}";

        Brand.text  = $"{brand} ({brandChange.Sum()})";
        Brand.color = Visuals.GetGradientColor(0, 100, brand);

        UpdateIfNecessary(BrandIcon, company.isRelease);
        UpdateIfNecessary(Brand, company.isRelease);


        // buttons

        // set
        LinkToProjectView.CompanyId = id;
        HireWorker.companyId        = id;
        ReleaseApp.SetCompanyId(id);

        TestCampaignButton.SetCompanyId(id);
        StartRegularAdCampaign.SetCompanyId(id);
        StartBrandingCampaign.SetCompanyId(id);
        UpgradeChurn.SetCompanyId(id);
        UpgradeMonetisation.SetCompanyId(id);
        LinkToHiringScreen.SetCompanyId(id);


        var max     = Products.GetNecessaryAmountOfWorkers(company, Q);
        var workers = Teams.GetAmountOfWorkers(company, Q);

        var canHireTopManagers = false && workers > 5;

        var targetingCost = Marketing.GetTargetingCost(company, Q);
        var brandingCost  = Marketing.GetBrandingCost(company, Q);


        // enable / disable them
        UpdateIfNecessary(ReleaseApp, Companies.IsReleaseableApp(company, Q));

        UpdateIfNecessary(TestCampaignButton, !company.isRelease);
        UpdateIfNecessary(StartRegularAdCampaign, company.isRelease);
        UpdateIfNecessary(StartBrandingCampaign, company.isRelease);

        UpdateIfNecessary(LinkToHiringScreen, canHireTopManagers);
        UpdateIfNecessary(ManagementLabel, canHireTopManagers);


        // render
        HireWorker.GetComponentInChildren <TextMeshProUGUI>().text = $"Hire Worker ({workers}/{max})";
        HireWorker.GetComponentInChildren <Button>().interactable  = workers < max;
        HireWorker.GetComponentInChildren <Hint>().SetHint(workers < max ?
                                                           "Hiring workers will increase development speed"
            :
                                                           Visuals.Negative("You reached max limit of workers") + "\n\nTo increase this limit, hire TOP managers"
                                                           );

        StartRegularAdCampaign.GetComponent <Hint>().SetHint($"Cost: {Format.Money(targetingCost)}");
        StartBrandingCampaign.GetComponent <Hint>().SetHint($"Cost: {Format.Money(brandingCost)}");
    }