using System; using Presenter; using UnityEngine; using Random = UnityEngine.Random; namespace View { public class RoseSpawner : MonoBehaviour, IRoseSpawner { [SerializeField] private Rect spawnerRegion; [SerializeField] private float initialSpawnerAvoidedRegion; [SerializeField] private GameObject rose; public void SpawnRose() { SpawnInitialRose(); return; Vector2 spawnPos = new( spawnerRegion.position.x + Random.Range(-spawnerRegion.size.x / 2f, spawnerRegion.size.x / 2f), spawnerRegion.position.y + Random.Range(-spawnerRegion.size.y / 2f, spawnerRegion.size.y / 2f) ); Spawn(spawnPos); } public void SpawnInitialRose() { bool spawnOnRight = Random.Range(0, 2) == 0; Vector2 spawnPos; if (spawnOnRight) { spawnPos = new Vector2( spawnerRegion.position.x + Random.Range(initialSpawnerAvoidedRegion / 2f, spawnerRegion.size.x / 2f), spawnerRegion.position.y + Random.Range(-spawnerRegion.size.y / 2f, spawnerRegion.size.y / 2f) ); } else { spawnPos = new Vector2( spawnerRegion.position.x + Random.Range(-spawnerRegion.size.x / 2f, -initialSpawnerAvoidedRegion / 2f), spawnerRegion.position.y + Random.Range(-spawnerRegion.size.y / 2f, spawnerRegion.size.y / 2f) ); } Spawn(spawnPos); } private void Spawn(Vector2 pos) { Instantiate(rose, pos, Quaternion.identity); } private void OnDrawGizmos() { Gizmos.DrawWireCube(spawnerRegion.position, spawnerRegion.size); Gizmos.color = Color.red; Gizmos.DrawWireCube(spawnerRegion.position, new Vector2(initialSpawnerAvoidedRegion, spawnerRegion.size.y)); } } }