Пример #1
0
        static bool CheckFileWriteAction(WriteToFileAction action, List <string> loadErrors)
        {
            if (action.Content is null)
            {
                loadErrors.Add($"FileWrite - {nameof(action.Content)}: No items provided in 'Content' list");
                return(false);
            }

            // Can only modify files in the game path
            if (!ValidGameFilePath(action.TargetFile))
            {
                loadErrors.Add($"FileWrite - {nameof(action.TargetFile)}: Provided path must be in the [GAME] folder");
                return(false);
            }

            foreach (var content in action.Content)
            {
                if (!string.IsNullOrWhiteSpace(content.DataFilePath) && !string.IsNullOrWhiteSpace(content.Text))
                {
                    loadErrors.Add($"FileWrite - {nameof(content.DataFilePath)}/{nameof(content.Text)}: File write action must provide either 'Text' or 'DataFilePath' properties");
                    return(false);
                }

                if (content.Replace && !content.EndOffset.HasValue)
                {
                    loadErrors.Add($"FileWrite - {nameof(content.Replace)}: File writes with 'Replace' enabled must provide an 'EndOffset' property");
                    return(false);
                }
            }

            return(true);
        }
Пример #2
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);
        }