109 lines
3.2 KiB
C#
109 lines
3.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
using BITKit;
|
|
using BITKit.UX;
|
|
using INetClient = BITKit.INetClient;
|
|
using Cysharp.Threading.Tasks;
|
|
|
|
namespace BITFALL.UX
|
|
{
|
|
public class Menu : UIToolKitPanel
|
|
{
|
|
[Header(Constant.Header.Providers)]
|
|
[SerializeField, SerializeReference, SubclassSelector]
|
|
private INetClient netClient;
|
|
[SerializeField, SerializeReference, SubclassSelector]
|
|
[Header(Constant.Header.Components)]
|
|
public UXButton connectButton;
|
|
public UXButton localhostButton;
|
|
public UXButton disconnectButton;
|
|
public UXButton returnButton;
|
|
public UXImage backgroundImage;
|
|
[Header(Constant.Header.Input)]
|
|
public InputActionReference returnAction;
|
|
public InputActionGroup inputActionGroup;
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
|
|
netClient.OnConnected += OnConnected;
|
|
netClient.OnConnectedFailed += OnConnectFailed;
|
|
netClient.OnDisconnected += OnConnectFailed;
|
|
|
|
inputActionGroup.RegisterCallback(returnAction, OnReturn);
|
|
|
|
OnDisconnected();
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
netClient.OnConnected -= OnConnected;
|
|
netClient.OnConnectedFailed -= OnConnectFailed;
|
|
netClient.OnDisconnected -= OnConnectFailed;
|
|
}
|
|
|
|
protected override void OnEntryOrExit(bool isEntry)
|
|
{
|
|
inputActionGroup.allowInput.SetElements(this, isEntry);
|
|
}
|
|
public void StartIntelnetConnect()
|
|
{
|
|
netClient.Connect();
|
|
}
|
|
public void StartLocalConnect()
|
|
{
|
|
netClient.Connect();
|
|
}
|
|
public void Disconnect()
|
|
{
|
|
netClient.Disconnect();
|
|
}
|
|
private void OnConnected()
|
|
{
|
|
connectButton.SetEnabled(true);
|
|
localhostButton.SetEnabled(true);
|
|
|
|
returnButton.SetActive(true);
|
|
connectButton.SetActive(false);
|
|
localhostButton.SetActive(false);
|
|
disconnectButton.SetActive(true);
|
|
backgroundImage.SetActive(false);
|
|
}
|
|
private void OnConnectFailed()
|
|
{
|
|
UXService.Entry<Menu>();
|
|
connectButton.SetEnabled(true);
|
|
localhostButton.SetEnabled(true);
|
|
OnDisconnected();
|
|
}
|
|
private void OnStartConnect()
|
|
{
|
|
connectButton.SetEnabled(false);
|
|
localhostButton.SetEnabled(false);
|
|
}
|
|
private void OnDisconnected()
|
|
{
|
|
returnButton.SetActive(false);
|
|
connectButton.SetActive(true);
|
|
localhostButton.SetActive(true);
|
|
disconnectButton.SetActive(false);
|
|
backgroundImage.SetActive(true);
|
|
}
|
|
private void OnDisconnect()
|
|
{
|
|
UXService.Entry<Menu>();
|
|
OnDisconnected();
|
|
}
|
|
private void OnReturn(InputAction.CallbackContext context)
|
|
{
|
|
if (!netClient.IsConnected) return;
|
|
if (context.ReadValueAsButton())
|
|
{
|
|
UXService.Entry<HUD>();
|
|
}
|
|
}
|
|
}
|
|
} |