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()); }
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; } }
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()); }
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 + "%"); } }
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); }
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; }
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); }
public override string RenderHint() { var bonus = Marketing.GetAudienceChange(Flagship, Q, true); return(Visuals.Positive(bonus.ToString())); // + "\n" + churnBonus.ToString(true); }
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 += $"" //} }