From 095ccc0fc6611fbf91a592ef962a9d0c9703b657 Mon Sep 17 00:00:00 2001 From: Joel Date: Thu, 7 May 2020 13:53:07 +0200 Subject: [PATCH] Production System fixed --- Game1/Sources/Crops/CropTypesHolder.cs | 2 +- Game1/Sources/Crops/Crops.cs | 57 +++++++++++++------------- Game1/Sources/Crops/Farm.cs | 13 ++++-- Game1/Sources/Crops/SoilProperties.cs | 4 +- 4 files changed, 42 insertions(+), 34 deletions(-) diff --git a/Game1/Sources/Crops/CropTypesHolder.cs b/Game1/Sources/Crops/CropTypesHolder.cs index 1b09922..f63e48b 100644 --- a/Game1/Sources/Crops/CropTypesHolder.cs +++ b/Game1/Sources/Crops/CropTypesHolder.cs @@ -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 diff --git a/Game1/Sources/Crops/Crops.cs b/Game1/Sources/Crops/Crops.cs index 04e14b2..357864c 100644 --- a/Game1/Sources/Crops/Crops.cs +++ b/Game1/Sources/Crops/Crops.cs @@ -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(); } } diff --git a/Game1/Sources/Crops/Farm.cs b/Game1/Sources/Crops/Farm.cs index 09d2d6d..17997d4 100644 --- a/Game1/Sources/Crops/Farm.cs +++ b/Game1/Sources/Crops/Farm.cs @@ -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. diff --git a/Game1/Sources/Crops/SoilProperties.cs b/Game1/Sources/Crops/SoilProperties.cs index 6b241e7..bf3e3b7 100644 --- a/Game1/Sources/Crops/SoilProperties.cs +++ b/Game1/Sources/Crops/SoilProperties.cs @@ -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)