using System; using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEngine; public class RewardAnalysis:TRichAnalysis { public static Regex Reward_Regex = new Regex(@"", RegexOptions.Singleline); private static RewardInfo presentReward = null; public void GetReward(string val,ref List rewardList) { rewardList.Clear(); if (!Reward_Regex.IsMatch(val)) { return; } else { foreach (Match match in Reward_Regex.Matches(val)) { RewardInfo reward = new RewardInfo(); presentReward = reward; rewardList.Add(reward); AnalysisSplitEvent(match.Value); if (presentReward.info == "item") { presentReward.itemCfg = ItemConfig.Get(presentReward.id); } } } } private void AnalysisSplitEvent(string val) { string[] array = GetSplitEvent(val); if (array.Length > 0) { foreach (var split_event in array) { AnalysisSplitData(split_event); } } } private void AnalysisSplitData(string val) { string[] array = GetSplitData(val); if (array.Length > 0) { foreach (var split_data in array) { AnalysisSplitValue(split_data); } } } private void AnalysisSplitValue(string split_data) { string[] array = GetSplitValue(split_data); if (array.Length == 2) { switch (array[0].ToLower()) { case "info": { presentReward.info = array[1]; } break; case "id": { int.TryParse(array[1],out presentReward.id); } break; case "exppoint": { int.TryParse(array[1], out presentReward.expPoint); } break; case "num": { int.TryParse(array[1], out presentReward.num); } break; case "word": { presentReward.showtype = RewardShowType.Word; } break; case "image": { presentReward.showtype = RewardShowType.Image; } break; } } } public override string Analysis(string val, bool IsRich) { return string.Empty; } public override string CalculateTextIndex(string val, int index) { return string.Empty; } public class RewardInfo { public string info; public int id=0; public int num=0; public int expPoint = 0; public ItemConfig itemCfg = null; public RewardShowType showtype = RewardShowType.Image; } public enum RewardShowType { Word, Image, } }