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);
         }
     }
 }