示例#1
0
        private WFR _WCC_CookData(WF_Settings settings)
        {
            settings.LOGGER.LogString($"--------------------------------------------------------------------------");
            settings.LOGGER.LogString($"-- WCC_LITE: COOK pm: {settings.PATCH_MODE}");
            settings.LOGGER.LogString($"--------------------------------------------------------------------------");

            try
            {
                WFR result = WFR.WFR_Error;

                // setup *all* seedfiles for cooking: hubs, dlc
                string sp        = $"{settings.SEEDFILE_PREFIX}*.files";
                var    seedfiles = Directory.GetFiles(settings.DIR_TMP(), sp, SearchOption.TopDirectoryOnly);
                foreach (var file in seedfiles)
                {
                    WCC_SEEDFILES += $"-seed={file}";
                }
                // Note: trimdir MUST be lowercased!



                WCC_Command cmd = new cook()
                {
                    Platform = platform.pc,
                    trimdir  = Path.Combine("dlc", $"dlc{settings.MODNAME_LC()}"),
                    outdir   = settings.DIR_COOKED_DLC()
                };

                // run as arguments because of multiple seedfiles
                string args = cmd.CommandLine;
                args  += $" {WCC_SEEDFILES}";
                result = WCC_Task.RunArgsSync(cmd.Name, args);

                //cleanup
                if (Directory.Exists(settings.DIR_COOKED_FILES_DB()))
                {
                    Directory.Delete(settings.DIR_COOKED_FILES_DB());
                }
                //move to prevent beeing packed into mod
                if (File.Exists(Path.Combine(settings.DIR_COOKED_DLC(), "cook.db")))
                {
                    File.Move(Path.Combine(settings.DIR_COOKED_DLC(), "cook.db"), Path.Combine(settings.DIR_COOKED_FILES_DB(), "cook.db"));
                }

                settings.LOGGER.LogString("done.");
                return(result);
            }
            catch (Exception ex)
            {
                settings.LOGGER.LogString(ex.ToString());
                throw ex;
            }
        }
示例#2
0
        private WFR _WCC_GenerateTextureCache(WF_Settings settings)
        {
            settings.LOGGER.LogString($"--------------------------------------------------------------------------");
            settings.LOGGER.LogString($"-- WCC_LITE: GENERATE TEXTURE CACHE pm: {settings.PATCH_MODE}");
            settings.LOGGER.LogString($"--------------------------------------------------------------------------");

            if (!Directory.Exists(Path.Combine(settings.DIR_UNCOOKED_TEXTURES(), settings.DIR_DLC_GAMEPATH())))
            {
                settings.LOGGER.LogString($"WARNING: no textures found in {Path.Combine(settings.DIR_UNCOOKED_TEXTURES(), settings.DIR_DLC_GAMEPATH())}");
                return(WFR.WFR_Error);
            }

            try
            {
                WFR result_cook  = WFR.WFR_Error;
                WFR result_cache = WFR.WFR_Error;

                if (Directory.Exists(settings.DIR_COOKED_TEXTURES_DB()))
                {
                    Directory.Delete(settings.DIR_COOKED_TEXTURES_DB());
                }

                // cook textures

                WCC_Command cook = new cook()
                {
                    Platform = platform.pc,
                    mod      = settings.DIR_UNCOOKED_TEXTURES(),
                    basedir  = settings.DIR_UNCOOKED_TEXTURES(),
                    outdir   = settings.DIR_COOKED_DLC()
                };
                result_cook = WCC_Task.RunCommandSync(cook);
                if (result_cook == WFR.WFR_Error)
                {
                    return(WFR.WFR_Error);
                }

                // move so it is separated from "normal" files cook.db
                if (File.Exists(Path.Combine(settings.DIR_COOKED_DLC(), "cook.db")))
                {
                    File.Delete(Path.Combine(settings.DIR_COOKED_DLC(), "cook.db"));
                }

                // build texture cache
                WCC_Command buildcache = new buildcache()
                {
                    builder  = cachebuilder.textures,
                    DataBase = settings.DIR_COOKED_TEXTURES_DB(),
                    basedir  = settings.DIR_UNCOOKED_TEXTURES(),
                    Out      = Path.Combine(settings.DIR_DLC_CONTENT(), "texture.cache"),
                    Platform = platform.pc
                };
                result_cache = WCC_Task.RunCommandSync(buildcache);
                if (result_cache == WFR.WFR_Error)
                {
                    return(WFR.WFR_Error);
                }

                settings.LOGGER.LogString("done.");
                return(WFR.WFR_Finished);
            }
            catch (Exception ex)
            {
                settings.LOGGER.LogString(ex.ToString());
                throw ex;
            }
        }