using System; using UnityEngine; namespace asim.unity.managers.tilemanager { /// /// Represent a simple tile in Unity that is either Passable or InPassableTile type /// this tile is so simple, that it does not keep track of any of its own data except its tile type /// public class SimpleTile : MonoBehaviour, ITile { public enum Type { Blank, InPassable, Passable } public Type Tiletype { get; private set; } public Sprite SpriteImg { get; private set; } SpriteRenderer spriteRenderer; public static SimpleTile CreateTile(string name,Type tilecode,Sprite sprite) { GameObject newGO = new GameObject(name); SimpleTile newSimpleTile = newGO.AddComponent(); newSimpleTile.Tiletype = tilecode; newSimpleTile.SpriteImg = sprite; newSimpleTile.spriteRenderer = newGO.AddComponent(); newSimpleTile.spriteRenderer.sprite = sprite; return newSimpleTile; } /// /// simply change gameobject name, tile type, and sprite /// public void ChangeTile(string newName, T newTiletype, Sprite newSprite) where T : Enum { if (newTiletype is Type) { name = newName; Tiletype = (Type)(object)newTiletype; SpriteImg = newSprite; } else { throw new Exception("wrong type"); } } /// /// simply destory /// public void DestoryTile(bool destoryGO) { if (destoryGO) Destroy(gameObject); else Destroy(this); } } }