From 77cb9ae86677ef0ae2c6610a8bc0dde8cbd8fde4 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sun, 3 Mar 2019 12:01:00 +0700 Subject: [PATCH] added MakeScreenShot and MakeAutoSave functions to FLevelLocals --- src/g_game.cpp | 23 ++++++++++++++++++++++- src/g_game.h | 2 +- wadsrc/static/language.enu | 1 + wadsrc/static/menudef.txt | 1 + wadsrc/static/zscript/base.zs | 2 ++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/g_game.cpp b/src/g_game.cpp index 861b506a8..32563b9c9 100644 --- a/src/g_game.cpp +++ b/src/g_game.cpp @@ -108,6 +108,7 @@ CVAR (Bool, storesavepic, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (Bool, longsavemessages, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR (String, save_dir, "", CVAR_ARCHIVE|CVAR_GLOBALCONFIG); CVAR (Bool, cl_waitforsave, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); +CVAR (Bool, enablescriptscreenshot, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); EXTERN_CVAR (Float, con_midtime); //========================================================================== @@ -1715,7 +1716,7 @@ void G_DoPlayerPop(int playernum) players[playernum].DestroyPSprites(); } -void G_ScreenShot (char *filename) +void G_ScreenShot (const char *filename) { shotfile = filename; gameaction = ga_screenshot; @@ -2876,6 +2877,26 @@ DEFINE_ACTION_FUNCTION(FLevelLocals, StartSlideshow) return 0; } +DEFINE_ACTION_FUNCTION(FLevelLocals, MakeScreenShot) +{ + if (enablescriptscreenshot) + { + G_ScreenShot(""); + } + return 0; +} + +void G_MakeAutoSave() +{ + gameaction = ga_autosave; +} + +DEFINE_ACTION_FUNCTION(FLevelLocals, MakeAutoSave) +{ + G_MakeAutoSave(); + return 0; +} + DEFINE_GLOBAL(players) DEFINE_GLOBAL(playeringame) DEFINE_GLOBAL(PlayerClasses) diff --git a/src/g_game.h b/src/g_game.h index a21c80cc6..baedc0627 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -95,7 +95,7 @@ bool G_CheckDemoStatus (void); void G_Ticker (void); bool G_Responder (event_t* ev); -void G_ScreenShot (char *filename); +void G_ScreenShot (const char* filename); void G_StartSlideshow(FLevelLocals *Level, FName whichone); FString G_BuildSaveName (const char *prefix, int slot); diff --git a/wadsrc/static/language.enu b/wadsrc/static/language.enu index 0c76ada36..c9e7da9f1 100644 --- a/wadsrc/static/language.enu +++ b/wadsrc/static/language.enu @@ -1986,6 +1986,7 @@ MISCMNU_ALLCHEATS = "Enable cheats from all games"; MISCMNU_ENABLEAUTOSAVES = "Enable autosaves"; MISCMNU_AUTOSAVECOUNT = "Number of autosaves"; MISCMNU_SAVELOADCONFIRMATION = "Save/Load confirmation"; +MISCMNU_ENABLESCRIPTSCREENSHOTS = "Enable making screenshots by scripts"; MISCMNU_DEHLOAD = "Load *.deh/*.bex lumps"; MISCMNU_CACHENODES = "Cache nodes"; MISCMNU_CACHETIME = "Time threshold for node caching"; diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 8e4f76838..403123db7 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -1131,6 +1131,7 @@ OptionMenu "MiscOptions" protected Option "$MISCMNU_SAVELOADCONFIRMATION", "saveloadconfirmation", "OnOff" Slider "$MISCMNU_AUTOSAVECOUNT", "autosavecount", 1, 20, 1, 0 Option "$MISCMNU_DEHLOAD", "dehload", "dehopt" + Option "$MISCMNU_ENABLESCRIPTSCREENSHOTS", "enablescriptscreenshot", "OnOff" Option "$MISCMNU_INTERSCROLL", "nointerscrollabort", "OffOn" StaticText " " Option "$MISCMNU_CACHENODES", "gl_cachenodes", "OnOff" diff --git a/wadsrc/static/zscript/base.zs b/wadsrc/static/zscript/base.zs index e5619b0d7..f7b36ab03 100644 --- a/wadsrc/static/zscript/base.zs +++ b/wadsrc/static/zscript/base.zs @@ -711,6 +711,8 @@ struct LevelLocals native native play int ExecuteSpecial(int special, Actor activator, line linedef, bool lineside, int arg1 = 0, int arg2 = 0, int arg3 = 0, int arg4 = 0, int arg5 = 0); native void GiveSecret(Actor activator, bool printmsg = true, bool playsound = true); native void StartSlideshow(Name whichone = 'none'); + native static void MakeScreenShot(); + native static void MakeAutoSave(); native void WorldDone(); deprecated("3.8") static void RemoveAllBots(bool fromlist) { /* intentionally left as no-op. */ } native ui Vector2 GetAutomapPosition();