123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- using System;
- using System.Collections.Generic;
- using MaidStatus;
- using PlayerStatus;
- public class FreeModeItemEveryday : AbstractFreeModeItem
- {
- private FreeModeItemEveryday(FreeModeItemEveryday.ScnearioType type, int item_id)
- {
- this.scnerioType = type;
- this.item_id_ = item_id;
- this.everyday_event_data_ = FreeModeItemEveryday.DataDic[type].everyday_event_data_dic_[this.item_id_];
- this.is_enabled_ = FreeModeItemEveryday.IsEnabledFlag(type, this.everyday_event_data_.check_flag_name);
- }
- public static List<FreeModeItemEveryday> CreateItemEverydayList(FreeModeItemEveryday.ScnearioType type, MaidStatus.Status maidStatus = null)
- {
- FreeModeItemEveryday.CreateCsvData(type);
- List<FreeModeItemEveryday> list = new List<FreeModeItemEveryday>();
- foreach (KeyValuePair<int, FreeModeItemEveryday.EverydayEventData> keyValuePair in FreeModeItemEveryday.DataDic[type].everyday_event_data_dic_)
- {
- if (maidStatus != null && !DailyMgr.IsLegacy)
- {
- if (maidStatus.subCharaData != null)
- {
- if (keyValuePair.Value.subHerionID != maidStatus.subCharaData.id)
- {
- continue;
- }
- }
- else if (!keyValuePair.Value.personalIdList.Contains(maidStatus.personal.id))
- {
- continue;
- }
- }
- if (keyValuePair.Value.gameMode != AbstractFreeModeItem.GameMode.CM3D2 || DailyMgr.IsLegacy)
- {
- if (keyValuePair.Value.gameMode != AbstractFreeModeItem.GameMode.COM3D || !DailyMgr.IsLegacy)
- {
- if (!GameMain.Instance.CharacterMgr.status.lockNTRPlay || !keyValuePair.Value.netorare)
- {
- if (type == FreeModeItemEveryday.ScnearioType.Story)
- {
- string check_flag_name = keyValuePair.Value.check_flag_name;
- if (!FreeModeItemEveryday.IsEnabledFlag(FreeModeItemEveryday.ScnearioType.Story, check_flag_name))
- {
- continue;
- }
- }
- list.Add(new FreeModeItemEveryday(type, keyValuePair.Key));
- }
- }
- }
- }
- return list;
- }
- public static void CheckAllMaidEveryDayFlag()
- {
- FreeModeItemEveryday.CheckAllMaidEveryDayFlag(FreeModeItemEveryday.ScnearioType.Story);
- FreeModeItemEveryday.CheckAllMaidEveryDayFlag(FreeModeItemEveryday.ScnearioType.Nitijyou);
- }
- public static void CheckAllMaidEveryDayFlag(FreeModeItemEveryday.ScnearioType type)
- {
- FreeModeItemEveryday.CreateCsvData(type);
- CharacterMgr characterMgr = GameMain.Instance.CharacterMgr;
- PlayerStatus.Status status = characterMgr.status;
- List<string> list = new List<string>();
- foreach (string text in FreeModeItemEveryday.DataDic[type].flag_name_set_)
- {
- if (status.GetFlag(FreeModeItemEveryday.DataDic[type].FixingFlagText + text) == 0)
- {
- list.Add(text);
- }
- }
- for (int i = 0; i < characterMgr.GetStockMaidCount(); i++)
- {
- Maid stockMaid = characterMgr.GetStockMaid(i);
- if (!(stockMaid == null))
- {
- MaidStatus.Status status2 = stockMaid.status;
- for (int j = 0; j < list.Count; j++)
- {
- if (status2.GetFlag(list[j]) != 0)
- {
- characterMgr.status.SetFlag(FreeModeItemEveryday.DataDic[type].FixingFlagText + list[j], 1);
- }
- }
- }
- }
- }
- public static void CheckEveryDayFlag(string flag_name, FreeModeItemEveryday.ScnearioType type)
- {
- FreeModeItemEveryday.CreateCsvData(type);
- if (FreeModeItemEveryday.DataDic[type].flag_name_set_.Contains(flag_name) && !FreeModeItemEveryday.IsEnabledFlag(type, flag_name))
- {
- GameMain.Instance.CharacterMgr.status.SetFlag(FreeModeItemEveryday.DataDic[type].FixingFlagText + flag_name, 1);
- }
- }
- public static bool IsEnabledFlag(FreeModeItemEveryday.ScnearioType type, string flag_name)
- {
- string flagName = FreeModeItemEveryday.DataDic[type].FixingFlagText + flag_name;
- return GameMain.Instance.CharacterMgr.status.GetFlag(flagName) != 0;
- }
- public override int item_id
- {
- get
- {
- return this.item_id_;
- }
- }
- public override string title
- {
- get
- {
- return this.everyday_event_data_.name;
- }
- }
- public override string titleTerm
- {
- get
- {
- return "SceneFreeModeSelect/タイトル/" + this.everyday_event_data_.name;
- }
- }
- public override string text
- {
- get
- {
- return this.everyday_event_data_.info_text;
- }
- }
- public override string textTerm
- {
- get
- {
- return "SceneFreeModeSelect/説明/" + this.everyday_event_data_.name;
- }
- }
- public override string[] condition_texts
- {
- get
- {
- return this.everyday_event_data_.condition_texts;
- }
- }
- public override string[] condition_text_terms
- {
- get
- {
- List<string> list = new List<string>();
- foreach (string str in this.everyday_event_data_.condition_texts)
- {
- list.Add("SceneFreeModeSelect/条件文/" + str);
- }
- return list.ToArray();
- }
- }
- public override bool is_enabled
- {
- get
- {
- return this.is_enabled_;
- }
- }
- public override string play_file_name
- {
- get
- {
- return this.everyday_event_data_.call_file_name;
- }
- }
- public override AbstractFreeModeItem.ItemType type
- {
- get
- {
- if (this.scnerioType == FreeModeItemEveryday.ScnearioType.Story)
- {
- return AbstractFreeModeItem.ItemType.MainStory;
- }
- return AbstractFreeModeItem.ItemType.Normal;
- }
- }
- private static void CreateCsvData(FreeModeItemEveryday.ScnearioType type)
- {
- string fileName = string.Empty;
- string fixingFlagText;
- if (type == FreeModeItemEveryday.ScnearioType.Nitijyou)
- {
- fileName = "recollection_normal2.nei";
- fixingFlagText = "シーン鑑賞_一般_フラグ_";
- }
- else
- {
- if (type != FreeModeItemEveryday.ScnearioType.Story)
- {
- return;
- }
- fileName = "recollection_story.nei";
- fixingFlagText = "シーン鑑賞_メイン_フラグ_";
- }
- if (!FreeModeItemEveryday.DataDic.ContainsKey(type))
- {
- FreeModeItemEveryday.DataDic.Add(type, new FreeModeItemEveryday.ScnerioData(fixingFlagText));
- }
- if (FreeModeItemEveryday.DataDic[type].everyday_event_data_dic_ != null)
- {
- return;
- }
- FreeModeItemEveryday.DataDic[type].everyday_event_data_dic_ = new SortedDictionary<int, FreeModeItemEveryday.EverydayEventData>();
- FreeModeItemEveryday.CreateCsvData(type, fileName, AbstractFreeModeItem.GameMode.COM3D);
- if (GameUty.IsEnabledCompatibilityMode && type == FreeModeItemEveryday.ScnearioType.Nitijyou)
- {
- FreeModeItemEveryday.CreateLeagacyDisableIdList();
- FreeModeItemEveryday.CreateCsvData(type, fileName, AbstractFreeModeItem.GameMode.CM3D2);
- }
- }
- private static void CreateCsvData(FreeModeItemEveryday.ScnearioType type, string fileName, AbstractFreeModeItem.GameMode gameMode)
- {
- HashSet<int> hashSet;
- AFileBase afileBase;
- if (gameMode == AbstractFreeModeItem.GameMode.CM3D2)
- {
- hashSet = AbstractFreeModeItem.GetEnabledOldIdList();
- NDebug.Assert(GameUty.FileSystemOld.IsExistentFile(fileName), fileName + "\nopen failed.");
- afileBase = GameUty.FileSystemOld.FileOpen(fileName);
- }
- else
- {
- if (gameMode != AbstractFreeModeItem.GameMode.COM3D)
- {
- return;
- }
- hashSet = AbstractFreeModeItem.GetEnabledIdList();
- NDebug.Assert(GameUty.FileSystem.IsExistentFile(fileName), fileName + "\nopen failed.");
- afileBase = GameUty.FileSystem.FileOpen(fileName);
- }
- if (hashSet == null || hashSet.Count <= 0)
- {
- return;
- }
- using (afileBase)
- {
- using (CsvParser csvParser = new CsvParser())
- {
- bool condition = csvParser.Open(afileBase);
- NDebug.Assert(condition, fileName + "\nopen failed.");
- for (int i = 1; i < csvParser.max_cell_y; i++)
- {
- if (csvParser.IsCellToExistData(0, i))
- {
- int cellAsInteger = csvParser.GetCellAsInteger(0, i);
- if (hashSet.Contains(cellAsInteger))
- {
- FreeModeItemEveryday.EverydayEventData everydayEventData = new FreeModeItemEveryday.EverydayEventData();
- everydayEventData.id = cellAsInteger;
- int num = 1;
- if (gameMode != AbstractFreeModeItem.GameMode.CM3D2 || type != FreeModeItemEveryday.ScnearioType.Nitijyou || !FreeModeItemEveryday.disableIdList.Contains(everydayEventData.id))
- {
- everydayEventData.gameMode = gameMode;
- everydayEventData.name = csvParser.GetCellAsString(num++, i);
- everydayEventData.call_file_name = csvParser.GetCellAsString(num++, i);
- everydayEventData.check_flag_name = csvParser.GetCellAsString(num++, i);
- if (gameMode == AbstractFreeModeItem.GameMode.COM3D)
- {
- everydayEventData.netorare = (csvParser.GetCellAsString(num++, i) == "○");
- }
- everydayEventData.info_text = csvParser.GetCellAsString(num++, i);
- List<string> list = new List<string>();
- for (int j = 0; j < 9; j++)
- {
- if (csvParser.IsCellToExistData(num, i))
- {
- list.Add(csvParser.GetCellAsString(num, i));
- }
- num++;
- }
- everydayEventData.subHerionID = csvParser.GetCellAsInteger(num++, i);
- while (csvParser.IsCellToExistData(num, 0))
- {
- if (csvParser.GetCellAsString(num, i) == "○")
- {
- string cellAsString = csvParser.GetCellAsString(num, 0);
- Personal.Data data = Personal.GetData(cellAsString);
- everydayEventData.personalIdList.Add(data.id);
- }
- num++;
- }
- everydayEventData.condition_texts = list.ToArray();
- if (!FreeModeItemEveryday.DataDic[type].everyday_event_data_dic_.ContainsKey(everydayEventData.id))
- {
- if (!FreeModeItemEveryday.DataDic[type].flag_name_set_.Contains(everydayEventData.check_flag_name))
- {
- FreeModeItemEveryday.DataDic[type].flag_name_set_.Add(everydayEventData.check_flag_name);
- }
- FreeModeItemEveryday.DataDic[type].everyday_event_data_dic_.Add(everydayEventData.id, everydayEventData);
- }
- }
- }
- }
- }
- }
- }
- }
- private static void CreateLeagacyDisableIdList()
- {
- AFileBase afileBase = GameUty.FileSystem.FileOpen("recollection_legacy_disable.nei");
- using (afileBase)
- {
- using (CsvParser csvParser = new CsvParser())
- {
- bool flag = csvParser.Open(afileBase);
- FreeModeItemEveryday.disableIdList = new List<int>();
- int max_cell_y = csvParser.max_cell_y;
- for (int i = 1; i < max_cell_y; i++)
- {
- FreeModeItemEveryday.disableIdList.Add(csvParser.GetCellAsInteger(0, i));
- }
- }
- }
- }
- private static Dictionary<FreeModeItemEveryday.ScnearioType, FreeModeItemEveryday.ScnerioData> DataDic = new Dictionary<FreeModeItemEveryday.ScnearioType, FreeModeItemEveryday.ScnerioData>();
- private static List<int> disableIdList = new List<int>();
- private bool is_enabled_;
- private int item_id_;
- private FreeModeItemEveryday.EverydayEventData everyday_event_data_;
- private FreeModeItemEveryday.ScnearioType scnerioType;
- public enum ScnearioType
- {
- Story,
- Nitijyou
- }
- private class ScnerioData
- {
- public ScnerioData(string FixingFlagText)
- {
- this.FixingFlagText = FixingFlagText;
- }
- public SortedDictionary<int, FreeModeItemEveryday.EverydayEventData> everyday_event_data_dic_;
- public HashSet<string> flag_name_set_ = new HashSet<string>();
- public string FixingFlagText = "シーン鑑賞_一般_フラグ_";
- }
- private class EverydayEventData
- {
- public AbstractFreeModeItem.GameMode gameMode;
- public int id;
- public string name;
- public string call_file_name;
- public string check_flag_name;
- public string info_text;
- public bool netorare;
- public int subHerionID;
- public string[] condition_texts;
- public List<int> personalIdList = new List<int>();
- }
- }
|