using System; using System.Collections.Generic; namespace MaidStatus { public static class PersonalEventBlocker { public static void CreateData() { if (PersonalEventBlocker.blockerDataList != null) { return; } PersonalEventBlocker.blockerDataList = new List(); if (Product.type != Product.Type.EnAdult) { return; } using (AFileBase afileBase = GameUty.FileSystem.FileOpen("maid_personaleventblocker_list.nei")) { using (CsvParser csvParser = new CsvParser()) { bool flag = csvParser.Open(afileBase); if (flag) { int num = 1; while (csvParser.IsCellToExistData(0, num)) { PersonalEventBlocker.Data item = new PersonalEventBlocker.Data(csvParser, num); PersonalEventBlocker.blockerDataList.Add(item); num++; } } } } if (GameUty.PathList != null) { HashSet hashSet = new HashSet(); foreach (string str in GameUty.PathList) { string f_strFileName = "maid_personaleventblocker_unlocklist_" + str + ".nei"; if (GameUty.FileSystem.IsExistentFile(f_strFileName)) { using (AFileBase afileBase2 = GameUty.FileSystem.FileOpen(f_strFileName)) { using (CsvParser csvParser2 = new CsvParser()) { bool flag2 = csvParser2.Open(afileBase2); if (flag2) { int num2 = 1; while (csvParser2.IsCellToExistData(0, num2)) { Personal.Data data = Personal.GetData(csvParser2.GetCellAsString(0, num2)); foreach (PersonalEventBlocker.Data data2 in PersonalEventBlocker.blockerDataList) { if (data == data2.personal) { hashSet.Add(data2); break; } } num2++; } } } } } } foreach (PersonalEventBlocker.Data item2 in hashSet) { PersonalEventBlocker.blockerDataList.Remove(item2); } } } public static PersonalEventBlocker.Data GetData(Personal.Data personal) { foreach (PersonalEventBlocker.Data data in PersonalEventBlocker.blockerDataList) { if (personal == data.personal) { return data; } } return null; } public static List GetAllDatas() { return PersonalEventBlocker.blockerDataList; } public static bool IsEnabledYotodiSkill(Personal.Data personal, int yotogiSkillId) { PersonalEventBlocker.Data data = PersonalEventBlocker.GetData(personal); return data == null || !data.blockYotogiIdList.Contains(yotogiSkillId); } public static bool IsEnabledScheduleTask(Personal.Data personal, int taskId) { PersonalEventBlocker.Data data = PersonalEventBlocker.GetData(personal); return data == null || !data.blockScheduleIdList.Contains(taskId); } public static bool IsEnabledLifeMode(Personal.Data personal) { return PersonalEventBlocker.GetData(personal) == null; } private static List blockerDataList; public class Data { public Data(CsvParser csv, int readLineY) { if (!csv.IsValid() || !csv.IsCellToExistData(0, readLineY)) { return; } Func> func = delegate(string cellText) { HashSet hashSet = new HashSet(); if (!string.IsNullOrEmpty(cellText)) { foreach (string text in cellText.Split(new char[] { ',' })) { int item; if (int.TryParse(text.Trim(), out item)) { hashSet.Add(item); } } } return hashSet; }; int num = 0; this.personal = Personal.GetData(csv.GetCellAsString(num++, readLineY)); this.blockScheduleIdList = func(csv.GetCellAsString(num++, readLineY)); this.blockYotogiIdList = func(csv.GetCellAsString(num++, readLineY)); } public readonly Personal.Data personal; public readonly HashSet blockScheduleIdList; public readonly HashSet blockYotogiIdList; } } }