public static void m_dicSliderPartsTypeBtnName_ext() { if (m_dicSliderPartsTypeBtnName_ext_flag) { return; } m_dicSliderPartsTypeBtnName_ext_flag = true; string text = "edit_category_define_creator.nei"; Dictionary <SceneEditInfo.EMenuCategory, int> dictionary = new Dictionary <SceneEditInfo.EMenuCategory, int>(); using (AFileBase afileBase = GameUty.FileSystemMod.FileOpen(text)) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(afileBase); NDebug.Assert(condition, text + "\nopen failed."); for (int i = 1; i < csvParser.max_cell_y; i++) { if (csvParser.IsCellToExistData(0, i)) { int num = 0; MPN key = MPN.null_mpn; try { key = (MPN)Enum.Parse(typeof(MPN), csvParser.GetCellAsString(num++, i)); } catch { } SceneEditInfo.CCateNameType ccateNameType = new SceneEditInfo.CCateNameType(); ccateNameType.m_eMenuCate = SceneEditInfo.EMenuCategory.頭; try { ccateNameType.m_eMenuCate = (SceneEditInfo.EMenuCategory)Enum.Parse(typeof(SceneEditInfo.EMenuCategory), csvParser.GetCellAsString(num++, i)); } catch { } ccateNameType.m_eType = SceneEditInfo.CCateNameType.EType.Item; try { ccateNameType.m_eType = (SceneEditInfo.CCateNameType.EType)Enum.Parse(typeof(SceneEditInfo.CCateNameType.EType), csvParser.GetCellAsString(num++, i)); } catch { } ccateNameType.m_ePartsType = csvParser.GetCellAsString(num++, i); ccateNameType.m_strBtnPartsTypeName = csvParser.GetCellAsString(num++, i); ccateNameType.m_nIdx = 50 + i; SceneEditInfo.dicPartsTypePair_[key] = ccateNameType; } } } } }
// add data from *phot_bg_list*.nei files to PhotoBGData.bg_data_ public static void PhotoBGext() { string[] bg_nelist = null; bg_nelist = GameUty.FileSystemMod.GetList("PhotoBG_NEI", AFileSystemBase.ListType.AllFile); if (bg_nelist == null || 0 == bg_nelist.Length) { return; } foreach (string str in bg_nelist) { string nei_filename = Path.GetFileName(str); if (Path.GetExtension(nei_filename) == ".nei" && nei_filename != "phot_bg_list.nei") { using (AFileBase aFileBase2 = GameUty.FileSystemMod.FileOpen(nei_filename)) { using (CsvParser csvParser = new CsvParser()) { if (csvParser.Open(aFileBase2)) { for (int k = 1; k < csvParser.max_cell_y; k++) { int num2 = 1; PhotoBGData photoBGData = new PhotoBGData(); // this requires prepatched assembly to compile photoBGData.id = ""; photoBGData.category = csvParser.GetCellAsString(num2++, k); photoBGData.name = csvParser.GetCellAsString(num2++, k); photoBGData.create_prefab_name = csvParser.GetCellAsString(num2++, k); //assign id from prefab/bundles string //this is done because save/load of objects in photomode is based on id if (!string.IsNullOrEmpty(photoBGData.create_prefab_name)) { photoBGData.id = photoBGData.create_prefab_name.GetHashCode().ToString(); // this feels wrong, but i suspect the KISS might convert id to int at some point // so i'd rather be on safe side } string check = csvParser.GetCellAsString(num2++, k); if (String.IsNullOrEmpty(check) || GameUty.BgFiles.ContainsKey(photoBGData.create_prefab_name.ToLower() + ".asset_bg")) { PhotoBGData.bg_data_.Add(photoBGData); } } } else { Debug.Log($"Skipping invalid file: Mod/{str}"); } } } } } }
private static void CreateMaidClassNameMap() { if (0 < maidClassIDtoNameDic.Count) { return; } int maxVal = 0; using (AFileBase aFileBase = GameUty.FileSystem.FileOpen("maid_class_infotext.nei")) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(aFileBase); NDebug.Assert(condition, "file open error[maid_class_infotext.nei]"); for (int i = 1; i < csvParser.max_cell_y; i++) { if (!csvParser.IsCellToExistData(0, i)) { continue; } string cellAsString = csvParser.GetCellAsString(0, i); maidClassIDtoNameDic.Add(maxVal, cellAsString); maxVal++; } } } }
// add data from *phot_motion_list*.nei files to PhotoMotionData.motion_data_ public static void PhotMotExt() { string[] PhotoMotNei = null; PhotoMotNei = GameUty.FileSystemMod.GetList("PhotMot_NEI", AFileSystemBase.ListType.AllFile); // if (PhotoMotNei == null || PhotoMotNei.Length == 0) // { return; } foreach (string str in PhotoMotNei) { string nei_filename = Path.GetFileName(str); if (Path.GetExtension(nei_filename) == ".nei" && nei_filename != "phot_motion_list.nei") { using (AFileBase aFileBase = GameUty.FileSystem.FileOpen(nei_filename)) { using (CsvParser csvParser = new CsvParser()) { if (csvParser.Open(aFileBase)) { for (int i = 1; i < csvParser.max_cell_y; i++) { int num = 0; PhotoMotionData photoMotionData = new PhotoMotionData(); // this requires prepatched assembly to compile photoMotionData.id = (long)csvParser.GetCellAsInteger(num++, i); photoMotionData.category = csvParser.GetCellAsString(num++, i); photoMotionData.name = csvParser.GetCellAsString(num++, i); photoMotionData.direct_file = csvParser.GetCellAsString(num++, i); photoMotionData.is_loop = (csvParser.GetCellAsString(num++, i) == "○"); photoMotionData.call_script_fil = csvParser.GetCellAsString(num++, i); photoMotionData.call_script_label = csvParser.GetCellAsString(num++, i); photoMotionData.is_mod = false; string cellAsString = csvParser.GetCellAsString(num++, i); bool flag = csvParser.GetCellAsString(num++, i) == "○"; photoMotionData.use_animekey_mune_l = (photoMotionData.use_animekey_mune_r = flag); photoMotionData.is_man_pose = (csvParser.GetCellAsString(num++, i) == "○"); PhotoMotionData.motion_data_.Add(photoMotionData); } } else { Debug.Log($"Skipping invalid file: Mod/{str}"); } } } } } }
public static void m_dicPartsTypeCamera_ext() { if (m_dicPartsTypeCamera_ext_flag) { return; } m_dicPartsTypeCamera_ext_flag = true; string text = "edit_attention_point_define_creator.nei"; using (AFileBase afileBase = GameUty.FileSystemMod.FileOpen(text)) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(afileBase); NDebug.Assert(condition, text + "\nopen failed."); for (int i = 1; i < csvParser.max_cell_y; i++) { if (csvParser.IsCellToExistData(0, i)) { SceneEditInfo.CamToBone value = default(SceneEditInfo.CamToBone); int num = 0; MPN key = MPN.null_mpn; try { key = (MPN)Enum.Parse(typeof(MPN), csvParser.GetCellAsString(num++, i)); } catch {} value.bone = csvParser.GetCellAsString(num++, i); value.angle = wf.Parse.Vector2(csvParser.GetCellAsString(num++, i)); value.distance = csvParser.GetCellAsReal(num++, i); SceneEditInfo.m_dicPartsTypeCamera_[key] = value; } } } } }
private static void CreateEnabledYotogiClassMap() { Type yotogiClassType = typeof(Maid).Assembly.GetType("param.YotogiClassType"); MethodInfo getYotogiClassIdFromNameMethod = typeof(MaidParam).GetMethod( "GetYotogiClassIdFromName", BindingFlags.Public | BindingFlags.Static); bool isOldVersion = yotogiClassType != null; Action <string> readYotogiClasses = delegate(string fileName) { fileName += ".nei"; if (!GameUty.FileSystem.IsExistentFile(fileName)) { return; } using (AFileBase aFileBase = GameUty.FileSystem.FileOpen(fileName)) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(aFileBase); NDebug.Assert(condition, fileName + " open failed."); for (int k = 1; k < csvParser.max_cell_y; k++) { if (!csvParser.IsCellToExistData(0, k)) { continue; } string className = csvParser.GetCellAsString(0, k); int key = isOldVersion ? (int)Enum.Parse(yotogiClassType, className, true) : (int)getYotogiClassIdFromNameMethod.Invoke(null, new object[] { className }); if (!yotogiClassToNameDic.ContainsKey(key)) { yotogiClassToNameDic.Add(key, className); } EnabledYotogiClasses.Add(key); } } } }; readYotogiClasses("yotogi_class_enabled_list"); foreach (string path in GameUty.PathList) { readYotogiClasses($"yotogi_class_enabled_list_{path}"); } EnabledYotogiClasses.Sort(); }
public static void m_dicPartsTypeWearMode_ext() { if (m_dicPartsTypeWearMode_ext_flag) { return; } m_dicPartsTypeWearMode_ext_flag = true; string text = "edit_mask_define_creator.nei"; SceneEditInfo.dicPartsTypeWearMode_ = new Dictionary <MPN, TBody.MaskMode>(); using (AFileBase afileBase = GameUty.FileSystem.FileOpen(text)) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(afileBase); for (int i = 1; i < csvParser.max_cell_y; i++) { if (csvParser.IsCellToExistData(0, i)) { int num = 0; MPN key = MPN.null_mpn; try { key = (MPN)Enum.Parse(typeof(MPN), csvParser.GetCellAsString(num++, i)); } catch {} TBody.MaskMode value = TBody.MaskMode.None; try { value = (TBody.MaskMode)Enum.Parse(typeof(TBody.MaskMode), csvParser.GetCellAsString(num++, i)); } catch { } SceneEditInfo.dicPartsTypeWearMode_[key] = value; } } } } }
private static void SetEverydaySub(FreeModeItemEveryday.ScnearioType type, string fileName, AbstractFreeModeItem.GameMode gameMode, string fixingFlagText) { AFileBase afileBase; if (gameMode == AbstractFreeModeItem.GameMode.CM3D2) { afileBase = GameUty.FileSystemOld.FileOpen(fileName); } else { if (gameMode != AbstractFreeModeItem.GameMode.COM3D) { return; } afileBase = GameUty.FileSystem.FileOpen(fileName); } 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); int num = 1; if (gameMode != AbstractFreeModeItem.GameMode.CM3D2 || type != FreeModeItemEveryday.ScnearioType.Nitijyou) { string name = csvParser.GetCellAsString(num++, i); string call_file_name = csvParser.GetCellAsString(num++, i); string check_flag_name = csvParser.GetCellAsString(num++, i); if (gameMode == AbstractFreeModeItem.GameMode.COM3D) { bool netorare = (csvParser.GetCellAsString(num++, i) == "○"); } string 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++; } int 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); } num++; } if (GameMain.Instance.CharacterMgr.status.GetFlag(fixingFlagText + check_flag_name) == 0) { MyLog.LogMessage("SetEverydaySub.Flag" , check_flag_name , call_file_name , cellAsInteger , name , info_text ); GameMain.Instance.CharacterMgr.status.SetFlag(fixingFlagText + check_flag_name, 1); } } } } } } }
// add data from *phot_bg_object_list*.nei files to PhotoBGObjectData.bg_data_ public static void PhotoBGobjext() { string[] BgObj_list = null; BgObj_list = GameUty.FileSystemMod.GetList("PhotoBG_OBJ_NEI", AFileSystemBase.ListType.AllFile); if (BgObj_list == null || 0 == BgObj_list.Length) { return; } foreach (string str in BgObj_list) { string nei_filename = Path.GetFileName(str); if (Path.GetExtension(nei_filename) == ".nei" && nei_filename != "phot_bg_object_list.nei") { using (AFileBase aFileBase = GameUty.FileSystemMod.FileOpen(nei_filename)) { using (CsvParser csvParser = new CsvParser()) { if (csvParser.Open(aFileBase)) { for (int i = 1; i < csvParser.max_cell_y; i++) { int num = 1; PhotoBGObjectData photoBGObjectData = new PhotoBGObjectData(); // this requires prepatched assembly to compile photoBGObjectData.id = 0; // not sure if't necessary for id to actually have a value photoBGObjectData.category = csvParser.GetCellAsString(num++, i); photoBGObjectData.name = csvParser.GetCellAsString(num++, i); photoBGObjectData.create_prefab_name = csvParser.GetCellAsString(num++, i); photoBGObjectData.create_asset_bundle_name = csvParser.GetCellAsString(num++, i); //assign id from rpefab/bundles string //this is done because save/load of objects in photomode is based on id if (!string.IsNullOrEmpty(photoBGObjectData.create_prefab_name)) { photoBGObjectData.id = photoBGObjectData.create_prefab_name.GetHashCode(); } else if (!string.IsNullOrEmpty(photoBGObjectData.create_asset_bundle_name)) { photoBGObjectData.id = photoBGObjectData.create_asset_bundle_name.GetHashCode(); } string check = csvParser.GetCellAsString(num++, i); if (String.IsNullOrEmpty(check) || GameUty.BgFiles.ContainsKey(photoBGObjectData.create_asset_bundle_name.ToLower() + ".asset_bg")) { PhotoBGObjectData.bg_data_.Add(photoBGObjectData); } } } else { Debug.Log($"Skipping invalid file: Mod/{str}"); } } } } } }
// add data to desk_item_detail.nei and desk_item_category.nei public static void DeskData_Ext() { #if DEBUG Console.WriteLine("Console.Writeline says hi"); Debug.Log("Debug.Log says hi"); #endif string[] DeskItemList = null; DeskItemList = GameUty.FileSystemMod.GetList("DeskItem_NEI", AFileSystemBase.ListType.AllFile); if (DeskItemList == null || DeskItemList.Length == 0) { return; } foreach (string str in DeskItemList) { string neifile = Path.GetFileName(str); string extension = Path.GetExtension(neifile); // check if file is indeed a .nei file and it snot mennt to overwrite base files // also check if the file is category type or detail type to determine the processing // only files that contain category in their name are assumed to be category files all others nei files are assumbed to be detail files if (neifile.Contains("category") && extension == ".nei" && neifile != "desk_item_category.nei") { using (AFileBase afileBase = GameUty.FileSystem.FileOpen(neifile)) { using (CsvParser csvParser = new CsvParser()) { bool condition = csvParser.Open(afileBase); for (int k = 1; k < csvParser.max_cell_y; k++) { if (!csvParser.IsCellToExistData(0, k)) { break; } int cellAsInteger = csvParser.GetCellAsInteger(0, k); string cellAsString = csvParser.GetCellAsString(1, k); if (!DeskManager.item_category_data_dic_.ContainsKey(cellAsInteger)) { DeskManager.item_category_data_dic_.Add(cellAsInteger, cellAsString); } } } } } else if (neifile != "desk_item_detail.nei" && extension == ".nei") { using (AFileBase afileBase = GameUty.FileSystem.FileOpen(neifile)) { using (CsvParser csvParser = new CsvParser()) { if (csvParser.Open(afileBase)) { for (int j = 1; j < csvParser.max_cell_y; j++) { if (csvParser.IsCellToExistData(0, j)) { int cellAsInteger2 = csvParser.GetCellAsInteger(0, j); DeskManager.ItemData itemData = new DeskManager.ItemData(csvParser, j); // check if it's a prefab data and add it if it is // is impossible to check if prefab exists in resources files // so if referenced prefab doesn't exist i ngame files, the entry isn't going to work properly in game if (!string.IsNullOrEmpty(itemData.prefab_name)) { itemData.id = itemData.prefab_name.GetHashCode();// override the id from file with hash of prefab string to minimize id conflicts DeskManager.item_detail_data_dic_.Add(itemData.id, itemData); } // check if entry refers to asset bundle, and if it is, check if it exists before addding the data else if (!string.IsNullOrEmpty(itemData.asset_name) && GameUty.BgFiles.ContainsKey(itemData.asset_name + ".asset_bg")) { itemData.id = itemData.asset_name.GetHashCode(); DeskManager.item_detail_data_dic_.Add(itemData.id, itemData); } } } } else { Debug.Log($"Skipping invalid file: Mod/{str}"); } } } } } }