Option to only show the preview when a screenshot is saved

Enabled by default, the idea is that the less tech savy players won't bother changing the option to false and end up reporting that they lost screenshots after changing states
This commit is contained in:
Lasercar
2025-03-24 17:32:49 -04:00
committed by Cameron Taylor
parent e30e6ee4ed
commit 8fcd145d53
4 changed files with 44 additions and 17 deletions
+19
View File
@@ -276,6 +276,25 @@ class Preferences
return value;
}
/**
* If enabled, the game will show the preview only after a screenshot is saved.
* @default `true`
*/
public static var previewOnSave(get, set):Bool;
static function get_previewOnSave():Bool
{
return Save?.instance?.options?.screenshot?.previewOnSave ?? true;
}
static function set_previewOnSave(value:Bool):Bool
{
var save:Save = Save.instance;
save.options.screenshot.previewOnSave = value;
save.flush();
return value;
}
/**
* The game will save any screenshots taken to this format.
* @default `PNG`
+3
View File
@@ -111,6 +111,7 @@ class Save
{
shouldHideMouse: true,
fancyPreview: true,
previewOnSave: true,
saveFormat: 'PNG',
jpegQuality: 80,
},
@@ -1400,6 +1401,7 @@ typedef SaveDataOptions =
* Screenshot options
* @param shouldHideMouse Should the mouse be hidden when taking a screenshot? Default: `true`
* @param fancyPreview Show a fancy preview? Default: `true`
* @param previewOnSave Only show the fancy preview after a screenshot is saved? Default: `true`
* @param saveFormat The save format of the screenshot, PNG or JPEG. Default: `PNG`
* @param jpegQuality The JPEG Quality, if we're saving to the format. Default: `80`
*/
@@ -1407,6 +1409,7 @@ typedef SaveDataOptions =
{
var shouldHideMouse:Bool;
var fancyPreview:Bool;
var previewOnSave:Bool;
var saveFormat:String;
var jpegQuality:Int;
};
+16 -13
View File
@@ -119,19 +119,6 @@ class PreferencesMenu extends Page
Preferences.autoFullscreen = value;
}, Preferences.autoFullscreen);
createPrefItemCheckbox('Hide Mouse', 'Enable to hide the mouse when taking a screenshot', function(value:Bool):Void {
Preferences.shouldHideMouse = value;
}, Preferences.shouldHideMouse);
createPrefItemCheckbox('Fancy Preview', 'Enable to show a preview after taking a screenshot', function(value:Bool):Void {
Preferences.fancyPreview = value;
}, Preferences.fancyPreview);
createPrefItemEnum('Save Format', 'Save screenshots to this format', ['PNG' => 'PNG', 'JPEG' => 'JPEG'], function(value:String):Void {
Preferences.saveFormat = value;
}, Preferences.saveFormat);
createPrefItemNumber('JPEG Quality', 'The quality of JPEG screenshots', function(value:Float) {
Preferences.jpegQuality = Std.int(value);
}, null, Preferences.jpegQuality, 0, 100, 5, 0);
#if web
createPrefItemCheckbox('Unlocked Framerate', 'Enable to unlock the framerate', function(value:Bool):Void {
Preferences.unlockedFramerate = value;
@@ -141,6 +128,22 @@ class PreferencesMenu extends Page
Preferences.framerate = Std.int(value);
}, null, Preferences.framerate, 30, 300, 5, 0);
#end
createPrefItemCheckbox('Hide Mouse', 'Enable to hide the mouse when taking a screenshot', function(value:Bool):Void {
Preferences.shouldHideMouse = value;
}, Preferences.shouldHideMouse);
createPrefItemCheckbox('Fancy Preview', 'Enable to show a preview after taking a screenshot', function(value:Bool):Void {
Preferences.fancyPreview = value;
}, Preferences.fancyPreview);
createPrefItemCheckbox('Preview on save', 'Enable to have the preview show only after a screenshot is saved', function(value:Bool):Void {
Preferences.previewOnSave = value;
}, Preferences.previewOnSave);
createPrefItemEnum('Save Format', 'Save screenshots to this format', ['PNG' => 'PNG', 'JPEG' => 'JPEG'], function(value:String):Void {
Preferences.saveFormat = value;
}, Preferences.saveFormat);
createPrefItemNumber('JPEG Quality', 'The quality of JPEG screenshots', function(value:Float) {
Preferences.jpegQuality = Std.int(value);
}, null, Preferences.jpegQuality, 0, 100, 5, 0);
}
override function update(elapsed:Float):Void
@@ -289,7 +289,7 @@ class ScreenshotPlugin extends FlxBasic
else
throw "You've tried taking more than 100 screenshots at a time. Give the game a funkin break! Jeez. If you wanted those screenshots, well too bad!";
showCaptureFeedback();
showFancyPreview(shot);
if (!Preferences.previewOnSave) showFancyPreview(shot);
if (wasMouseHidden && !FlxG.mouse.visible && Preferences.flashingLights) // Just in case
{
wasMouseHidden = false;
@@ -301,7 +301,7 @@ class ScreenshotPlugin extends FlxBasic
saveScreenshot(shot, 'screenshot-${DateUtil.generateTimestamp()}', 1);
// Show some feedback.
showCaptureFeedback();
showFancyPreview(shot);
if (!Preferences.previewOnSave) showFancyPreview(shot);
if (wasMouseHidden && !FlxG.mouse.visible)
{
wasMouseHidden = false;
@@ -422,6 +422,7 @@ class ScreenshotPlugin extends FlxBasic
{
trace('Saving screenshot to: ' + targetPath);
FileUtil.writeBytesToPath(targetPath, pngData);
if (Preferences.previewOnSave) showFancyPreview(bitmap); // Only show the preview after a screenshot is saved
}
});
}
@@ -440,7 +441,8 @@ class ScreenshotPlugin extends FlxBasic
i++;
}, 1);
getCurrentState().add(asyncLoop);
if (!Preferences.flashingLights) showFancyPreview(screenshots[screenshots.length - 1]); // show the preview for the last screenshot
if (!Preferences.flashingLights && !Preferences.previewOnSave)
showFancyPreview(screenshots[screenshots.length - 1]); // show the preview for the last screenshot
}
public function returnEncoder(saveFormat:String):Any
@@ -448,7 +450,7 @@ class ScreenshotPlugin extends FlxBasic
return switch (saveFormat)
{
// JPEG encoder causes the game to crash?????
// case "JPEG": new openfl.display.JPEGEncoderOptions();
// case "JPEG": new openfl.display.JPEGEncoderOptions(Preferences.jpegQuality);
default: new openfl.display.PNGEncoderOptions();
}
}