using System.Collections.Generic; using Unity.Plastic.Newtonsoft.Json.Linq; using UnityEngine; [CreateAssetMenu(menuName = "Gather And Defend/Spawner Tile")] public class SpawnerTile : LevelTile { [SerializeField] private GameObject _prefab; [SerializeField] private bool _spawnOnStart = true; [SerializeField] private float _spawnSpeed = 0; private float _spawnCounter = 0; public override bool Equals(ILevelObject other) { return other is SpawnerTile spawner && spawner.Position == Position && spawner.Tilemap == Tilemap && spawner._prefab == _prefab && spawner._spawnOnStart == _spawnOnStart && spawner._spawnSpeed == _spawnSpeed; } public override void LevelDestroy() { //nothing } public override void LevelStart() { if (!_spawnOnStart) return; var instance = Instantiate(_prefab, Position, Quaternion.identity); instance.transform.SetParent(LevelManager.Instance.LevelTransform); } public override void LevelUpdate() { _spawnCounter += Time.deltaTime * _spawnSpeed; if (_spawnCounter < 1) return; _spawnCounter = 0; var instance = Instantiate(_prefab, Position, Quaternion.identity); instance.transform.SetParent(LevelManager.Instance.LevelTransform); } public override Dictionary ToDictionary() { return Extensions.ToDictionary(this); } }