﻿using System;
using UdpKit;
using UnityEngine;

namespace Dissonance.Integrations.PhotonBolt.Demo
{
    public class Menu
        : Bolt.GlobalEventListener
    {
        private void OnGUI()
        {
            GUILayout.BeginArea(new Rect(10, 10, Screen.width - 20, Screen.height - 20));

            if (GUILayout.Button("Start Server", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)))
            {
                // START SERVER
                BoltLauncher.StartServer();
            }

            if (GUILayout.Button("Start Client", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)))
            {
                // START CLIENT
                BoltLauncher.StartClient();
            }

            GUILayout.EndArea();
        }

        public override void BoltStartDone()
        {
            if (BoltNetwork.isServer)
            {
                var matchName = Guid.NewGuid().ToString();

                BoltNetwork.SetServerInfo(matchName, null);
                BoltNetwork.LoadScene("Bolt Game World");
            }
        }

        public override void SessionListUpdated(Map<Guid, UdpSession> sessionList)
        {
            Debug.LogFormat("Session list updated: {0} total sessions", sessionList.Count);

            foreach (var session in sessionList)
            {
                var photonSession = session.Value;
                if (photonSession.Source == UdpSessionSource.Photon)
                    BoltNetwork.Connect(photonSession);
            }
        }
    }
}
