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; }
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!"); } }
public void AddStock(ITradeItem tradeItem, double quantity) { TradableStockItems.First(item => item.TradeItem.GetType() == tradeItem.GetType()).AddStock(quantity); }
public Storage(ITradeItem tradeItem) { StorageLevel = 1; TradeItem = tradeItem; }