public override void Load() { Logger.LogInstance = Log; var useDevMsg = Config.Bind(new ConfigDefinition("Logging", "UseLog"), false, new ConfigDescription("Using Log Message for Debug?")); var useLiveEdit = Config.Bind(new ConfigDefinition("Developer", "UseLiveEdit"), false, new ConfigDescription("Using Live Edit?")); Logger.UsingLog = useDevMsg.Value; PartialDataManager.CanLiveEdit = useLiveEdit.Value; if (!DataBlockTypeManager.Initialize()) { Logger.Error("Unable to Initialize DataBlockTypeCache"); return; } if (!PartialDataManager.Initialize()) { Logger.Error("Unable to Initialize PartialData"); return; } PersistentIDManager.DumpToFile(Path.Combine(PartialDataManager.PartialDataPath, "_persistentID.json")); AssetShardManager.add_OnStartupAssetsLoaded((Il2CppSystem.Action)OnAssetLoaded); var harmony = new Harmony("MTFO.pBlock.Harmony"); harmony.PatchAll(); }
private static void Read(JsonElement objNode, bool assignID, string debugName) { if (!objNode.TryGetProperty("persistentID", out var idNode)) { Logger.Error($"persistentID field is missing: {debugName}"); return; } if (!objNode.TryGetProperty("datablock", out var dbNode)) { Logger.Error($"datablock field is missing: {debugName}"); return; } if (assignID) { if (idNode.ValueKind == JsonValueKind.String) { if (!DataBlockTypeManager.TryGetNextID(dbNode.GetString(), out var id)) { Logger.Error($"datablock field is not valid: {debugName} {objNode}"); return; } PersistentIDManager.TryAssignId(idNode.GetString(), id); } } var datablockName = DataBlockTypeManager.GetBlockName(dbNode.GetString()); if (!DataBlockTypeManager.TryFindCache(datablockName, out var cache)) { Logger.Error($"datablock field is not valid: {debugName} {objNode}"); return; } PartialDataCache partialDataCache = _DataCache.FirstOrDefault(x => x.Name.Equals(datablockName)); if (partialDataCache == null) { partialDataCache = new PartialDataCache(cache); _DataCache.Add(partialDataCache); } partialDataCache.JsonsToRead.Enqueue(objNode.ToString()); }
private static void ReadAndAssignIDs() { foreach (var def in _Config) { DataBlockTypeManager.SetIDBuffer(def.TypeName, def.StartFromID, def.IncrementMode); } var files = Directory.GetFiles(PartialDataPath, "*.json", SearchOption.AllDirectories).OrderBy(f => f); foreach (var file in files) { if (Path.GetFileName(file).StartsWith("_")) { Logger.Log($"{file} have discard prefix (_) excluding from loader!"); continue; } if (!File.Exists(file)) { Logger.Error($"File ({file}) is not exist somehow?"); continue; } if (_AddedFileList.Contains(file)) { Logger.Error($"File ({file}) has loaded multiple times!"); continue; } _AddedFileList.Add(file); AssignPersistentID(file); Logger.Log($" - {file}"); } }