public ProductionRequires(ITradeItem itemRequired, int quantityRequired)
        {
            if (itemRequired == null)
            {
                throw new ArgumentNullException(nameof(itemRequired));
            }

            if (quantityRequired <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(quantityRequired));
            }

            ItemRequired     = itemRequired;
            QuantityRequired = quantityRequired;
        }
Beispiel #2
0
        public static unsafe IStatement OpponentStatementFromCommand(AEmpire empire, Nation opponent, int command, int *rawStream)
        {
            switch (command)
            {
            case Protocol.scDipNotice: return(new Notice());

            case Protocol.scDipAccept: return(new AcceptTrade());

            case Protocol.scDipCancelTreaty: return(new CancelTreaty());

            case Protocol.scDipOffer:
            {
                if (rawStream[0] + rawStream[1] == 0)
                {
                    return(new SuggestEnd());
                }
                else
                {
                    ITradeItem[] offers = new ITradeItem[rawStream[0]];
                    if (rawStream[0] > 0)
                    {
                        for (int i = 0; i < rawStream[0]; i++)
                        {
                            offers[i] = TradeItemFromCode(empire, opponent, rawStream[2 + i]);
                        }
                    }
                    ITradeItem[] wants = new ITradeItem[rawStream[1]];
                    if (rawStream[1] > 0)
                    {
                        for (int i = 0; i < rawStream[1]; i++)
                        {
                            wants[i] = TradeItemFromCode(empire, empire.Us, rawStream[2 + rawStream[0] + i]);
                        }
                    }
                    return(new SuggestTrade(offers, wants));
                }
            }

            case Protocol.scDipBreak: return(new Break());

            default: throw new Exception("Error in StatementFactory: Not a negotiation!");
            }
        }
Beispiel #3
0
 public void AddStock(ITradeItem tradeItem, double quantity)
 {
     TradableStockItems.First(item => item.TradeItem.GetType() == tradeItem.GetType()).AddStock(quantity);
 }
Beispiel #4
0
 public Storage(ITradeItem tradeItem)
 {
     StorageLevel = 1;
     TradeItem    = tradeItem;
 }