Beispiel #1
0
        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);
        }