using UnityEngine;

public class MultiplierSpawner : Spawner
{
    public GameObject multiplierPrefab;

    public SpriteRenderer gameBoardSpriteRenderer;

    private Bounds multiplierBounds;

    private Bounds gameBoardBounds;

    private float spawnTimer = 0f;

    private Vector2 spawnPosition;

    private bool isActive = true;

    private static float spawnProbability = 0.1f;

    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
        gameBoardBounds = gameBoardSpriteRenderer.bounds;
        multiplierBounds = multiplierPrefab.GetComponent<SpriteRenderer>().bounds;
        Reset();
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        spawnTimer += Time.fixedDeltaTime;

        if (spawnTimer >= 1f && isActive && isSpawning)
        {
            spawnTimer = 0f;
            if (Random.value < spawnProbability)
            {
                GameObject multiplier = Instantiate(multiplierPrefab, spawnPosition, Quaternion.identity);
                isActive = false;
            }
        }
    }

    public void Reset()
    {
        isActive = true;
        spawnTimer = 0f;
        spawnPosition = new Vector2(
            Random.Range(
                gameBoardBounds.min.x + multiplierBounds.extents.x, 
                gameBoardBounds.max.x - multiplierBounds.extents.x
            ),
            Random.Range(
                gameBoardBounds.min.y + multiplierBounds.extents.y, 
                gameBoardBounds.max.y - multiplierBounds.extents.y
            )
        );
    }
}
