155 lines
3.7 KiB
C#
155 lines
3.7 KiB
C#
using System;
|
|
using Newtonsoft.Json;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections.Generic;
|
|
|
|
[Serializable]
|
|
public class CommonResult
|
|
{
|
|
public uint code;
|
|
public string message;
|
|
}
|
|
|
|
public class AddInfo
|
|
{
|
|
public uint id;
|
|
public uint count;
|
|
public int select;
|
|
}
|
|
|
|
public class GMPartAddItem : GMPart
|
|
{
|
|
CommonResult result;
|
|
private GUIStyle errorStyle;
|
|
|
|
List<AddInfo> addList;
|
|
|
|
List<cfg.ActorCfg.DataItem> cfgList;
|
|
|
|
string [] Names;
|
|
|
|
public override string GetName()
|
|
{
|
|
return "添加道具";
|
|
}
|
|
|
|
public override void Init()
|
|
{
|
|
cfgList = Framework.EditorTableManager.instance.tables.Item.DataList;
|
|
|
|
addList = new List<AddInfo>();
|
|
AddInfo info = new AddInfo();
|
|
info.id = (uint)cfgList[0].ID;
|
|
info.count = 0;
|
|
info.select = 0;
|
|
addList.Add(info);
|
|
|
|
errorStyle = new GUIStyle(EditorStyles.label);
|
|
errorStyle.normal.textColor = Color.red;
|
|
errorStyle.fontStyle = FontStyle.Bold;
|
|
|
|
List<string> itemNames = new List<string>();
|
|
for(int i = 0; i < cfgList.Count; i ++)
|
|
{
|
|
itemNames.Add("物品" + cfgList[i].ID);
|
|
}
|
|
|
|
Names = itemNames.ToArray();
|
|
}
|
|
|
|
public override void OnTabGUI()
|
|
{
|
|
for (int i = 0; i < addList.Count; )
|
|
{
|
|
GUILayout.BeginHorizontal();
|
|
|
|
EditorGUILayout.LabelField("物品:", GUILayout.Width(100f));
|
|
var select = EditorGUILayout.Popup(addList[i].select, Names);
|
|
if(select != addList[i].select)
|
|
{
|
|
addList[i].select = select;
|
|
addList[i].id = (uint)cfgList[select].ID;
|
|
}
|
|
|
|
EditorGUILayout.Space(20);
|
|
|
|
string countStr = EditorGUILayout.TextField("物品数量:", addList[i].count.ToString());
|
|
try
|
|
{
|
|
uint count = Convert.ToUInt32(countStr);
|
|
if (count != addList[i].count)
|
|
addList[i].count = count;
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
|
|
if (GUILayout.Button("删除"))
|
|
{
|
|
addList.RemoveAt(i);
|
|
}
|
|
else
|
|
{
|
|
i++;
|
|
}
|
|
|
|
GUILayout.EndHorizontal();
|
|
}
|
|
|
|
if (GUILayout.Button("增加"))
|
|
{
|
|
AddInfo info = new AddInfo();
|
|
info.id = (uint)cfgList[0].ID;
|
|
info.count = 0;
|
|
info.select = 0;
|
|
addList.Add(info);
|
|
}
|
|
}
|
|
|
|
public override void OnOKGUI()
|
|
{
|
|
EditorGUILayout.LabelField(result.message);
|
|
}
|
|
|
|
public override string GetURL(string token, string ip, string actor)
|
|
{
|
|
if (addList.Count <= 0)
|
|
return null;
|
|
|
|
string param = "";
|
|
for (int i = 0; i < addList.Count; i++)
|
|
{
|
|
if (addList[i].id <= 0 || addList[i].count <= 0)
|
|
return null;
|
|
|
|
if (string.IsNullOrEmpty(param))
|
|
param = $"{addList[i].id},{addList[i].count}";
|
|
else
|
|
param += $",{addList[i].id},{addList[i].count}";
|
|
}
|
|
|
|
return $"http://{ip}/gm?actor_id={actor}&command=AddItem&gm_token={token}¶m={param}";
|
|
}
|
|
|
|
public override uint DoJsonDeserialize(string json, out string message)
|
|
{
|
|
uint code = 0;
|
|
try
|
|
{
|
|
result = JsonConvert.DeserializeObject<CommonResult>(json);
|
|
message = result.message;
|
|
code = result.code;
|
|
}
|
|
catch
|
|
{
|
|
Debug.LogError("json error, json=" + json);
|
|
message = "json error, json=" + json;
|
|
code = 1000;
|
|
}
|
|
|
|
return code;
|
|
}
|
|
}
|