예제 #1
0
    public void SetEntity(InvestmentProposal invProposal)
    {
        shareholder = Companies.GetInvestorById(Q, invProposal.ShareholderId);
        proposal    = invProposal;

        Render();
    }
예제 #2
0
    bool InvestorIsNotRelatedToPlayer(InvestmentProposal proposal)
    {
        var investor = Investments.GetInvestorById(gameContext, proposal.ShareholderId);

        var isRelatedToPlayer = investor.hasCompany && Companies.IsRelatedToPlayer(gameContext, investor);

        return(!isRelatedToPlayer);
    }
예제 #3
0
    bool IsTargetInvestsInInvestorItself(InvestmentProposal proposal, GameEntity targetCompany)
    {
        var investor = Companies.GetInvestorById(gameContext, proposal.ShareholderId);

        if (!investor.hasCompany || !targetCompany.hasShareholder)
        {
            return(false);
        }

        return(Companies.IsInvestsInCompany(investor, targetCompany.shareholder.Id));
    }
예제 #4
0
    void SendMoney(GameEntity product, GameEntity managingCompany, long sum)
    {
        var proposal = new InvestmentProposal
        {
            Offer         = sum,
            ShareholderId = managingCompany.shareholder.Id,
            InvestorBonus = InvestorBonus.None,
            Valuation     = 0,
            WasAccepted   = false
        };

        Companies.AddInvestmentProposal(gameContext, product.company.Id, proposal);
        Companies.AcceptInvestmentProposal(gameContext, product.company.Id, managingCompany.shareholder.Id);
    }
예제 #5
0
    void SendMoney(GameEntity product, GameEntity managingCompany, long sum)
    {
        var date = ScheduleUtils.GetCurrentDate(gameContext);

        var goal = new InvestmentGoalUnknown(InvestorGoalType.GrowCompanyCost);

        var proposal = new InvestmentProposal
        {
            Investment       = new Investment(sum, 1, goal, date),
            AdditionalShares = 0,

            ShareholderId = managingCompany.shareholder.Id,
            WasAccepted   = false,
        };

        Companies.AddInvestmentProposal(product, proposal);
        Companies.AcceptInvestmentProposal(gameContext, product, managingCompany);
    }
        public static void SpawnProposals(GameContext context, GameEntity company)
        {
            long cost = Economy.CostOf(company, context);
            var  date = ScheduleUtils.GetCurrentDate(context);

            var potentialInvestors = GetPotentialInvestors(context, company);

            foreach (var potentialInvestor in potentialInvestors)
            {
                var modifier = 50 + UnityEngine.Random.Range(0, 100);

                long valuation = cost * modifier / 100;

                var max = GetMaxInvestingAmountForInvestorType(potentialInvestor);

                var ShareholderId = potentialInvestor.shareholder.Id;
                var Duration      = 10; // UnityEngine.Random.Range(5, 10);

                // TODO increase offer on early stages
                // or increase company valuation instead!
                var offer = Math.Min(valuation / 20, max);

                //var goal = new InvestmentGoalUnknown(InvestorGoalType.GrowCompanyCost);
                var goal = company.companyGoal.Goals[0];


                var p = new InvestmentProposal
                {
                    Investment       = new Investment(offer, Duration, goal, date),
                    AdditionalShares = (int)GetNewSharesSize(context, company, offer),

                    ShareholderId = ShareholderId,
                    WasAccepted   = false
                };

                // you cannot invest in yourself!
                if (company.hasShareholder && company.shareholder.Id == ShareholderId)
                {
                    continue;
                }

                AddInvestmentProposal(company, p);
            }
        }
예제 #7
0
        public static void AddInvestmentProposal(GameEntity company, InvestmentProposal proposal)
        {
            var proposals = company.investmentProposals.Proposals;

            // TODO REFACTOR
            var curr = GetInvestmentProposal(company, proposal.ShareholderId);

            if (curr == null)
            {
                proposals.Add(proposal);
            }
            else
            {
                var index = GetInvestmentProposalIndex(company, proposal.ShareholderId);
                proposals[index] = proposal;
            }

            company.ReplaceInvestmentProposals(proposals);
        }
예제 #8
0
        public static void SpawnProposals(GameContext context, int companyId)
        {
            long cost = Economy.GetCompanyCost(context, companyId);
            var  c    = Get(context, companyId);

            var potentialInvestors = GetPotentialInvestors(context, companyId);
            var investorsCount     = potentialInvestors.Length;

            foreach (var potentialInvestor in potentialInvestors)
            {
                var modifier = (50 + UnityEngine.Random.Range(0, 100));

                long valuation     = cost * modifier / 100;
                var  ShareholderId = potentialInvestor.shareholder.Id;

                long offer = valuation / 10;
                var  max   = GetMaxInvestingAmountForInvestorType(potentialInvestor);

                if (offer > max)
                {
                    offer = max;
                }

                var p = new InvestmentProposal
                {
                    Valuation     = valuation,
                    Offer         = valuation / 10,
                    ShareholderId = ShareholderId,
                    InvestorBonus = InvestorBonus.None,
                    WasAccepted   = false
                };

                // you cannot invest in yourself!
                if (c.hasShareholder && c.shareholder.Id == ShareholderId)
                {
                    continue;
                }

                AddInvestmentProposal(context, companyId, p);
            }
        }
예제 #9
0
        internal static void AddInvestmentProposal(GameContext gameContext, int companyId, InvestmentProposal proposal)
        {
            var c = Get(gameContext, companyId);

            var proposals = c.investmentProposals.Proposals;

            // TODO REFACTOR
            var curr = GetInvestmentProposal(gameContext, companyId, proposal.ShareholderId);

            if (curr == null)
            {
                proposals.Add(proposal);
            }
            else
            {
                var index = GetInvestmentProposalIndex(gameContext, companyId, proposal.ShareholderId);
                proposals[index] = proposal;
            }

            c.ReplaceInvestmentProposals(proposals);
        }