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

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}&param={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;
}
}