using UnityEngine;
using UVC.Core;
namespace Sample
{
///
/// Type D 예시: MonoBehaviour SingletonApp - 네트워크 관리자
///
///
/// [ 타입 ] Type D - MonoBehaviour SingletonApp (SingletonApp<T> 상속)
/// [ 라이프사이클 ] App - 씬 전환 시에도 유지 (DontDestroyOnLoad)
///
/// [ 특징 ]
///
/// - MonoBehaviour이므로 Unity 생명주기 메서드 사용 가능
/// - 씬에 미리 배치하거나 Instance 접근 시 자동 생성
/// - DontDestroyOnLoad 자동 적용
/// - Inspector에서 설정 가능
///
///
/// [ 등록 방법 ]
/// Injector.RegisterSingleton<InjectorSampleNetworkManager>();
///
/// [ 씬 설정 (선택) ]
///
/// - 빈 GameObject 생성 → 이름: "NetworkManager"
/// - InjectorSampleNetworkManager 컴포넌트 추가
///
/// 또는 코드에서 Instance 접근 시 자동으로 GameObject가 생성됩니다.
///
/// [ 사용 방법 ]
///
/// // 방법 1: [Inject] 어트리뷰트 사용
/// [Inject] private InjectorSampleNetworkManager _networkManager;
/// _networkManager.Connect("wss://server.example.com");
///
/// // 방법 2: 직접 Instance 접근 (기존 Singleton 방식)
/// InjectorSampleNetworkManager.Instance.Connect("wss://server.example.com");
///
///
/// [ InjectorSampleSettingsManager와의 차이점 ]
///
/// - SettingsManagerSingleton<T> - 순수 C#, GameObject 없음
/// - NetworkManagerSingletonApp<T> - MonoBehaviour, GameObject 필요
///
///
public class InjectorSampleNetworkManager : SingletonApp
{
/// 서버 연결 상태
public bool IsConnected { get; private set; }
///
/// SingletonApp 초기화 메서드 - Awake에서 자동 호출됩니다.
///
protected override void Init()
{
base.Init();
Debug.Log("[InjectorSampleNetworkManager] Initialized");
}
///
/// 서버에 연결합니다.
///
/// 서버 URL (예: wss://server.example.com)
public void Connect(string serverUrl)
{
Debug.Log($"[InjectorSampleNetworkManager] Connecting to {serverUrl}");
IsConnected = true;
}
///
/// 서버 연결을 해제합니다.
///
public void Disconnect()
{
Debug.Log("[InjectorSampleNetworkManager] Disconnected");
IsConnected = false;
}
}
}