diff --git a/Assets/Scripts/Actions/ActionManager.cs b/Assets/Scripts/Actions/ActionManager.cs
index ba27ca8..ac054f9 100644
--- a/Assets/Scripts/Actions/ActionManager.cs
+++ b/Assets/Scripts/Actions/ActionManager.cs
@@ -3,6 +3,10 @@ using Assets.Scripts.Actions;
using UnityEngine;
namespace Actions {
+ ///
+ /// AcrionManagaer managing Actions.
+ /// ActionHandler implement either NextDayActionHandler or ClickActionHandler and have to be added to the matching list in the instatiationmethod
+ ///
public class ActionManager {
#region Singleton
private static ActionManager _instance;
@@ -23,17 +27,22 @@ namespace Actions {
private ActionManager() {
_clickActionHandlers = new List();
_nextDayActionHandlers = new List();
- InstantiateClickActionHandlers();
- InstantiateNextDayActionHandlers();
+ instantiateClickActionHandlers();
+ instantiateNextDayActionHandlers();
}
- private void InstantiateNextDayActionHandlers() {
+ ///
+ /// NextDayActionHandlers to be instatiated and added to the corresponding List
+ ///
+ private void instantiateNextDayActionHandlers() {
_nextDayActionHandlers.Add(new FarmlandTileNextDayActionHandler());
-
- _nextDayActionHandlers.Add(new ChickenAnimalNextDayActionHandler());
}
- private void InstantiateClickActionHandlers() {
+
+ ///
+ /// ClickActionHandlers to be instatiated and added to the corresponding List
+ ///
+ private void instantiateClickActionHandlers() {
_clickActionHandlers.Add(new GrassTileClickHoeActionHandler());
_clickActionHandlers.Add(new GrassTileClickShovelActionHandler());
_clickActionHandlers.Add(new GrassTileClickFenceActionHandler());
@@ -49,19 +58,33 @@ namespace Actions {
_clickActionHandlers.Add(new CowAnimalClickActionHandler());
}
+ ///
+ /// Used to Invoke ClickActions, all ClickActionHandlers in ClickActionHandlers list are iterated through,
+ /// only one will be invoked per method call
+ ///
+ /// The affected gameObject
+ /// the current tool
public void ClickAction(GameObject gameObject, UsableItem usableItem) {
foreach (ClickActionHandler actionHandler in _clickActionHandlers) {
if(actionHandler.Matches(gameObject, usableItem)) {
actionHandler.InvokeAction(gameObject);
+ break; // Ja Herr Professor, Sie sehen richtig. Voller Stolz verwende ich ein break.
}
}
}
+ ///
+ /// Used to Invoke ClickActions, all ClickActionHandlers in ClickActionHandlers list are iterated through,
+ /// only one will be invoked per method call
+ ///
+ /// The affected gameObject
+ /// the current tool
public void NextDayAction(GameObject gameObject) {
Debug.Log("nextday action");
foreach (NextDayActionHandler actionHandler in _nextDayActionHandlers) {
if(actionHandler.Matches(gameObject)) {
actionHandler.InvokeAction(gameObject);
+ break; // Gleich noch einmal. Und ich kann nachts immer noch zufrieden schlafen.
}
}
}
diff --git a/Assets/Scripts/Actions/ClickActionHandler.cs b/Assets/Scripts/Actions/ClickActionHandler.cs
index 119fa9c..faeb655 100644
--- a/Assets/Scripts/Actions/ClickActionHandler.cs
+++ b/Assets/Scripts/Actions/ClickActionHandler.cs
@@ -3,6 +3,9 @@ using System.Transactions;
using UnityEngine;
namespace Actions {
+ ///
+ /// Implementing classes handle ClickActions
+ ///
public interface ClickActionHandler {
public void InvokeAction(GameObject gameObject);
public bool Matches(GameObject gameObject, UsableItem usableItem);
diff --git a/Assets/Scripts/Actions/ClickActionHandlers.cs b/Assets/Scripts/Actions/ClickActionHandlers.cs
index a60af0c..ced75a5 100644
--- a/Assets/Scripts/Actions/ClickActionHandlers.cs
+++ b/Assets/Scripts/Actions/ClickActionHandlers.cs
@@ -2,6 +2,7 @@
using Tiles;
using UnityEngine;
+/// Definitions of ClickActionHandlers here
namespace Assets.Scripts.Actions {
public abstract class AbstractTileClickActionHandler : ClickActionHandler {
protected BaseTile _tile;
@@ -185,7 +186,7 @@ namespace Assets.Scripts.Actions {
public override void InvokeAction(GameObject gameObject) {
if(crop.FullyGrown) {
Inventory.instance.AddElement(ItemContainer.Instance.GetItemByName("Wheat Seeds"),
- (int)(Random.Range(1, 300)));
+ (int)(Random.Range(1, 3)));
Inventory.instance.AddElement(ItemContainer.Instance.GetItemByName("Wheat"), 1);
crop.ResetPlant();
updateFarmlandSprites(gameObject);
diff --git a/Assets/Scripts/Actions/NextDayActionHandler.cs b/Assets/Scripts/Actions/NextDayActionHandler.cs
index 7e54539..a7e0d17 100644
--- a/Assets/Scripts/Actions/NextDayActionHandler.cs
+++ b/Assets/Scripts/Actions/NextDayActionHandler.cs
@@ -1,6 +1,9 @@
using UnityEngine;
namespace Actions {
+ ///
+ /// Implementing classes handle nextDayAction
+ ///
public interface NextDayActionHandler {
public void InvokeAction(GameObject gameObject);
public bool Matches(GameObject gameObject);
diff --git a/Assets/Scripts/Actions/NextDayActionHandlers.cs b/Assets/Scripts/Actions/NextDayActionHandlers.cs
index 4a1ce3d..e5c19b4 100644
--- a/Assets/Scripts/Actions/NextDayActionHandlers.cs
+++ b/Assets/Scripts/Actions/NextDayActionHandlers.cs
@@ -2,6 +2,7 @@
using Tiles;
using UnityEngine;
+/// Definitions of NextDayActionHandlers here
namespace Actions {
public abstract class AbstractTileNextDayActionHandler : NextDayActionHandler {
protected BaseTile _tile;
diff --git a/Assets/Scripts/Crop.cs b/Assets/Scripts/Crop.cs
index c83387f..609a812 100644
--- a/Assets/Scripts/Crop.cs
+++ b/Assets/Scripts/Crop.cs
@@ -5,6 +5,9 @@ using UnityEngine;
using Random = UnityEngine.Random;
+///
+/// Controlling logic of crop on FarmlandTiles
+///
public class Crop {
private const int FinalGrowthStage = 4;
diff --git a/Assets/Scripts/TileBehaviour.cs b/Assets/Scripts/TileBehaviour.cs
index c64ee25..0e52b50 100644
--- a/Assets/Scripts/TileBehaviour.cs
+++ b/Assets/Scripts/TileBehaviour.cs
@@ -4,10 +4,12 @@ using DefaultNamespace;
using Tiles;
using UnityEngine;
+///
+/// Defining the behaviour of tiles
+///
public class TileBehaviour : MonoBehaviour {
private BaseTile _tile;
-
- public BaseTile Tile {
+ public virtual BaseTile Tile {
get => _tile;
set {
_tile = value;
@@ -18,7 +20,7 @@ public class TileBehaviour : MonoBehaviour {
private SpriteRenderer _hoverIndicatorSpriteRenderer;
private static Color _hoverIndicatorColor;
- // Start is called before the first frame update
+ /// Start is called before the first frame update
void Start() {
Tile = new GrassTile();
@@ -37,11 +39,16 @@ public class TileBehaviour : MonoBehaviour {
HouseController.NewDayEvent.AddListener(NextDay);
}
+ ///
+ /// is called when a NewDayEvent is dispersed
+ ///
private void NextDay() {
- Debug.Log("nextday");
ActionManager.Instance.NextDayAction(gameObject);
}
+ ///
+ /// Used to invoke Click Actions
+ ///
void OnMouseDown() {
UsableItem usableItem = PlayerController.instance.SelectedItem;
if(usableItem != null) {
@@ -49,6 +56,9 @@ public class TileBehaviour : MonoBehaviour {
}
}
+ ///
+ /// used to set hover indicator
+ ///
private void OnMouseEnter() {
SetHoverIndicatorVisibility(true);
}
@@ -57,6 +67,10 @@ public class TileBehaviour : MonoBehaviour {
SetHoverIndicatorVisibility(false);
}
+ ///
+ /// Sets the visibility of hover indicator
+ ///
+ ///
private void SetHoverIndicatorVisibility(bool visible) {
if(visible) {
_hoverIndicatorSpriteRenderer.color = _hoverIndicatorColor;
diff --git a/Assets/Scripts/TileController.cs b/Assets/Scripts/TileController.cs
index 18dfb7b..8a409fb 100644
--- a/Assets/Scripts/TileController.cs
+++ b/Assets/Scripts/TileController.cs
@@ -1,26 +1,33 @@
using System;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.Tilemaps;
+///
+/// Instatiates Tiles at beginning of the game
+///
public class TileController : MonoBehaviour {
public GameObject tile;
public GameObject cameraGameObject;
- public List Tiles;
+ public List> Tiles;
// Start is called before the first frame update
void Start() {
+ Tiles = new List>();
Camera camera = cameraGameObject.GetComponent();
Vector3 screen = camera.ViewportToWorldPoint(new Vector3(1, 1, camera.nearClipPlane));
int x = Convert.ToInt32(Math.Ceiling(screen.x));
int y = Convert.ToInt32(Math.Ceiling(screen.y));
for(int xx = -x; xx <= x; xx++) {
+ List temp = new List();
for(int yy = -y; yy <= y; yy++) {
if(tile != null) {
- Tiles.Add(Instantiate(tile, new Vector3(xx, yy, 0), Quaternion.identity));
+ temp.Add(Instantiate(tile, new Vector3(xx, yy, 0), Quaternion.identity));
}
}
+ Tiles.Add(temp);
}
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/Tiles/BaseTile.cs b/Assets/Scripts/Tiles/BaseTile.cs
index b62c9a5..27722de 100644
--- a/Assets/Scripts/Tiles/BaseTile.cs
+++ b/Assets/Scripts/Tiles/BaseTile.cs
@@ -2,10 +2,14 @@ using System;
using System.IO;
using UnityEngine;
+
namespace Tiles {
+ ///
+ /// Base class of all Tile types
+ ///
public abstract class BaseTile {
- private Sprite _sprite;
- public Sprite Sprite => _sprite;
+ protected Sprite _sprite;
+ public virtual Sprite Sprite => _sprite;
protected BaseTile(String pathToImageFile) {
_sprite = GenerateSpriteFromFile(pathToImageFile);
@@ -14,6 +18,11 @@ namespace Tiles {
public virtual void DayLightStep() { }
+ ///
+ /// Used to generate Sprites from files
+ ///
+ /// Path to the Image file to be Converted to the Sprite
+ /// the created Sprite
static public Sprite GenerateSpriteFromFile(String pathToImageFile) {
byte[] data = File.ReadAllBytes(pathToImageFile);
Texture2D texture = new Texture2D(32, 32, TextureFormat.ARGB32, false);
diff --git a/Assets/Scripts/Tiles/GrassTile.cs b/Assets/Scripts/Tiles/GrassTile.cs
index 21d8f60..dae99e5 100644
--- a/Assets/Scripts/Tiles/GrassTile.cs
+++ b/Assets/Scripts/Tiles/GrassTile.cs
@@ -2,11 +2,26 @@
namespace Tiles
{
- public class GrassTile : BaseTile
- {
- public GrassTile() : base("Assets/Farming Asset Pack/Split Assets/farming_tileset_000.png")
+ public class GrassTile : BaseTile {
+ private Sprite[] _sprites;
+ ///
+ /// Overridden Property to randomize tiles between the 3 different sprites
+ ///
+ public override Sprite Sprite
{
-
+ get
+ {
+ int rand = Random.Range(0, _sprites.Length);
+ return _sprites[rand];
+ }
+ }
+ public GrassTile() : base("Assets/Farming Asset Pack/Split Assets/farming_tileset_000.png") {
+ _sprites = new[]
+ {
+ GenerateSpriteFromFile("Assets/Farming Asset Pack/Split Assets/farming_tileset_000.png"),
+ GenerateSpriteFromFile("Assets/Farming Asset Pack/Split Assets/farming_tileset_001.png"),
+ GenerateSpriteFromFile("Assets/Farming Asset Pack/Split Assets/farming_tileset_002.png")
+ };
}
}
}
\ No newline at end of file