public void AddNeighbour(Region region) { var trade = new TradeRegion(region); trade.Init(); TradeRegions.Add(trade); }
public double GetBestCost(ResourceTypes.ResourceType resourceType, out TradeRegion bestRegion, out TradeRegion worstRegion) { double bestCost = 0; double worstCost = double.MaxValue; bestRegion = null; worstRegion = null; double regionalTransportCost = Ownregion.GetTransportCost(); foreach (TradeRegion tradeRegion in TradeRegions) { double externalTransportCost = tradeRegion.GetTransportCost(); double totalTransportCost = (regionalTransportCost + externalTransportCost) / 2; double resourceCost = tradeRegion.GetResorceCost(resourceType); double salesCost = resourceCost - totalTransportCost; if (salesCost > bestCost) { bestCost = salesCost; bestRegion = tradeRegion; } if (tradeRegion.GetTransportAmount(resourceType) > 0 && salesCost < worstCost) { worstCost = salesCost; worstRegion = tradeRegion; } } return(bestCost); }
public void IncreaseTradeWith(ResourceTypes.ResourceType resourceType, TradeRegion destination, TradeRegion worstTradeRegion) { foreach (TradeRegion tradeRegion in TradeRegions) { if (destination.ID == tradeRegion.ID) { if (worstTradeRegion == null || worstTradeRegion.ID == destination.ID) { tradeRegion.MaxTrade(resourceType); continue; } tradeRegion.IncreaseTrade(resourceType); } else if (worstTradeRegion != null && worstTradeRegion.ID == tradeRegion.ID) { worstTradeRegion.DecreseTrade(resourceType); } } }