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 addList; List cfgList; string [] Names; public override string GetName() { return "添加道具"; } public override void Init() { cfgList = Framework.EditorTableManager.instance.tables.Item.DataList; addList = new List(); 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 itemNames = new List(); 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(json); message = result.message; code = result.code; } catch { Debug.LogError("json error, json=" + json); message = "json error, json=" + json; code = 1000; } return code; } }