NLDClient-yudde/ProjectNLD/Assets/Editor/GMTools/GMPart.cs

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(), "执行失败!", "确定");
}
}