63 lines
2.4 KiB
C#
Raw Normal View History

2025-09-08 14:51:28 +08:00
using LitJson;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZXKFramework;
namespace FSM
{
public class FsmConfigReader
{
public Dictionary<string, Dictionary<string, string>> map;//<״̬<D7B4><CCAC> ,<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,״̬<D7B4><CCAC>>>
public IEnumerator ReadConfigFile(string path, Action<Dictionary<string, Dictionary<string, string>>> callBack)
{
map = new();
yield return Game.Instance.res.ILoad<TextAsset>(path,text=> {
if (text == null) return;
List<JsonData> data = JsonMapper.ToObject<List<JsonData>>(text.text);
for (int i = 0; i < data.Count; i++)
{
if (!map.ContainsKey(data[i]["state"].ToString()))
{
map.Add(data[i]["state"].ToString(), new Dictionary<string, string>());
}
if (!string.IsNullOrEmpty(data[i]["trigger"].ToString()))
{
string[] triggers = data[i]["trigger"].ToString().Replace("\n", "").Split('|');
for (int j = 0; j < triggers.Length; j++)
{
map[data[i]["state"].ToString()].Add(triggers[j].Split('>')[0], triggers[j].Split('>')[1]);
}
}
}
callBack?.Invoke(map);
});
}
public void EditorReadConfigFile(string path)
{
if (string.IsNullOrEmpty(path)) return;
string str = Resources.Load<TextAsset>(path).text;
if (str == null) return;
map = new();
List<JsonData> data = JsonMapper.ToObject<List<JsonData>>(str);
for (int i = 0; i < data.Count; i++)
{
if (!map.ContainsKey(data[i]["state"].ToString()))
{
map.Add(data[i]["state"].ToString(), new Dictionary<string, string>());
}
string[] triggers = data[i]["trigger"].ToString().Replace("\n","").Split('|');
for (int j = 0; j < triggers.Length; j++)
{
if (!string.IsNullOrEmpty(triggers[j]))
{
map[data[i]["state"].ToString()].Add(triggers[j].Split('>')[0], triggers[j].Split('>')[1]);
}
}
}
}
}
}