public static long GetPositioningWorth(GameEntity product, ProductPositioning productPositioning) { var audiences = GetAudienceInfos(); return(productPositioning.Loyalties .Select((l, i) => new { i, cost = GetAudienceWorth(audiences[i]), isLoyal = l >= 0 }) .Sum(f => f.isLoyal ? f.cost : 0)); }
public void SetSegment(ProductPositioning productPositioning) { positioning = productPositioning; flag = true; var companies = Companies.GetCompetitionInSegment(Flagship, Q, positioning.ID, true); SetItems(companies); }
public void SetAudiences(ProductPositioning positioning) { var allAudiences = Marketing.GetAudienceInfos(); var audiences = positioning.Loyalties .Select((l, i) => new { l, i }) .Where(pp => pp.l >= 0) .Select(pp => allAudiences[pp.i]); SetItems(audiences); }
private void OnEnable() { var audiences = Marketing.GetAudienceInfos(); Positioning = Marketing.GetPositioning(Flagship); flag = true; CleanScreen(); ViewRender(); }
public void SetAnotherPositioning(ProductPositioning positioning) { Positioning = positioning; flag = true; //ViewRender(); CompaniesFocusingSpecificSegmentListView.SetSegment(Positioning); Show(COMPETITION_PANEL); Draw(ChangePositioningButton, Positioning.ID != Flagship.productPositioning.Positioning); RenderSegmentDescription(Flagship); }
public static void AddPositioning(ref List <ProductPositioning> positionings, string name, List <int> loyalties) { var p = new ProductPositioning() { name = name, Loyalties = loyalties, isCompetitive = false, marketShare = 100, priceModifier = 1f, ID = positionings.Count }; positionings.Add(p); }
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 static long GetPositioningValue(ProductPositioning p) { var infos = Marketing.GetAudienceInfos(); var worth = 0L; int segmentId = 0; foreach (var l in p.Loyalties) { if (l > 0) { var segment = infos[segmentId]; var incomePerUser = 1.5f; // Economy.GetIncomePerUser(gameContext, playerFlagship, segmentId) var segmentWorth = (long)(segment.Size * incomePerUser); worth += segmentWorth * (100 + l * 10) / 100; } segmentId++; } return(worth); }
// positionings public static void AddProductPositioning(GameContext gameContext, NicheType nicheType, ProductPositioning positioning) { var market = Get(gameContext, nicheType); market.nicheSegments.Positionings.Add(positioning); }
public void SetEntity(ProductPositioning positioning) { var company = Flagship; PositioningID = positioning.ID; var positionings = Marketing.GetNichePositionings(company); SegmentId = Marketing.GetCoreAudienceId(company); var infos = Marketing.GetAudienceInfos(); var info = infos[SegmentId]; var actualPositioning = Marketing.GetPositioning(Flagship); var selectedPositioning = FindObjectOfType <PositioningManagerView>().Positioning; BorderImage.color = Visuals.GetColorFromString(selectedPositioning.ID == positioning.ID ? Colors.COLOR_CONTROL : Colors.COLOR_NEUTRAL); var worth = Marketing.GetPositioningWorth(company, positioning); bool isOurPositioning = company.productPositioning.Positioning == positioning.ID; var positioningColor = isOurPositioning ? Colors.COLOR_CONTROL : Colors.COLOR_WHITE; Title.text = $"{positioning.name}\nWorth <size=40><b>{Format.Money(worth, true)}</b></size>"; Title.color = Visuals.GetColorFromString(positioningColor); bool ourPositioning = positioning.ID == actualPositioning.ID; if (ourPositioning) { Title.text += $"\n{Visuals.Colorize("(Our positioning)", Colors.COLOR_CONTROL)}"; } //Title.text = Visuals.Colorize($"{positioning.name}\nWorth <size=40><b>{Format.MinifyMoney(worth)}</b></size>", positioningColor); //Title.text = Visuals.Colorize($"{positioning.name} \n<b>{Format.MinifyMoney(worth)}</b>", positioningColor); var competition = Companies.GetCompetitionInSegment(Flagship, Q, positioning.ID); if (!ourPositioning) { var competitors = competition.Count(); var comeptitionColor = Visuals.GetGradientColor(0, 5, competitors, true); if (competitors == 0) { Title.text += "\n" + Visuals.Positive("NO COMPETITION"); } else { Title.text += "\n" + Visuals.Colorize($"{competitors} companies", comeptitionColor); } } Icon.texture = Resources.Load <Texture2D>($"Audiences/{info.Icon}"); if (SegmentAudiencesListView != null) { SegmentAudiencesListView.SetAudiences(positioning); } //AudienceListView.SetAudiences(positioning.Loyalties.Select((l, i) => new { l, i, asda = infos[i] }).Where(pp => ) //bool isTargetAudience = Marketing.IsTargetAudience(company, segmentId); //var audienceColor = Visuals.GetColorFromString(isTargetAudience ? Colors.COLOR_GOLD : Colors.COLOR_WHITE); //if (isTargetAudience) // PanelImage.color = audienceColor; HideChanges(); }