public static bool Patch_JsonConvert(string str, ref OutputNode __result) { if (str.StartsWith("[JSON", StringComparison.CurrentCultureIgnoreCase)) { try { string jsonStr; if (str.StartsWith("[JSONFILE", StringComparison.CurrentCultureIgnoreCase)) { var array = Game.Resource.LoadBytes(str.Substring(10)); // remove [JSONFILE] jsonStr = Encoding.UTF8.GetString(array); } else { jsonStr = str.Substring(6); // remove [JSON] } jsonStr = GlobalLib.ReplaceText(jsonStr); // preprocess Console.WriteLine("parse json: " + jsonStr); __result = ModJson.FromJsonMod <OutputNode>(jsonStr); } catch (Exception e) { Debug.LogError(e); Debug.LogError("解析Json错误" + str); throw; } return(false); } return(true); }
public static bool Patch_MovieLoadJson(ref object __result, JsonReader reader) { if (reader.TokenType == JsonToken.String) { __result = OutputNodeConvert.Deserialize(reader.Value.ToString()); } else { // 增加json加载 //Console.WriteLine("检测到Json模式Node!"); __result = ModJson.FromReaderMod <OutputNode>(reader); } return(false); }
public static bool Patch_ScheduleLoad2(WuxiaBattleSchedule __instance, ref string ScheduleID) { if (!ScheduleID.IsNullOrEmpty()) { string path = string.Format(GameConfig.BattleSchedulePath, GameConfig.Language, ScheduleID + ".json"); try { Traverse.Create(__instance).Property("BattleSchedule").SetValue(ModJson.FromJsonResource <BattleSchedule>(path, true)); } catch { Debug.Log("無法讀取 : " + path); } } ScheduleID = null; //skip original load return(true); }
public static bool Patch_ScheduleLoad3(WuxiaBattleBuffer __instance, WuxiaUnit unit, string bufferId, bool _is_born, bool _first) { if (bufferId.IsNullOrEmpty()) { Heluo.Logger.LogError("要附加的BufferId是空值", "AddBuffer", "C:\\PathOfWuxia\\PathOfWuxia\\Assets\\Scripts\\Battle\\WuxiaBattleBuffer.cs", 119); return(false); } try { string path = string.Format(GameConfig.ButtleBufferPath, GameConfig.Language, bufferId + ".json"); Heluo.Data.Buffer buffer = ModJson.FromJsonResource <Heluo.Data.Buffer>(path, false); // buff大概不用替换id吧.. __instance.AddBuffer(unit, buffer, _is_born, _first); } catch { Heluo.Logger.LogError("附加Buffer : " + bufferId + " 失敗", "AddBuffer", "C:\\PathOfWuxia\\PathOfWuxia\\Assets\\Scripts\\Battle\\WuxiaBattleBuffer.cs", 135); } return(false); }
public static bool Patch_ScheduleLoad(SchedulerComponent __instance, ref ScheduleGraph __result, string path) { // 取消Dictionary Cache,性能不太可能有问题 if (string.IsNullOrEmpty(path)) { Heluo.Logger.Log("排程为空", Heluo.Logger.LogLevel.ERROR, "white", "GetScheduleGraph", "C:\\PathOfWuxia\\PathOfWuxia\\Assets\\Scripts\\Features\\SchedulerComponent.cs", 162); __result = null; return(false); } try { ScheduleGraph.Bundle bundle = ModJson.FromJsonResource <ScheduleGraph.Bundle>(path, true); __result = new ScheduleGraph(bundle); } catch { Heluo.Logger.Log("Path = " + path + " 解析失败", Heluo.Logger.LogLevel.ERROR, "white", "GetScheduleGraph", "C:\\PathOfWuxia\\PathOfWuxia\\Assets\\Scripts\\Features\\SchedulerComponent.cs", 162); __result = null; } return(false); }
public void OnUpdate() { if (!DebugOn.Value) { return; } if (Input.GetKeyDown(NodeDocKey.Value)) { string target = DebugOutDir.Value + "游戏指令(OutputNode)文档.json"; ModOutputNodeConverter.ExportDoc(target); target = DebugOutDir.Value + "txt表格(Item)文档.json"; ItemDocConverter.ExportDoc(target); } if (Input.GetKeyDown(NodeFileKey.Value) && !string.IsNullOrEmpty(NodeContent.Value)) { // OutputNode string target = DebugOutDir.Value + NodeFilePath.Value; OutputNode obj = OutputNodeConvert.Deserialize(NodeContent.Value); var strJsonMod = ModJson.ToJsonMod(obj, typeof(OutputNode), JsonPritty.Value); Console.WriteLine("Json版 = " + strJsonMod); GlobalLib.ToFile(strJsonMod, target); } if (Input.GetKeyDown(MovieFileKey.Value) && !string.IsNullOrEmpty(MovieFileId.Value)) { // movie string source = string.Format(MovieFileType.Value == MovieType.Cinematic ? GameConfig.CinematicPath : GameConfig.SchedulerPath, MovieFileId.Value); string target = string.Format(DebugOutDir.Value + MovieFilePath.Value, MovieFileId.Value); var obj = ModJson.FromJsonResource <ScheduleGraph.Bundle>(source); if (JsonFormat.Value) { var strJsonMod = ModJson.ToJsonMod(obj, typeof(ScheduleGraph.Bundle), JsonPritty.Value); Console.WriteLine("Json版 = " + strJsonMod); GlobalLib.ToFile(strJsonMod, target); // 测试读取并对比重新通过Json构建的是否有差 var obj2 = ModJson.FromJsonMod <ScheduleGraph.Bundle>(strJsonMod); JsonSerializerSettings originalSetting = new JsonSerializerSettings { Converters = new JsonConverter[] { new OutputNodeJsonConverter() } }; string str2 = ModJson.ToJson(obj2, typeof(ScheduleGraph.Bundle), originalSetting, JsonPritty.Value); Console.WriteLine("重构脚本 = " + str2); } else { GlobalLib.ToFile(Game.Resource.LoadString(source), target); } } if (Input.GetKeyDown(BattleFileKey.Value) && !string.IsNullOrEmpty(BattleFileId.Value)) { // battle schedule string source = string.Format(GameConfig.BattleSchedulePath, GameConfig.Language, BattleFileId.Value + ".json"); string target = string.Format(DebugOutDir.Value + BattleFilePath.Value, BattleFileId.Value); if (JsonFormat.Value) { BattleSchedule obj = ModJson.FromJsonResource <BattleSchedule>(source); var strJsonMod = ModJson.ToJsonMod(obj, typeof(BattleSchedule), JsonPritty.Value); Console.WriteLine("Json版 = " + strJsonMod); GlobalLib.ToFile(strJsonMod, target); } else { GlobalLib.ToFile(Game.Resource.LoadString(source), target); } } if (Input.GetKeyDown(BuffFileKey.Value) && !string.IsNullOrEmpty(BuffFileId.Value)) { // buff string source = string.Format(GameConfig.ButtleBufferPath, GameConfig.Language, BuffFileId.Value + ".json"); string target = string.Format(DebugOutDir.Value + BuffFilePath.Value, BuffFileId.Value); if (JsonFormat.Value) { Heluo.Data.Buffer obj = ModJson.FromJsonResource <Heluo.Data.Buffer>(source); var strJsonMod = ModJson.ToJsonMod(obj, typeof(Heluo.Data.Buffer), true); Console.WriteLine("Json版 = " + strJsonMod); GlobalLib.ToFile(strJsonMod, target); } else { GlobalLib.ToFile(Game.Resource.LoadString(source), target); } } }