diff --git a/Game1/Content/Cloud.png b/Game1/Content/Cloud.png new file mode 100644 index 0000000..31c95db Binary files /dev/null and b/Game1/Content/Cloud.png differ diff --git a/Game1/Content/Clouds.png b/Game1/Content/Clouds.png new file mode 100644 index 0000000..917faa5 Binary files /dev/null and b/Game1/Content/Clouds.png differ diff --git a/Game1/Content/Content.mgcb b/Game1/Content/Content.mgcb index 4ebf9c6..d4166f8 100644 --- a/Game1/Content/Content.mgcb +++ b/Game1/Content/Content.mgcb @@ -61,6 +61,30 @@ /processorParam:TextureFormat=Color /build:CarronIcon.png;CarrotIcon.png +#begin Cloud.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:Cloud.png + +#begin Clouds.png +/importer:TextureImporter +/processor:TextureProcessor +/processorParam:ColorKeyColor=255,0,255,255 +/processorParam:ColorKeyEnabled=True +/processorParam:GenerateMipmaps=False +/processorParam:PremultiplyAlpha=True +/processorParam:ResizeToPowerOfTwo=False +/processorParam:MakeSquare=False +/processorParam:TextureFormat=Color +/build:Clouds.png + #begin CottonIcon.png /importer:TextureImporter /processor:TextureProcessor @@ -260,18 +284,6 @@ /processorParam:TextureFormat=Color /build:rain.png -#begin rain.png -/importer:TextureImporter -/processor:TextureProcessor -/processorParam:ColorKeyColor=255,0,255,255 -/processorParam:ColorKeyEnabled=True -/processorParam:GenerateMipmaps=False -/processorParam:PremultiplyAlpha=True -/processorParam:ResizeToPowerOfTwo=False -/processorParam:MakeSquare=False -/processorParam:TextureFormat=Color -/build:rain.png - #begin Right.png /importer:TextureImporter /processor:TextureProcessor diff --git a/Game1/Game1.cs b/Game1/Game1.cs index a4f92a4..5779e7c 100644 --- a/Game1/Game1.cs +++ b/Game1/Game1.cs @@ -113,7 +113,7 @@ namespace Game1 tileConnected[2] = Content.Load("Right"); tileConnected[3] = Content.Load("Bottom"); - Rain = Content.Load("rain"); + Rain = Content.Load("Clouds"); @@ -178,7 +178,6 @@ namespace Game1 GraphicsDevice.Clear(Color.FromNonPremultiplied(255,255,255,140)); spriteBatch.Begin(); - DrawTiles(); spriteBatch.Draw(markers, new Rectangle((int)tractorUnit.getTargetPosition().X / input.getSpacingTile() * (input.getTileSize() + input.getSpacing()) + input.getTileSize() / 4, (int)tractorUnit.getTargetPosition().Y / input.getSpacingTile() * (input.getTileSize() + input.getSpacing()) + input.getTileSize() / 4, input.getTileSize()/2, input.getTileSize()/2), Color.White); @@ -190,9 +189,8 @@ namespace Game1 - spriteBatch.Draw(house, houseUnit.GetRectangle(), Time.GetTimeOfDay()); + spriteBatch.Draw(markers, new Rectangle((int)tractorUnit.getPath().getFinalDest().getCords().X * (input.getSpacingTile()) + Convert.ToInt32(input.getTileSize() / 6), (int)tractorUnit.getPath().getFinalDest().getCords().Y * (input.getSpacingTile()) + Convert.ToInt32(input.getTileSize() / 6), Convert.ToInt32(input.getTileSize() / 1.5), Convert.ToInt32(input.getTileSize() / 1.5)), Color.White); //Draws the current target of the tractor - spriteBatch.Draw(tractor, new Vector2((int)tractorUnit.getPos().X + input.getTileSize() / 2, (int)tractorUnit.getPos().Y + input.getTileSize() / 2), new Rectangle(0, 0, input.getTileSize(), input.getTileSize()), Time.GetTimeOfDay(), tractorUnit.getRotation(), new Vector2(input.getTileSize() / 2, input.getTileSize() / 2), 1.0f, SpriteEffects.None, 1); @@ -224,7 +222,7 @@ namespace Game1 spriteBatch.DrawString(Bold, "Tile Size:" + input.getTileSize().ToString() + "pix", new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 222), Color.DarkBlue); //Draws the tile size spriteBatch.DrawString(Bold, "Matrix Size: " + input.getSize().X.ToString() + " X " + input.getSize().Y.ToString(), new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 242), Color.DarkBlue); spriteBatch.DrawString(Bold, "House Position: " + houseUnit.getVector() / input.getSpacingTile(), new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 262), Color.DarkBlue); - + tractorUnit.getFarm().drawWeatherInformation(spriteBatch, Bold, input); spriteBatch.DrawString(Bold, "Total Weight: ", new Vector2(700, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 182), Color.DarkRed); spriteBatch.DrawString(Bold, "(" + tractorUnit.getInventory().getWeight() + "/" + tractorUnit.getInventory().getMaxWeight() + ")", new Vector2(800, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 182), Color.DarkBlue); @@ -312,7 +310,7 @@ namespace Game1 } } - cloudFrame++; + /*cloudFrame++; if (cloudFrame > cloudAnimationSpeed) { cloudSprite++; @@ -321,14 +319,18 @@ namespace Game1 cloudSprite = 0; } cloudFrame = 0; - } + }*/ + spriteBatch.Draw(house, houseUnit.GetRectangle(), Time.GetTimeOfDay()); + spriteBatch.Draw(tractor, new Vector2((int)tractorUnit.getPos().X + input.getTileSize() / 2, (int)tractorUnit.getPos().Y + input.getTileSize() / 2), new Rectangle(0, 0, input.getTileSize(), input.getTileSize()), Time.GetTimeOfDay(), tractorUnit.getRotation(), new Vector2(input.getTileSize() / 2, input.getTileSize() / 2), 1.0f, SpriteEffects.None, 1); + for (int i = -1; i < input.getSize().X + 1; i++) //Draw the tiles { for (int j = -1; j < input.getSize().Y + 1; j++) { - spriteBatch.Draw(Rain, tractorUnit.getFarm().getRainPosition(input.getTileSize(), i, j), new Rectangle(0, cloudSprite * 96, input.getTileSize(), input.getTileSize()), tractorUnit.getFarm().getRainAmount(i, j)); + spriteBatch.Draw(Rain, tractorUnit.getFarm().getRainPosition(input.getTileSize(), i, j), tractorUnit.getFarm().getDestinationRectangle(i, j), tractorUnit.getFarm().getRainAmount(i, j)); } } + } public void InspectTile() diff --git a/Game1/Game1.csproj b/Game1/Game1.csproj index 1783062..5a8607f 100644 --- a/Game1/Game1.csproj +++ b/Game1/Game1.csproj @@ -90,9 +90,6 @@ - - - @@ -169,6 +166,9 @@ 2.3.1 + + 3.6.0 + 1.4.0 diff --git a/Game1/Sources/Crops/Farm.cs b/Game1/Sources/Crops/Farm.cs index bb2cc42..8ddd606 100644 --- a/Game1/Sources/Crops/Farm.cs +++ b/Game1/Sources/Crops/Farm.cs @@ -74,14 +74,23 @@ class Farm init(Size, housepos); RainPosition.X = r.Next(0, 1900); RainPosition.Y = r.Next(0, 1950); - WindSpeed.X = r.Next(-1, 1); - WindSpeed.Y = r.Next(-1, 1); - RainfallMap = PerlinNoise.LoadImage("C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/Rainfall.png"); + RainfallMap = PerlinNoise.LoadImage("C:\\Users\\Joel\\source\\repos\\Oskars Repo\\Game1\\Content\\Rainfall.png"); } public Rectangle getRainPosition(int TileSize, int x, int y) { - return new Rectangle((int)(-TileSize * (RainPosition.X - Math.Truncate(RainPosition.X))) + TileSize * x, (int)(-TileSize * (RainPosition.Y - Math.Truncate(RainPosition.Y))) + TileSize * y, TileSize, TileSize); + return new Rectangle(x * TileSize, y * TileSize, TileSize, TileSize); + } + + public Rectangle getDestinationRectangle(int x, int y) + { + return new Rectangle(x + (int)Math.Round(RainPosition.X), y + (int)Math.Round(RainPosition.Y), 1, 1); + //return new Rectangle(0, 0, 112, 112); + } + + public void drawWeatherInformation(SpriteBatch spriteBatch, SpriteFont Bold, Input input) + { + spriteBatch.DrawString(Bold, "Wind Speed: X:" + WindSpeed.X + "Y" + WindSpeed.Y, new Vector2(10, input.getSize().Y * (input.getTileSize() + input.getSpacing()) + 282), Color.DarkBlue); } public void updateFarm(Vector2 Size, int nDay) @@ -138,8 +147,8 @@ class Farm private void updateRainMapPosition() { float x, y; - x = WindSpeed.X + GetRandomNumber(-0.02, 0.02); - y = WindSpeed.Y + GetRandomNumber(-0.02, 0.02); + x = WindSpeed.X + GetRandomNumber(-1f, 1f) / 1000; + y = WindSpeed.Y + GetRandomNumber(-1f, 1f) / 1000; if (x < 0.02f && x > -0.02f) { @@ -227,14 +236,7 @@ class Farm public Color getRainAmount(int x, int y) { - if (RainfallMap[x + (int)Math.Round(RainPosition.X)][y + (int)Math.Round(RainPosition.Y)].GetBrightness() < 0.60f) - { - return Color.FromNonPremultiplied(255, 255, 255, 0); - } - else - { - return Color.FromNonPremultiplied(255, 255, 255, (int)(300 * RainfallMap[x + (int)Math.Round(RainPosition.X)][y + (int)Math.Round(RainPosition.Y)].GetBrightness())); - } + return Color.FromNonPremultiplied(255, 255, 255, (int)(255 * RainfallMap[x + (int)Math.Round(RainPosition.X)][y + (int)Math.Round(RainPosition.Y)].GetBrightness())); } diff --git a/Game1/Sources/ML/MLModel.cs b/Game1/Sources/ML/MLModel.cs index 0c9ef5a..041ec50 100644 --- a/Game1/Sources/ML/MLModel.cs +++ b/Game1/Sources/ML/MLModel.cs @@ -11,20 +11,12 @@ using Microsoft.ML.Trainers.LightGbm; class MLModel { private static MLContext mlContext = new MLContext(seed: 1); - private static string path = "C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/ML/Fertilizer_Prediction.csv"; - private static string modelpath = "C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/ML/MLmodel"; - private static string report = "C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/ML/report"; - private static string pathBig = "C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/ML/BigFertPredict.csv"; - private static string modelpathBig = "C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/ML/MLmodelBig"; - private static string reportBig = "C:/Users/Oskar/source/repos/PotatoPlanFinal/Game1/Content/ML/report_BigModel"; -/* private static string path = "C:/Users/Joel/source/repos/Oskars Repo/Game1/Content/ML/Fertilizer_Prediction.csv"; private static string modelpath = "C:/Users/Joel/source/repos/Oskars Repo/Game1/Content/ML/MLmodel"; private static string report = "C:/Users/Joel/source/repos/Oskars Repo/Game1/Content/ML/report"; private static string pathBig = "C:/Users/Joel/source/repos/Oskars Repo/Game1/Content/ML/BigFertPredict.csv"; private static string modelpathBig = "C:/Users/Joel/source/repos/Oskars Repo/Game1/Content/ML/MLmodelBig"; private static string reportBig = "C:/Users/Joel/source/repos/Oskars Repo/Game1/Content/ML/report_BigModel"; - */ // Loading data, creatin and saving ML model for smaller dataset (100) public static void CreateModel() {