133 lines
3.1 KiB
C#
133 lines
3.1 KiB
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Cysharp.Threading.Tasks;
|
|
using System;
|
|
using Luban.Editor;
|
|
using UnityEngine.Networking;
|
|
|
|
|
|
public class GMCharacterParam
|
|
{
|
|
public uint id;
|
|
public uint level;
|
|
|
|
public int select;
|
|
}
|
|
|
|
public class GMCharacterSelect
|
|
{
|
|
public uint ID;
|
|
public string Name;
|
|
}
|
|
|
|
|
|
public abstract class GMPart
|
|
{
|
|
public abstract void Init();
|
|
public abstract string GetName();
|
|
public abstract void OnTabGUI();
|
|
public abstract void OnOKGUI();
|
|
public abstract string GetURL(string token, string ip, string actor);
|
|
|
|
protected int nStatus;
|
|
protected string errorStr;
|
|
|
|
public static GMActor Actor;
|
|
|
|
public static List<GMCharacterSelect> CharacterSelectList;
|
|
|
|
public static string[] CharacterSelectNames;
|
|
|
|
public static GMCharacterParam NewCharacterParam()
|
|
{
|
|
GMCharacterParam param = new GMCharacterParam();
|
|
param.id = GMPart.CharacterSelectList[0].ID;
|
|
param.level = 1;
|
|
param.select = 0;
|
|
return param;
|
|
}
|
|
|
|
public virtual void Execute(string token, string ip, string actor)
|
|
{
|
|
if (nStatus == 100)
|
|
{
|
|
EditorUtility.DisplayDialog(GetName(), "正在查询中,请稍后....", "确定");
|
|
return;
|
|
}
|
|
|
|
string url = GetURL(token, ip, actor);
|
|
if (string.IsNullOrEmpty(url))
|
|
{
|
|
EditorUtility.DisplayDialog(GetName(), "参数存在错误,请检查", "确定");
|
|
return;
|
|
}
|
|
|
|
nStatus = 100;
|
|
|
|
SendRequest(url);
|
|
}
|
|
|
|
public void OnResGUI()
|
|
{
|
|
switch (nStatus)
|
|
{
|
|
case 100:
|
|
EditorGUILayout.LabelField("正在查询中,请稍后....");
|
|
break;
|
|
case -1:
|
|
EditorGUILayout.LabelField(errorStr);
|
|
break;
|
|
|
|
case 1:
|
|
{
|
|
OnOKGUI();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
async UniTask SendRequest(string url)
|
|
{
|
|
var request = UnityWebRequest.Get(url);
|
|
await request.SendWebRequest();
|
|
switch (request.result)
|
|
{
|
|
// The request finished without any problem.
|
|
case UnityWebRequest.Result.Success:
|
|
//Debug.Log("Request Finished! Text received: " + response.DataAsText);
|
|
OnRequestOK(request.downloadHandler.text);
|
|
break;
|
|
|
|
default:
|
|
string text = "Request Finished with Error! " + request.result + "\n" + request.error;
|
|
OnRequestError(text);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public abstract uint DoJsonDeserialize(string json, out string message);
|
|
|
|
public void OnRequestOK(string result)
|
|
{
|
|
nStatus = 1;
|
|
|
|
string message;
|
|
uint code = DoJsonDeserialize(result, out message);
|
|
|
|
if (code != 0)
|
|
{
|
|
OnRequestError(message);
|
|
}
|
|
}
|
|
|
|
|
|
public void OnRequestError(string message)
|
|
{
|
|
nStatus = -1;
|
|
errorStr = message;
|
|
EditorUtility.DisplayDialog(GetName(), "执行失败!", "确定");
|
|
}
|
|
}
|