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); } } }
public override bool IsInteractable() { var company = Companies.Get(Q, CompanyId); var cost = Marketing.GetBrandingCost(company, Q); return(!HasActiveTimer() && Companies.IsEnoughResources(MyCompany, cost)); }
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); }
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); } }
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)}"); }