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;
}
}
}