using UnityEngine;

public class HorizontalBar : BarBase
{
    public GameObject horizontalBarrierPrefab;

    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
        Initialize();
    }

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

            if (firingTimer >= firingSpeed)
            {
                if (canFireLeft)
                {
                    Vector3 leftSide = new Vector3(
                        bounds.min.x - (bounds.size.x / 2.0f),
                        bounds.center.y, 
                        bounds.center.z
                    );

                    var left = Instantiate(horizontalBarrierPrefab, leftSide, Quaternion.identity);
                    var leftBarScript = left.GetComponent<HorizontalBar>();
                    leftBarScript.firingSpeed = firingSpeed;
                    leftBarScript.canFireRight = false;

                    Physics2D.IgnoreCollision(
                        left.GetComponent<Collider2D>(), 
                        GetComponent<Collider2D>(), 
                        true
                    );
                }

                if (canFireRight)
                {
                    Vector3 rightSide = new Vector3(
                        bounds.max.x + (bounds.size.x / 2.0f),
                        bounds.center.y,
                        bounds.center.z
                    );
                    var right = Instantiate(horizontalBarrierPrefab, rightSide, Quaternion.identity);
                    var rightBarScript = right.GetComponent<HorizontalBar>();
                    rightBarScript.firingSpeed = firingSpeed;
                    rightBarScript.canFireLeft = false;

                    Physics2D.IgnoreCollision(
                        right.GetComponent<Collider2D>(), 
                        GetComponent<Collider2D>(), 
                        true
                    );
                }

                canFire = false;
            }
        }
    }
}
