#nullable enable
using IGP.Multiplayer;
using IGP.Multiplayer.Mirror;
using IGP.UnitySDK;
using Mirror;
using UnityEngine;

public sealed class IGPExampleMirrorTransport : NetworkManager
{
    [SerializeField] private IGPRuntimeManager? coreRuntime = null;
    [SerializeField] private IGPMultiplayerRuntime? multiplayerRuntime = null;
    [SerializeField] private IGPMirrorTransport? igpTransport = null;

    public override void Awake()
    {
        coreRuntime ??= FindObjectOfType<IGPRuntimeManager>();
        multiplayerRuntime ??= FindObjectOfType<IGPMultiplayerRuntime>();
        igpTransport ??= FindObjectOfType<IGPMirrorTransport>();

        if (coreRuntime == null || multiplayerRuntime == null || igpTransport == null)
        {
            Debug.LogError("Missing IGP core, multiplayer runtime, or Mirror transport.");
            enabled = false;
            return;
        }

        transport = igpTransport;
        networkAddress = "host";
        base.Awake();
    }
}
