This commit is contained in:
Joel 2020-05-25 10:59:17 +02:00
parent c89fee6b05
commit 090a612660
4 changed files with 32 additions and 17 deletions

View File

@ -22,17 +22,17 @@ class Crops
SoilProperties soilProperties = new SoilProperties(); SoilProperties soilProperties = new SoilProperties();
private float ProductionRate; private float ProductionRate;
private float tempRain; private float tempRain;
private float prevpred;
private DayNightCycle Time = new DayNightCycle(); private DayNightCycle Time = new DayNightCycle();
public void updateCrop(Vector2 newSize, float Rain, DayNightCycle nTime) public void updateCrop(Vector2 newSize, DayNightCycle nTime)
{ {
Time = nTime; Time = nTime;
tempRain = Rain;
if (UpdateCrop == 60) if (UpdateCrop == 60)
{ {
degradeSoil(Rain); degradeSoil();
UpdateCrop = 0; UpdateCrop = 0;
} }
@ -204,7 +204,7 @@ class Crops
} }
} }
public void degradeSoil(float Rain) public void degradeSoil()
{ {
if (soilProperties.Nitrogen > 4.0f) if (soilProperties.Nitrogen > 4.0f)
@ -219,13 +219,14 @@ class Crops
{ {
soilProperties.Potassium = soilProperties.Potassium - (soilProperties.PotassiumDegradeRate * (float)Math.Pow(ProductionRate, 2)); soilProperties.Potassium = soilProperties.Potassium - (soilProperties.PotassiumDegradeRate * (float)Math.Pow(ProductionRate, 2));
} }
if (Rain >= 0.45f)
{
soilProperties.Rainfall = soilProperties.Rainfall + Rain * 600;
} }
public void updateRainfall(float Rain)
{
if (Rain >= 0.45f)
{
soilProperties.Rainfall = soilProperties.Rainfall + Rain * 4;
}
} }
public void setPrevRainfall() public void setPrevRainfall()
@ -333,7 +334,7 @@ class Crops
public float getProductionRate(CropTypes Sample) public float getProductionRate(CropTypes Sample)
{ {
float predProd = 1.0f; float predProd = 1.0f;
if (Status > 1) if (Status > 1 && Time.nDay())
{ {
bool correctSeason = false; bool correctSeason = false;
foreach (string i in Sample.Season) foreach (string i in Sample.Season)
@ -353,7 +354,7 @@ class Crops
else else
predProd = 0.20f; predProd = 0.20f;
} }
prevpred = predProd;
ProductionRate = 1; ProductionRate = 1;
float min = 1.0f; float min = 1.0f;
if (DataSet != null) if (DataSet != null)
@ -392,7 +393,7 @@ class Crops
ProductionRate = ProductionRate / 1.5f; ProductionRate = ProductionRate / 1.5f;
} }
ProductionRate = (float)Math.Pow(ProductionRate, 2.5f); ProductionRate = (float)Math.Pow(ProductionRate, 2.5f);
return ProductionRate * predProd; return ProductionRate * prevpred;
} }
public float getProductionRate() public float getProductionRate()

View File

@ -50,7 +50,7 @@ class Farm
crops[i, j] = new Crops(); crops[i, j] = new Crops();
crops[i, j].setStatus(x); crops[i, j].setStatus(x);
crops[i, j].setOriginalStatus(); crops[i, j].setOriginalStatus();
x = r.Next(0, 12); x = r.Next(1, 12);
crops[i, j].setCropType(x, PresetCrops.getPresetCropTypes(x)); crops[i, j].setCropType(x, PresetCrops.getPresetCropTypes(x));
crops[i, j].init(); crops[i, j].init();
@ -131,12 +131,14 @@ class Farm
temp.X = i + ((1999 - (int)Math.Round(RainPosition.X))); temp.X = i + ((1999 - (int)Math.Round(RainPosition.X)));
if (temp.Y >= 1999 - Size.Y - 1) if (temp.Y >= 1999 - Size.Y - 1)
temp.Y = i + ((1999 - (int)Math.Round(RainPosition.Y))); temp.Y = i + ((1999 - (int)Math.Round(RainPosition.Y)));
crops[i, j].updateCrop(Size, RainfallMap[(int)Math.Round(temp.X)][(int)Math.Round(temp.Y)].GetBrightness(), Time); crops[i, j].updateCrop(Size, Time);
crops[i, j].updateRainfall(RainfallMap[(int)Math.Round(temp.X)][(int)Math.Round(temp.Y)].GetBrightness());
} }
} }
Update = 0; Update = 0;
} }
updateRainMapPosition(Size);
if (productionUpdate == 60) if (productionUpdate == 60)
{ {
nextUpdate = updateProgress + updatePerc; nextUpdate = updateProgress + updatePerc;
@ -144,15 +146,19 @@ class Farm
{ {
for (int j = 0; j < Size.Y; j++) for (int j = 0; j < Size.Y; j++)
{ {
if (crops[i, j].getStatus() > 1)
{
int x = getHighestProductionRate(i, j);
crops[i, j].setCropType(x, PresetCrops.getPresetCropTypes(x));
crops[i, j].updateProductionRate(); crops[i, j].updateProductionRate();
} }
} }
}
updateProgress = updateProgress + updatePerc; updateProgress = updateProgress + updatePerc;
if (updateProgress >= 1) if (updateProgress >= 1)
{ {
updateProgress = 0; updateProgress = 0;
} }
updateRainMapPosition(Size);
productionUpdate = 0; productionUpdate = 0;
nextUpdate = 0; nextUpdate = 0;
} }

View File

@ -46,6 +46,7 @@ namespace Game1.Sources.ML_Joel
return PredictionEngineArea.Predict(modelInput).Score; return PredictionEngineArea.Predict(modelInput).Score;
} }
} }
} }

View File

@ -7,25 +7,31 @@ using Microsoft.Xna.Framework;
class DayNightCycle class DayNightCycle
{ {
private bool Time = false; private bool Time = true;
private bool Day = true;
private int nightTime = 0; private int nightTime = 0;
private int dayTime = 0; private int dayTime = 0;
private int lengthOfDay = 20000; private int lengthOfDay = 20000;
private int lengthOfNight = 20000; private int lengthOfNight = 20000;
private int Days = 1; private int Days = 1;
private int DaysOfYear = 0; private int DaysOfYear = 0;
private int speed = 1;
private bool nextDay = true;
public void updateTime(int Speed) public void updateTime(int Speed)
{ {
speed = Speed;
Time = false; Time = false;
for (int i = 0; i < Speed; i++) for (int i = 0; i < Speed; i++)
{ {
if (Time) if (Day)
{ {
dayTime++; dayTime++;
if (dayTime == lengthOfDay) if (dayTime == lengthOfDay)
{ {
Time = false; Time = false;
Day = false;
dayTime = 0; dayTime = 0;
} }
} }
@ -35,6 +41,7 @@ class DayNightCycle
if (nightTime == lengthOfNight) if (nightTime == lengthOfNight)
{ {
Time = true; Time = true;
Day = true;
nightTime = 0; nightTime = 0;
Days++; Days++;
DaysOfYear++; DaysOfYear++;
@ -136,7 +143,7 @@ class DayNightCycle
public int GetTimeOfDayInt() public int GetTimeOfDayInt()
{ {
if (Time) if (Day)
{ {
return (int)(100 * ((float)(dayTime + nightTime) / (lengthOfDay + lengthOfNight))) + 1; return (int)(100 * ((float)(dayTime + nightTime) / (lengthOfDay + lengthOfNight))) + 1;
} }