Пример #1
0
        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));
        }
Пример #2
0
    public void SetSegment(ProductPositioning productPositioning)
    {
        positioning = productPositioning;
        flag        = true;

        var companies = Companies.GetCompetitionInSegment(Flagship, Q, positioning.ID, true);

        SetItems(companies);
    }
Пример #3
0
    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);
    }
Пример #4
0
    private void OnEnable()
    {
        var audiences = Marketing.GetAudienceInfos();

        Positioning = Marketing.GetPositioning(Flagship);
        flag        = true;

        CleanScreen();

        ViewRender();
    }
Пример #5
0
    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);
        }
Пример #7
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;
    }
Пример #8
0
        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);
        }
Пример #9
0
        // positionings

        public static void AddProductPositioning(GameContext gameContext, NicheType nicheType, ProductPositioning positioning)
        {
            var market = Get(gameContext, nicheType);

            market.nicheSegments.Positionings.Add(positioning);
        }
Пример #10
0
    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();
    }