using System; using Actions; using DefaultNamespace; using Tiles; using UnityEngine; /// /// Defining the behaviour of tiles /// public class TileBehaviour : MonoBehaviour { private BaseTile _tile; public virtual BaseTile Tile { get => _tile; set { _tile = value; GetComponent().sprite = _tile.Sprite; } } private SpriteRenderer _hoverIndicatorSpriteRenderer; private static Color _hoverIndicatorColor; /// Start is called before the first frame update void Start() { Tile = new GrassTile(); foreach(Transform transChild in gameObject.GetComponentsInChildren()) { if(transChild.gameObject.name.Equals("HoverIndicator")) { _hoverIndicatorSpriteRenderer = transChild.gameObject.GetComponent(); _hoverIndicatorSpriteRenderer.color = Color.clear; } if(transChild.gameObject.name.Equals("HydrationIndicator")) { transChild.gameObject.GetComponent().color = Color.clear; } } _hoverIndicatorColor = new Color(1, 1, 1, 0.3f); SetHoverIndicatorVisibility(false); HouseController.NewDayEvent.AddListener(NextDay); } /// /// is called when a NewDayEvent is dispersed /// private void NextDay() { ActionManager.Instance.NextDayAction(gameObject); } /// /// Used to invoke Click Actions /// void OnMouseDown() { UsableItem usableItem = PlayerController.instance.SelectedItem; if(usableItem != null) { ActionManager.Instance.ClickAction(gameObject, usableItem); } } /// /// used to set hover indicator /// private void OnMouseEnter() { SetHoverIndicatorVisibility(true); } private void OnMouseExit() { SetHoverIndicatorVisibility(false); } /// /// Sets the visibility of hover indicator /// /// private void SetHoverIndicatorVisibility(bool visible) { if(visible) { _hoverIndicatorSpriteRenderer.color = _hoverIndicatorColor; } else { _hoverIndicatorSpriteRenderer.color = Color.clear; } } }