using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StickSpawner : MonoBehaviour {

    public GameObject StickPrefab;

    public float StickSpawnChance = 0.5f;
    public float StickSpawnMinDistance = 5f;
    public float StickSpawnAngle = 70f;
    public float StickSpawnTimer = 2f;

    private GameObject Player;

    private float LastSpawn;
    private bool CanSpawnNew = true;
    private Item SpawnedStick = null;

    void Awake() {
        Player = GameObject.FindGameObjectWithTag("Player");
        LastSpawn = Time.time + StickSpawnTimer * Random.value;
    }

    void Update() {
        if (!CanSpawnNew) {
            if (SpawnedStick.Grabbed) {
                CanSpawnNew = true;
            } else {
                return;
            }
        }

        if (Time.time > LastSpawn + StickSpawnTimer) {
            LastSpawn = Time.time;
        } else {
            return;
        }

        var dir = transform.position - Player.transform.position;
        if ((Vector3.Angle(Player.transform.forward, dir) > StickSpawnAngle) || dir.magnitude > StickSpawnMinDistance && Random.value <= StickSpawnChance) {
            Debug.Log("Spawned");
            CanSpawnNew = false;
            var Stick = GameObject.Instantiate(StickPrefab, transform.position + Vector3.up * 2, Random.rotation);
            SpawnedStick = Stick.GetComponent<Item>();
        }

    }
}
