using System; using System.Collections.Generic; using System.Linq; public class VoiceDictionary { private VoiceAndWaitTime[] _parsedVoice; private string[] _allVoiceID; private VoiceAndWaitTime _normalVoice; private List _fixedUseCostVoice = new List(); private List _unionBurstVoice = new List(); private List _skyboundArtVoice = new List(); private List _superSkyboundArtVoice = new List(); private VoiceAndWaitTime _earthRiteVoice; private VoiceAndWaitTime _summonTokenVoice; public List EnemyComvoList { get; private set; } public List AllyComvoList { get; private set; } public VoiceDictionary(string voice) { EnemyComvoList = new List(); AllyComvoList = new List(); _parsedVoice = new VoiceAndWaitTime[0]; _allVoiceID = new string[0]; Initialize(voice); } private void Initialize(string voiceStr) { if (string.IsNullOrEmpty(voiceStr)) { return; } string[] array = voiceStr.Split(new string[1] { "," }, StringSplitOptions.None); _parsedVoice = new VoiceAndWaitTime[array.Count()]; _allVoiceID = new string[array.Count()]; string text = ""; int i = 0; for (int num = array.Length; i < num; i++) { text = array[i]; _parsedVoice[i] = ExtractionVoice(text); _allVoiceID[i] = _parsedVoice[i].Voice; if (IsConvVoice(text)) { string[] array2 = text.Split(new string[1] { "_" }, StringSplitOptions.None); int num2 = array2.Length - 1; int item = int.Parse(array2[num2]); if (text.Contains("_4_") || text.Contains("_7_")) { EnemyComvoList.Add(item); } else { AllyComvoList.Add(item); } } if (_normalVoice == null && IsNormalVoice(text)) { _normalVoice = _parsedVoice[i]; } if (_unionBurstVoice != null && IsUnionBurstVoice(text)) { _unionBurstVoice.Add(_parsedVoice[i]); } if (_skyboundArtVoice != null && IsSkyboundArtVoice(text)) { _skyboundArtVoice.Add(_parsedVoice[i]); } if (_superSkyboundArtVoice != null && IsSuperSkyboundArtVoice(text)) { _superSkyboundArtVoice.Add(_parsedVoice[i]); } if (IsFixedUseCostVoice(text)) { _fixedUseCostVoice.Add(_parsedVoice[i]); } if (_earthRiteVoice == null && IsEarthRiteVoice(text)) { _earthRiteVoice = _parsedVoice[i]; } if (_summonTokenVoice == null && IsSummonTokenVoice(text)) { _summonTokenVoice = _parsedVoice[i]; } } } public static void SettingVoiceData(ref VoiceDictionary normal, ref VoiceDictionary evolution, string voice) { List list = voice.Split(new string[1] { "//" }, StringSplitOptions.None).ToList(); if (list.Count > 1) { normal = new VoiceDictionary(list[0]); evolution = new VoiceDictionary(list[1]); } else if (list.Count == 1 && list[0] != "") { normal = new VoiceDictionary(list[0]); evolution = new VoiceDictionary(string.Empty); } else { normal = new VoiceDictionary(string.Empty); evolution = new VoiceDictionary(string.Empty); } } public static void SettingVoiceDataList(out List normal, out List evolution, string voice) { if (voice.IndexOf("//") == 0) { voice.Insert(0, "none"); } List list = voice.Split(new string[1] { "//" }, StringSplitOptions.None).ToList(); if (list.Count > 1) { normal = CreateVoiceDataList(list[0]); evolution = CreateVoiceDataList(list[1]); } else if (list.Count == 1 && list[0] != "") { normal = CreateVoiceDataList(list[0]); evolution = CreateVoiceDataList(string.Empty); } else { normal = CreateVoiceDataList(string.Empty); evolution = CreateVoiceDataList(string.Empty); } } private static List CreateVoiceDataList(string voice) { if (voice == string.Empty) { return null; } List list = voice.Split(new string[1] { "," }, StringSplitOptions.None).ToList(); List list2 = null; if (list.Count > 0) { list2 = new List(); for (int i = 0; i < list.Count; i++) { list2.Add(new VoiceDictionary(list[i])); } } return list2; } public static void SettingVoiceData(ref VoiceDictionary normal, string voice) { List list = voice.Split(new string[1] { "//" }, StringSplitOptions.None).ToList(); if (list.Count >= 1 && list[0] != "") { normal = new VoiceDictionary(list[0]); } else { normal = new VoiceDictionary(string.Empty); } } public string[] GetAllVoiceList() { return _allVoiceID; } private bool IsNormalVoice(string voiceName) { if (!IsConvVoice(voiceName) && !IsFixedUseCostVoice(voiceName) && !IsUnionBurstVoice(voiceName) && !IsSkyboundArtVoice(voiceName) && !IsSuperSkyboundArtVoice(voiceName) && !IsEarthRiteVoice(voiceName)) { return !IsSummonTokenVoice(voiceName); } return false; } private bool IsConvVoice(string voiceName) { if (voiceName.Contains("_4_")) { string[] array = voiceName.Split(new string[1] { "_" }, StringSplitOptions.None); int result = 0; int num = array.Length - 1; if (array.Length > 2 && array[num].Length == 9) { return int.TryParse(array[num], out result); } return false; } if (!voiceName.Contains("_8_")) { return voiceName.Contains("_7_"); } return true; } private bool IsFixedUseCostVoice(string voiceName) { return voiceName.Contains("_enh"); } private bool IsUnionBurstVoice(string voiceName) { return voiceName.Contains("_ub"); } private bool IsSkyboundArtVoice(string voiceName) { return voiceName.Contains("_sb"); } private bool IsSuperSkyboundArtVoice(string voiceName) { return voiceName.Contains("_ssb"); } private bool IsEarthRiteVoice(string voiceName) { return voiceName.Contains("_ear"); } private bool IsSummonTokenVoice(string voiceName) { return voiceName.EndsWith("_11"); } private VoiceAndWaitTime ExtractionVoice(string order) { string text = order; float waitTime = 0f; if (text.Contains("{")) { List list = text.Split(new string[1] { "{" }, StringSplitOptions.None).ToList(); waitTime = float.Parse(list[1].Replace("}", "")); text = list[0]; } return new VoiceAndWaitTime(text, waitTime); } }