Fully refactored action handling
This commit is contained in:
parent
561b56ae84
commit
a5ded24c36
11 changed files with 169 additions and 26 deletions
90
Assets/Scripts/Actions/NextDayActionHandlers.cs
Normal file
90
Assets/Scripts/Actions/NextDayActionHandlers.cs
Normal file
|
|
@ -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<TileBehaviour>().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<Transform>()) {
|
||||
if(transChild.gameObject.name.Equals("HydrationIndicator")) {
|
||||
hydrationSpriteRenderer = transChild.gameObject.GetComponent<SpriteRenderer>();
|
||||
}
|
||||
if(transChild.gameObject.name.Equals("Crop")) {
|
||||
cropSpriteRenderer = transChild.gameObject.GetComponent<SpriteRenderer>();
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue