public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jObject = JObject.Load(reader); string actionType = (string)jObject["Action"] ?? string.Empty; ModInstallAction item = null; if (actionType.Equals("MoveFile", StringComparison.InvariantCultureIgnoreCase)) { item = new MoveFileAction(); } else if (actionType.Equals("MoveFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new MoveFilesAction(); } else if (actionType.Equals("DeleteFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new DeleteFilesAction(); } else if (actionType.Equals("ReplaceFile", StringComparison.InvariantCultureIgnoreCase)) { item = new ReplaceFileAction(); } else if (actionType.Equals("ReplaceFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new ReplaceFilesAction(); } else if (actionType.Equals("CopyFile", StringComparison.InvariantCultureIgnoreCase)) { item = new CopyFileAction(); } else if (actionType.Equals("CopyFiles", StringComparison.InvariantCultureIgnoreCase)) { item = new CopyFilesAction(); } else if (actionType.Equals("WriteToFile", StringComparison.InvariantCultureIgnoreCase)) { item = new WriteToFileAction(); } else if (actionType.Equals("QuickBMSExtract", StringComparison.InvariantCultureIgnoreCase)) { item = new QuickBMSExtractAction(); } else if (actionType.Equals("UnluacDecompile", StringComparison.InvariantCultureIgnoreCase)) { item = new UnluacDecompileAction(); } else { item = new ModInstallAction(); } serializer.Populate(jObject.CreateReader(), item); return(item); }
static bool CheckQuickBMSExtractAction(QuickBMSExtractAction action, List <string> loadErrors) { // Can only modify files in the game path if (!action.TargetFiles.All(f => ValidGameFilePath(f))) { loadErrors.Add($"QuickBMSExtract - {nameof(action.TargetFiles)}: All provided paths for QuickBMS extraction must be in the [GAME] folder"); return(false); } return(action.TargetFiles != null); }