Ejemplo n.º 1
0
 public int Consume(Resources yourResources, out double actualFarmers)
 {
     if (Number > 0)
     {
         List <double> yourResourcesList        = yourResources.BuildList();
         List <double> satisfactionList         = Satisfaction.BuildList();
         List <double> neededResourcesList      = NeededResources.BuildList();
         List <double> CoinsFromResourcesList   = CoinsFromResources.BuildList();
         List <double> FarmersFromResourcesList = FarmersFromResources.BuildList();
         int           i     = 0;
         double        coins = 0;
         goalFarmers = 5 * Number;
         //konsumpcja i obliczanie satysfakcji dla każdego surowca
         foreach (double neededResource in neededResourcesList)
         {
             if (neededResource > 0)
             {
                 satisfactionList[i] = yourResourcesList[i] / (neededResource * Number);
                 if (satisfactionList[i] > 1)
                 {
                     satisfactionList[i] = 1;
                 }
                 yourResourcesList[i] -= neededResource * Number;
                 if (yourResourcesList[i] < 0)
                 {
                     yourResourcesList[i] = 0;
                 }
                 coins               += CoinsFromResourcesList[i] * satisfactionList[i] * Number;
                 goalFarmers         += FarmersFromResourcesList[i] * satisfactionList[i] * Number;
                 satisfactionList[i] *= 100;
             }
             i++;
         }
         // zmiana ilości mieszkańców
         if (goalFarmers > ActualFarmers)
         {
             ActualFarmers += Number;
             if (goalFarmers < ActualFarmers)
             {
                 ActualFarmers = goalFarmers;
             }
         }
         if (goalFarmers < ActualFarmers)
         {
             ActualFarmers -= Number;
             if (goalFarmers > ActualFarmers)
             {
                 ActualFarmers = goalFarmers;
             }
         }
         yourResources.UnbuildList(yourResourcesList);
         Satisfaction.UnbuildList(satisfactionList);
         actualFarmers = ActualFarmers;
         return((int)Math.Floor(coins));
     }
     actualFarmers = ActualFarmers;
     return(0);
 }
Ejemplo n.º 2
0
 public void Product(Resources yourResources, ref long coins, double farmersProductivity)
 {
     if (Number > 0)
     {
         List <double> yourResourcesList    = yourResources.BuildList();
         List <double> productResourcesList = ProductResources.BuildList();
         List <double> neededResourcesList  = NeededResources.BuildList();
         if (farmersProductivity > 1)
         {
             farmersProductivity = 1;
         }
         double productivity = farmersProductivity * Number * productResourcesList.Max();   // maksymalna możliwa produkcja
         double productivityTmp;
         int    i = 0;
         // obliczamy na jaką produktywnośc starczy nam surowców i na ile mamy miejsca
         foreach (double resource in neededResourcesList)
         {
             if (resource > 0)
             {
                 productivityTmp = yourResourcesList[i];
                 if (productivityTmp < productivity)
                 {
                     productivity = productivityTmp;
                 }
             }
             if (productResourcesList[i] > 0)
             {
                 productivityTmp = 200 - yourResourcesList[i];
                 if (productivityTmp < productivity)
                 {
                     productivity = productivityTmp;
                 }
             }
             i++;
         }
         //mnozymy produkowane zasoby i dodajemy do aktualnych
         Resources resultResources = Resources.MultResources(ProductResources, productivity / productResourcesList.Max());
         yourResources.AddResources(resultResources);
         //mnozymy potrzebne zasoby i odejmujemy od aktualnych
         resultResources = Resources.MultResources(NeededResources, productivity);
         yourResources.SubResources(resultResources);
         coins -= WorkCost * Number / 4;
     }
 }