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