コード例 #1
0
ファイル: BuyOrder.cs プロジェクト: andy-uq/Echo
        public override Settlement List(MarketPlace marketPlace)
        {
            Ensure.That(marketPlace).IsNotNull();
            Ensure.That(marketPlace.StarCluster.Equals(Item.Location.GetStarCluster()));

            var settlement = new Settlement();

            foreach (var sellOrder in marketPlace.SellOrders.For(Item).OrderBy(x => x.PricePerUnit))
            {
                if (OutOfRange(sellOrder) || sellOrder.OutOfRange(this))
                    continue;

                if (sellOrder.PricePerUnit > PricePerUnit)
                    continue;

                if (sellOrder.BlockSize > Quantity)
                    continue;

                if (BuyFrom(sellOrder, settlement))
                    return marketPlace.Settle(settlement);
            }

            marketPlace.Add(this);
            return marketPlace.Settle(settlement);
        }