using System; using System.Collections; using System.Collections.Generic; using System.Xml; using Unity.VisualScripting; using UnityEngine; public class ZZZPlayer : MonoBehaviour { public static ZZZPlayer CSZS; public JSONReader jSONReader; public Dictionary> CSB1 = new Dictionary>(); //Key是判断是不是一组,string是ID tanchuang1用的 public bool isYou=true; public void Start() { // SetPlayerID("11007"); FindPlayerTaskID(10810, "tanchuang1"); ////遍历字典 //foreach (KeyValuePair> kvp in PlayerID) //{ // Debug.Log($"职业: {kvp.Key}"); // // 遍历值(List) // foreach (string task in kvp.Value) // { // Debug.Log($"任务: {task}"); // } //} } public Dictionary> PlayerID = new Dictionary>() { { "8000", new List() }, { "8001", new List() }, { "8002", new List() }, { "8003", new List() }, { "8004", new List() }, { "8005", new List() }, { "8006", new List() }, { "8007", new List() }, { "8008", new List() }, { "8009", new List() }, { "8010", new List() }, { "8011", new List() } }; private void Awake() { CSZS = this; } /// /// 接收玩家接受的任务 /// public void SetPlayerID(string TaskID) { var a=ParseString(jSONReader.GetOcpID(int.Parse(TaskID))); for (int i=0;i /// 返回一个职业接取的任务 /// public List GetPlayerID(string ID) { if (PlayerID.TryGetValue(ID, out List value)) { return value; // 返回对应的 List } else { Debug.Log("颠仔找不到"); return new List(); // 返回空列表 } } /// /// 判断那些角色可以接取任务 /// /// 输入的字符串 /// 解析后的 List,如果输入为空则返回空列表 public static List ParseString(string input) { // 如果输入为空或 null,返回空列表 if (string.IsNullOrEmpty(input)) { return new List(); } // 按 "|" 分割字符串,并返回结果列表 return new List(input.Split('|')); } /// /// 判断玩家是否接取这个任务或者(返回是bool) /// /// 要检查的数字 /// 弹窗名 /// 是否存在 public void FindPlayerTaskID(int number,string Type) { foreach (var item in jSONReader.ZZSelectsDictionary) { Select data = item.Value; if (data.AppliedUI == "tanchuang1") { var a = GetNumberBeforeComma(data.Group); // 检查并初始化键 if (!CSB1.ContainsKey(a)) { CSB1[a] = new List(); // 初始化键对应的列表 } // 添加值到键对应的列表 CSB1[a].Add(data.ID); } } // 执行后续对比逻辑 CompareValues(number); } /// /// 第二次筛选 /// private void CompareValues(int number) { // 获取所有 Key List allKeys = GetAllKeys(CSB1); Debug.Log("所有的 Key: " + string.Join(", ", allKeys)); // 获取所有 Value List allValues = GetAllValues(CSB1); Debug.Log("所有的 Values: " + string.Join(", ", allValues)); //foreach (var kvp in CSB1) //{ // int key = kvp.Key; // string value = kvp.Value; // // 分割 Value 字符串为多个部分 // List valueList = new List(value.Split(',')); // Debug.Log($"Key {key} 包含的值:{string.Join(", ", valueList)}"); // // 遍历分割后的值并逐个传递 // foreach (string item in valueList) // { // Debug.Log(key+"_"+item); // } //} } #region 测试 /// /// 获取所有 Key /// private List GetAllKeys(Dictionary> dictionary) { return new List(dictionary.Keys); } /// /// 获取所有 Value /// private List GetAllValues(Dictionary> dictionary) { List allValues = new List(); foreach (var values in dictionary.Values) { allValues.AddRange(values); // 合并所有值 } return allValues; } #endregion public bool IsNumberInData(string data, int number) { // 按 # 分割 OR 条件组 string[] orGroups = data.Split('#'); // 遍历每个 OR 条件组 foreach (string orGroup in orGroups) { // 按 | 分割 AND 条件 string[] andConditions = orGroup.Split('|'); // 遍历每个 AND 条件,检查是否包含数字 foreach (string condition in andConditions) { // 按 , 分割单个条件 string[] numbers = condition.Split(','); // 确保条件中有数字 if (numbers.Length == 2 && int.TryParse(numbers[1], out int parsedNumber)) { if (parsedNumber == number) { return true; // 如果匹配,则立即返回 true } } } } return false; // 如果所有条件都不匹配,返回 false } /// /// 解析并提取逗号(,)前的数字(判断分组) /// /// 输入字符串 /// 返回一个包含数字的列表 /// /// 获取逗号(,或,)前的数字 /// /// 输入的字符串(例如 "123,15") /// 逗号前的数字,如果解析失败返回 -1 public int GetNumberBeforeComma(string data) { if (string.IsNullOrEmpty(data)) { Debug.LogWarning("输入为空或 null!"); return -1; } // 按逗号分割(支持中文 "," 和英文 ",") string[] parts = data.Split(new char[] { ',', ',' }); // 检查分割结果并尝试解析 if (parts.Length > 0 && int.TryParse(parts[0], out int number)) { return number; // 返回解析成功的数字 } Debug.LogWarning($"无法解析逗号前的数字:{data}"); return -1; // 解析失败返回 -1 } }