
using Marro.PacManUdon;
using TMPro;
using UdonSharp;
using UnityEngine;
using UnityEngine.UI;
using VRC.SDKBase;
using VRC.Udon;
using UnityEngine.Tilemaps;

public class TestBallManager : UdonSharpBehaviour
{
    [SerializeField] TestBall[] testBalls;
    [SerializeField] NetworkManager networkManager;
    [SerializeField] private TMP_InputField debugOutput;

    void Start()
    {
        networkManager.Initialize();
        foreach (var testBall in testBalls)
        {
            testBall.Initialize(networkManager);
        }
    }

    public void Update()
    {
        if (debugOutput == null)
        {
            return;
        }

        debugOutput.text = "";
        networkManager.WriteDebugOutput(debugOutput);
        foreach (var testBall in testBalls)
        {
            testBall.WriteDebugOutput(debugOutput);
        }
    }

    public void ResetButtonPressed()
    {
        Start();
    }

    public void UpButtonPressed()
    {
        foreach (var testBall in testBalls)
        {
            testBall.UpButtonPressed();
        }

        networkManager.SendEventSoon(NetworkEventType.InputChange);
    }

    public void SyncButtonPressed()
    {
        if (VRCPlayerApi.GetPlayerCount() == 1)
        {
            networkManager.SimulateSyncToTimestamp(networkManager.SyncedTime - 0.5f);
        }
        else if (networkManager.IsOwner)
        {
            networkManager.SendEventSoon(NetworkEventType.FullSync);
        }
        else
        {
            networkManager.RequestEvent(NetworkEventType.FullSync);
        }
    }
}
