public bool DoTradeAction(Goods value, bool isHasPrivilage) { var param = new TraderParameters(); var traderBuildings = _playerStatus.Board.Buildings.OfType<BuildingBase<TraderParameters>>() .Where(x => x.IsActive) .ToList(); traderBuildings.ForEach(x => x.DoAction(ref param)); if (_mainBoardController.Status.Market.CanSellGood(value, param.PermissionToSellTheSame)) { var money = _mainBoardController.Status.Market.SellGood(value, traderBuildings); if (money.HasValue) { _playerStatus.Warehouse.RemoveGoods(new[] {value}); _mainBoardController.Status.Doubloons -= money.Value; _playerStatus.ReceiveDoubloons(money.Value); return true; } } return false; }
public int? SimulateSellGoods(Goods good, IEnumerable<BuildingBase<TraderParameters>> buildings) { var traderParameters = new TraderParameters(); foreach (var building in buildings) { building.DoAction(ref traderParameters); } if (CanSellGood(good, traderParameters.PermissionToSellTheSame)) { return GetDefaultGoodPrice(good) + traderParameters.AdditionalPrice; } return null; }