Production System fixed

This commit is contained in:
Joel 2020-05-07 13:53:07 +02:00
parent da7a7822d4
commit 095ccc0fc6
4 changed files with 42 additions and 34 deletions

View File

@ -75,7 +75,7 @@ class CropTypesHolder
cropTypes[4].Humidity = 57.3f;
cropTypes[4].Moisture = 38.5f;
cropTypes[4].Nitrogen = 23.2f;
cropTypes[4].Potassium = 0;
cropTypes[4].Potassium = 0.1f;
cropTypes[4].Phosphorous = 14.4f;
//Oil Seeds

View File

@ -12,21 +12,23 @@ class Crops
private int Status;
private int originalStatus;
private int cropType = 0;
private int Timer = 1;
private float Timer = 1;
private int UpdateCrop;
private int fullTimer;
private float fullTimer;
private bool housePos = false;
private Vector2 Size;
private CropTypes DataSet;
SoilProperties soilProperties = new SoilProperties();
private float ProductionRate = 0;
public void updateCrop(Vector2 newSize)
{
getProductionRate();
if (Status == 3 && Timer != 1)
{
Timer--;
Timer = Timer - 1 * ProductionRate;
}
Size = newSize;
UpdateCrop++;
@ -35,6 +37,10 @@ class Crops
degradeSoil();
UpdateCrop = 0;
}
if (Timer < 1)
{
Timer = 1;
}
}
@ -43,7 +49,7 @@ class Crops
return soilProperties;
}
public int getCropTimer()
public float getCropTimer()
{
return Timer;
}
@ -187,38 +193,33 @@ class Crops
return housePos;
}
public float getProductionRate()
public void getProductionRate()
{
ProductionRate = 1;
if (DataSet != null)
{
int ProductionRate = 100;
ProductionRate = (int)(ProductionRate * compareToDatset(soilProperties.Temperature, DataSet.Temparature));
ProductionRate = (int)(ProductionRate * compareToDatset(soilProperties.Moisture , DataSet.Moisture));
ProductionRate = (int)(ProductionRate * compareToDatset(soilProperties.Humidity , DataSet.Humidity));
ProductionRate = (int)(ProductionRate * compareToDatset(soilProperties.Phosphorous , DataSet.Phosphorous));
ProductionRate = (int)(ProductionRate * compareToDatset(soilProperties.Potassium , DataSet.Potassium));
ProductionRate = (int)(ProductionRate * compareToDatset(soilProperties.Nitrogen , DataSet.Nitrogen));
ProductionRate = (ProductionRate * compareToDatset(soilProperties.Temperature, DataSet.Temparature));
ProductionRate = (ProductionRate * compareToDatset(soilProperties.Moisture, DataSet.Moisture));
ProductionRate = (ProductionRate * compareToDatset(soilProperties.Humidity, DataSet.Humidity));
ProductionRate = (ProductionRate * compareToDatset(soilProperties.Phosphorous, DataSet.Phosphorous));
ProductionRate = (ProductionRate * compareToDatset(soilProperties.Potassium, DataSet.Potassium));
ProductionRate = (ProductionRate * compareToDatset(soilProperties.Nitrogen, DataSet.Nitrogen));
if (ProductionRate < 0)
{
return 0;
ProductionRate = 0;
}
else
{
return ProductionRate;
}
}
else
{
return 0;
}
}
public float compareToDatset(float i, float j)
{
if (i < j)
if (i > j)
{
return (i / j) * 0.2f;
return (i / j) * 0.15f;
}
else if (i < j / 2)
{
return (i / j) * 2f;
}
else
{
@ -276,13 +277,13 @@ class Crops
spriteBatch.DrawString(Bold, "Humidity: ", new Vector2(240, Size.Y * (tileSize + Spacing) + 202), Color.DarkRed);
spriteBatch.DrawString(Bold, soilProperties.Humidity.ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 202), Color.DarkBlue);
spriteBatch.DrawString(Bold, "Phosphorous: ", new Vector2(240, Size.Y * (tileSize + Spacing) + 222), Color.DarkRed);
spriteBatch.DrawString(Bold, soilProperties.Phosphorous.ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 222), Color.DarkBlue);
spriteBatch.DrawString(Bold, Math.Round(soilProperties.Phosphorous,1).ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 222), Color.DarkBlue);
spriteBatch.DrawString(Bold, "Potassium: ", new Vector2(240, Size.Y * (tileSize + Spacing) + 242), Color.DarkRed);
spriteBatch.DrawString(Bold, soilProperties.Potassium.ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 242), Color.DarkBlue);
spriteBatch.DrawString(Bold, Math.Round(soilProperties.Potassium, 1).ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 242), Color.DarkBlue);
spriteBatch.DrawString(Bold, "Nitrogen: ", new Vector2(240, Size.Y * (tileSize + Spacing) + 262), Color.DarkRed);
spriteBatch.DrawString(Bold, soilProperties.Nitrogen.ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 262), Color.DarkBlue);
spriteBatch.DrawString(Bold, Math.Round(soilProperties.Nitrogen, 1).ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 262), Color.DarkBlue);
spriteBatch.DrawString(Bold, "Production Rate: ", new Vector2(240, Size.Y * (tileSize + Spacing) + 282), Color.DarkRed);
spriteBatch.DrawString(Bold, getProductionRate().ToString(), new Vector2(370, Size.Y * (tileSize + Spacing) + 282), Color.DarkBlue);
spriteBatch.DrawString(Bold, Math.Round((ProductionRate * 100), 1).ToString() + "%", new Vector2(370, Size.Y * (tileSize + Spacing) + 282), Color.DarkBlue);
spriteBatch.End();
}
}

View File

@ -11,6 +11,7 @@ class Farm
private Crops[,] crops;
private Random r;
private CropTypesHolder PresetCrops = new CropTypesHolder();
private int Update;
//initializes the crops
@ -44,14 +45,20 @@ class Farm
public void updateFarm(Vector2 Size)
{
for (int i = 0; i < Size.X; i++)
Update++;
if (Update == 30)
{
for (int j = 0; j < Size.Y; j++)
for (int i = 0; i < Size.X; i++)
{
for (int j = 0; j < Size.Y; j++)
{
crops[i, j].updateCrop(Size);
crops[i, j].updateCrop(Size);
}
}
Update = 0;
}
}
//Changes the properties of the tile when the tractor reaches this tile.

View File

@ -48,8 +48,8 @@ class SoilProperties
Humidity = Temperature * GetRandomNumber(1.9, 2.1);
Moisture = GetRandomNumber(20, 70);
Nitrogen = GetRandomNumber(4 , 55);
Potassium = GetRandomNumber(0, 28);
Phosphorous = GetRandomNumber(0, 60);
Potassium = GetRandomNumber(0.01f, 28);
Phosphorous = GetRandomNumber(0.01f, 60);
}
public float GetRandomNumber(double minimum, double maximum)