Roses/Assets/Scripts/View/RoseSpawner.cs
2024-04-20 12:22:05 +02:00

49 lines
No EOL
1.6 KiB
C#

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() {
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));
}
}
}