diff --git a/Assets/Resources/BaseTile.prefab b/Assets/Resources/BaseTile.prefab index 0fc1827..e0c00f3 100644 --- a/Assets/Resources/BaseTile.prefab +++ b/Assets/Resources/BaseTile.prefab @@ -289,6 +289,7 @@ GameObject: m_Component: - component: {fileID: 6840747130279028589} - component: {fileID: 6444954891387505866} + - component: {fileID: 5996997330531153169} m_Layer: 0 m_Name: HydrationIndicator m_TagString: Untagged @@ -363,6 +364,26 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!95 &5996997330531153169 +Animator: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2145333408190307379} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 0} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorControllerStateOnDisable: 0 --- !u!1 &4752245148499717901 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Actions/ActionInvoker.cs b/Assets/Scripts/Actions/ActionInvoker.cs index 51d0826..b85f2f6 100644 --- a/Assets/Scripts/Actions/ActionInvoker.cs +++ b/Assets/Scripts/Actions/ActionInvoker.cs @@ -5,6 +5,7 @@ using UnityEngine.PlayerLoop; using Random = UnityEngine.Random; namespace DefaultNamespace { + [Obsolete("Use ActionManager.HandleAction() instead", true)] public class ActionInvoker { public static void InvokeAction(GameObject gameObject, UsableItem usableItem) { Type tileType = gameObject.GetComponent().Tile.GetType(); diff --git a/Assets/Scripts/Actions/ActionManager.cs b/Assets/Scripts/Actions/ActionManager.cs index e8fc944..16ba036 100644 --- a/Assets/Scripts/Actions/ActionManager.cs +++ b/Assets/Scripts/Actions/ActionManager.cs @@ -4,6 +4,7 @@ using UnityEngine; namespace Actions { public class ActionManager { + #region Singleton private static ActionManager _instance; public static ActionManager Instance { get @@ -14,33 +15,49 @@ namespace Actions { return _instance; } } + #endregion - private List _actionHandlers; - public List ActionHandlers => _actionHandlers; + private List _clickActionHandlers; + private List _nextDayActionHandlers; private ActionManager() { - _actionHandlers = new List(); - instatiateActionHandlers(); + _clickActionHandlers = new List(); + _nextDayActionHandlers = new List(); + instantiateClickActionHandlers(); + instantiateNextDayActionHandlers(); } - private void instatiateActionHandlers() { - ActionHandlers.Add(new GrassTileHoeActionHandler()); - ActionHandlers.Add(new GrassTileShovelActionHandler()); - ActionHandlers.Add(new GrassTileFenceActionHandler()); + private void instantiateNextDayActionHandlers() { + _nextDayActionHandlers.Add(new FarmlandTileNextDayActionHandler()); + } + + private void instantiateClickActionHandlers() { + _clickActionHandlers.Add(new GrassTileClickHoeActionHandler()); + _clickActionHandlers.Add(new GrassTileClickShovelActionHandler()); + _clickActionHandlers.Add(new GrassTileClickFenceActionHandler()); - ActionHandlers.Add(new FarmlandTileShovelActionHandler()); - ActionHandlers.Add(new FarmlandTileScytheActionHandler()); - ActionHandlers.Add(new FarmlandTileWateringCanActionHandler()); - ActionHandlers.Add(new FarmlandTileWheatSeedsActionHandler()); + _clickActionHandlers.Add(new FarmlandTileClickShovelActionHandler()); + _clickActionHandlers.Add(new FarmlandTileClickScytheActionHandler()); + _clickActionHandlers.Add(new FarmlandTileClickWateringCanActionHandler()); + _clickActionHandlers.Add(new FarmlandTileClickWheatSeedsActionHandler()); - ActionHandlers.Add(new WaterTileShovelActionHandler()); - ActionHandlers.Add(new WaterTileFishingRodActionHandler()); + _clickActionHandlers.Add(new WaterTileClickShovelActionHandler()); + _clickActionHandlers.Add(new WaterTileClickFishingRodActionHandler()); } - public void HandleAction(GameObject gameObject, UsableItem usableItem) { - foreach (ActionHandler actionHandler in ActionHandlers) { + public void ClickAction(GameObject gameObject, UsableItem usableItem) { + foreach (ClickActionHandler actionHandler in _clickActionHandlers) { if(actionHandler.Matches(gameObject, usableItem)) { - actionHandler.InvokeAction(gameObject, usableItem); + actionHandler.InvokeAction(gameObject); + } + } + } + + public void NextDayAction(GameObject gameObject) { + Debug.Log("nextday action"); + foreach (NextDayActionHandler actionHandler in _nextDayActionHandlers) { + if(actionHandler.Matches(gameObject)) { + actionHandler.InvokeAction(gameObject); } } } diff --git a/Assets/Scripts/Actions/NextDayActionHandler.cs b/Assets/Scripts/Actions/NextDayActionHandler.cs new file mode 100644 index 0000000..7e54539 --- /dev/null +++ b/Assets/Scripts/Actions/NextDayActionHandler.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +namespace Actions { + public interface NextDayActionHandler { + public void InvokeAction(GameObject gameObject); + public bool Matches(GameObject gameObject); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Actions/NextDayActionHandler.cs.meta b/Assets/Scripts/Actions/NextDayActionHandler.cs.meta new file mode 100644 index 0000000..f294be5 --- /dev/null +++ b/Assets/Scripts/Actions/NextDayActionHandler.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8f87f93d622e4c48b1d3a9e7b8540cb1 +timeCreated: 1655984072 \ No newline at end of file diff --git a/Assets/Scripts/Actions/NextDayActionHandlers.cs b/Assets/Scripts/Actions/NextDayActionHandlers.cs new file mode 100644 index 0000000..a2fa4ba --- /dev/null +++ b/Assets/Scripts/Actions/NextDayActionHandlers.cs @@ -0,0 +1,90 @@ +using Assets.Scripts.Actions; +using Tiles; +using UnityEngine; + +namespace Actions { + public abstract class AbstractTileNextDayActionHandler : NextDayActionHandler { + protected BaseTile _tile; + protected ItemContainer _ic; + public virtual void InvokeAction(GameObject gameObject) { + throw new System.NotImplementedException(); + } + + public virtual bool Matches(GameObject gameObject) { + bool rv = false; + _ic = ItemContainer.Instance; + try { + _tile = gameObject.GetComponent().Tile; + rv = true; + } + catch { } + + return rv; + } + } + + public abstract class AbstractFarmlandTileNextDayActionHandler : AbstractTileNextDayActionHandler { + protected Crop crop; + public override bool Matches(GameObject gameObject) { + bool rv = base.Matches(gameObject); + try { + crop = ((FarmlandTile)_tile).Crop; + } + catch { + rv = false; + } + return rv; + } + + protected void updateFarmlandSprites(GameObject gameObject) { + SpriteRenderer hydrationSpriteRenderer = null; + SpriteRenderer cropSpriteRenderer = null; + + foreach (Transform transChild in gameObject.transform.GetComponentInChildren()) { + if(transChild.gameObject.name.Equals("HydrationIndicator")) { + hydrationSpriteRenderer = transChild.gameObject.GetComponent(); + } + if(transChild.gameObject.name.Equals("Crop")) { + cropSpriteRenderer = transChild.gameObject.GetComponent(); + } + } + + if(crop.Planted) { + if(crop.FullyGrown) { + //Debug.Log("sprite fg"); + cropSpriteRenderer.sprite = Crop.FullyGrownCrop; + } else { + //Debug.Log("sprite smallCrop"); + cropSpriteRenderer.sprite = Crop.SmallCrop; + } + } else { + cropSpriteRenderer.sprite = null; + } + + if(crop.Hydrated) { + //Debug.Log("sprite hydrated"); + hydrationSpriteRenderer.color = Crop.HydratedColor; + } else { + //Debug.Log("sprite no hydrated"); + hydrationSpriteRenderer.color = Color.clear; + } + } + } + + public class FarmlandTileNextDayActionHandler : AbstractFarmlandTileNextDayActionHandler { + public override void InvokeAction(GameObject gameObject) { + if(crop.Planted && crop.Hydrated) { + crop.Grow(); + } + crop.Hydrated = false; + + updateFarmlandSprites(gameObject); + } + + public override bool Matches(GameObject gameObject) { + bool rv = base.Matches(gameObject); + Debug.Log(_tile.ToString()); + return rv; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Actions/NextDayActionHandlers.cs.meta b/Assets/Scripts/Actions/NextDayActionHandlers.cs.meta new file mode 100644 index 0000000..b062813 --- /dev/null +++ b/Assets/Scripts/Actions/NextDayActionHandlers.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a265af555e5f40a69fba299178573640 +timeCreated: 1655984072 \ No newline at end of file diff --git a/Assets/Scripts/Animal.cs b/Assets/Scripts/Animal.cs index b88005c..62fa039 100644 --- a/Assets/Scripts/Animal.cs +++ b/Assets/Scripts/Animal.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using Actions; using DefaultNamespace; using UnityEngine; using Object = System.Object; @@ -59,6 +60,6 @@ public class Animal : MonoBehaviour { private void OnMouseDown() { //TODO: TEMP!!!! Destroy(gameObject); - ActionInvoker.InvokeAction(gameObject, PlayerController.instance.SelectedItem); + //ActionManager.Instance.HandleAction(gameObject, PlayerController.instance.SelectedItem); } } \ No newline at end of file diff --git a/Assets/Scripts/Crop.cs b/Assets/Scripts/Crop.cs index 72af0e4..c83387f 100644 --- a/Assets/Scripts/Crop.cs +++ b/Assets/Scripts/Crop.cs @@ -38,7 +38,6 @@ public class Crop { public void Grow() { _growthStage++; - Hydrated = false; } public void ResetPlant() { diff --git a/Assets/Scripts/TileBehaviour.cs b/Assets/Scripts/TileBehaviour.cs index 14de1e2..c64ee25 100644 --- a/Assets/Scripts/TileBehaviour.cs +++ b/Assets/Scripts/TileBehaviour.cs @@ -34,18 +34,18 @@ public class TileBehaviour : MonoBehaviour { _hoverIndicatorColor = new Color(1, 1, 1, 0.3f); SetHoverIndicatorVisibility(false); - HouseController.NewDayEvent.AddListener(DayLightStep); + HouseController.NewDayEvent.AddListener(NextDay); } - private void DayLightStep() { - ActionInvoker.InvokeDayLightStep(gameObject); + private void NextDay() { + Debug.Log("nextday"); + ActionManager.Instance.NextDayAction(gameObject); } void OnMouseDown() { UsableItem usableItem = PlayerController.instance.SelectedItem; if(usableItem != null) { - //ActionInvoker.InvokeAction(gameObject, usableItem); - ActionManager.Instance.HandleAction(gameObject, usableItem); + ActionManager.Instance.ClickAction(gameObject, usableItem); } } diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 3dcb827..90d6509 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.2f1 -m_EditorVersionWithRevision: 2021.3.2f1 (d6360bedb9a0) +m_EditorVersion: 2021.3.1f1 +m_EditorVersionWithRevision: 2021.3.1f1 (3b70a0754835)