示例#1
0
        public static void TurnProductToPlayerFlagship(GameEntity company, GameContext Q, NicheType nicheType, GameEntity parentCompany)
        {
            company.isFlagship = true;
            AttachToPlayer(company);
            company.AddChannelExploration(new Dictionary <int, int>(), new List <int>(), 1);

            // give bad positioning initially
            var infos = Marketing.GetAudienceInfos();

            Marketing.AddClients(company, -50);

            var positionings      = Markets.GetNichePositionings(nicheType, Q);
            var positioningWorths = positionings.OrderBy(Markets.GetPositioningValue);

            // TODO POSITIONING
            var rand           = Random.Range(0, 2);
            var newPositioning = rand < 1 ? 0 : 3; //  positioningWorths.ToArray()[rand].ID;

            // 0 - teens, 3 - old people

            Marketing.ChangePositioning(company, Q, newPositioning);

            Marketing.AddClients(company, 50);

            // give good salary to CEO, so he will not leave company
            var CEO        = Humans.Get(Q, GetCEOId(company));
            var GroupCeoID = GetCEOId(parentCompany);

            CEO.AddPseudoHuman(GroupCeoID);

            // var salary = Teams.GetSalaryPerRating(CEO);
            // Teams.SetJobOffer(CEO, company, new JobOffer(salary), 0, Q);
        }
        public static void WrapProductWithAdditionalData(GameEntity product, GameContext gameContext)
        {
            if (!product.hasNicheSegments)
            {
                product.AddNicheSegments(Markets.GetNichePositionings(product.product.Niche, gameContext));
            }

            if (!product.hasNicheBaseProfile)
            {
                product.AddNicheBaseProfile(Markets.Get(gameContext, product).nicheBaseProfile.Profile);
            }

            Markets.CopyChannelInfosToProductCompany(product, gameContext);
        }
示例#3
0
        public static GameEntity CreateProduct(GameContext context, GameEntity company, NicheType niche)
        {
            company.AddProduct(niche, 0);

            // positioning
            int positionings = Markets.GetNichePositionings(niche, context).Count;

            company.AddProductPositioning(Random.Range(0, positionings));

            // development
            company.AddFeatures(new Dictionary <ProductFeature, int> {
                [ProductFeature.Acquisition] = 0, [ProductFeature.Monetisation] = 0, [ProductFeature.Retention] = 0
            }, 0);
            company.AddExpertise(Random.Range(1, 4));

            company.AddFinancing(new Dictionary <Financing, int> {
                [Financing.Development] = 0, [Financing.Marketing] = 0, [Financing.Team] = 0
            });

            // clients
            var flow        = Marketing.GetBaseClientsForNewCompanies(context, niche);
            var baseClients = Random.Range(0.15f, 0.35f) * flow;

            company.AddMarketing((long)baseClients);

            // sphere of interest
            var industry = Markets.GetIndustry(niche, context);

            AddFocusNiche(niche, company, context);
            AddFocusIndustry(industry, company);


            Investments.SetCompanyGoal(context, company, InvestorGoal.Operationing);

            return(company);
        }