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