Skip to content

Instantly share code, notes, and snippets.

@insthync
Created February 17, 2019 15:24
Show Gist options
  • Save insthync/1d1360996b6c105a3285a2662159f87c to your computer and use it in GitHub Desktop.
Save insthync/1d1360996b6c105a3285a2662159f87c to your computer and use it in GitHub Desktop.
EnterMMOServer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using LiteNetLib;
using LiteNetLibManager;
namespace MultiplayerARPG.MMO
{
public class EnterMMOServer : MonoBehviour
{
public string serverAddress;
public int serverPort;
public UnityEvent onConnectedToServer;
public UnityEvent onValidateAccessTokenSuccess;
private void OnEnable()
{
MMOClientInstance.Singleton.onCentralClientConnected += OnCentralServerConnected;
MMOClientInstance.Singleton.onCentralClientDisconnected += OnCentralServerDisconnected;
if (MMOClientInstance.Singleton.IsConnectedToCentralServer())
OnCentralServerConnected();
else if (!string.IsNullOrEmpty(serverAddress) && serverPort > 0)
MMOClientInstance.Singleton.StartCentralClient(serverAddress, serverPort);
}
private void OnDisable()
{
MMOClientInstance.Singleton.onCentralClientConnected -= OnCentralServerConnected;
MMOClientInstance.Singleton.onCentralClientDisconnected -= OnCentralServerDisconnected;
}
public void OnCentralServerConnected()
{
ClearHistory();
onConnectedToServer.Invoke();
if (!string.IsNullOrEmpty(MMOClientInstance.UserId) && !string.IsNullOrEmpty(MMOClientInstance.AccessToken))
MMOClientInstance.Singleton.RequestValidateAccessToken(MMOClientInstance.UserId, MMOClientInstance.AccessToken, OnValidateAccessToken);
}
public void OnCentralServerDisconnected(DisconnectInfo disconnectInfo)
{
UISceneGlobal.Singleton.ShowDisconnectDialog(disconnectInfo);
}
public void OnClickLogout()
{
MMOClientInstance.Singleton.RequestUserLogout(OnUserLogout);
}
public void OnClickDisconnect()
{
MMOClientInstance.Singleton.ClearClientData();
MMOClientInstance.Singleton.StopCentralClient();
}
public void OnClickExit()
{
Application.Quit();
}
private void OnUserLogout(AckResponseCode responseCode, BaseAckMessage messageData)
{
ClearHistory();
}
private void OnValidateAccessToken(AckResponseCode responseCode, BaseAckMessage messageData)
{
if (responseCode == AckResponseCode.Success)
{
if (onValidateAccessTokenSuccess != null)
onValidateAccessTokenSuccess.Invoke();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment