51 lines
No EOL
1.6 KiB
C#
51 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() {
|
|
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));
|
|
}
|
|
}
|
|
} |