﻿
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
using TMPro;
using UnityEngine.UI;

public class Browser : UdonSharpBehaviour
{

    public BrowerController browserController;
    public GameObject EnabledObject;
    public GameObject DisabledObject;
    public MeshFilter threadMesh;

    public TextMeshProUGUI threadText;
    public TextMeshProUGUI refreshCooldown;
    public TextMeshProUGUI motd;
    public TextMeshProUGUI status;
    public TextMeshProUGUI pageIndexDisplay;
    public Scrollbar scrollbar;

    private bool inProximity;
    private int previousPostCount;
    void Start()
    {
        inProximity = false;
    }
    void OnEnable()
    {
    }

    void Update()
    {
        if (browserController.gameObject.activeSelf)
        {
            ActivateBrowser();
            threadMesh.mesh = browserController.GetThreadMesh();
            threadText.text = browserController.GetThreadString();
            refreshCooldown.text = browserController.GetCurrentCooldown();
            motd.text = browserController.GetMotd();
            status.text = browserController.GetStatus();
            pageIndexDisplay.text = $"Page {browserController.GetCurrentPage() + 1}/{browserController.GetPageCount()}";

            if (previousPostCount != browserController.GetPostCount())
            {
                if (browserController.GetAutoBottom())
                {
                    scrollbar.value = 0.0f;
                    browserController.SetCurrentPage(browserController.GetPageCount() - 1);
                }
            }
            previousPostCount = browserController.GetPostCount();
        }
        else
        {
            DeactivateBrowser();
        }
    }

    public void ActivateBrowser()
    {
        if (browserController.gameObject.activeSelf && inProximity)
        {
            DisabledObject.SetActive(false);
            EnabledObject.SetActive(true);
        }
    }
    public void DeactivateBrowser()
    {
        EnabledObject.SetActive(false);
        DisabledObject.SetActive(true);
    }

    public void EnterProximity()
    {
        inProximity = true;
        ActivateBrowser();
    }
    public void ExitProximity()
    {
        inProximity = false;
        DeactivateBrowser();
    }
}
