Added new options to the fps unlocker

This commit is contained in:
Observer KRypt0n_ 2022-12-21 17:31:45 +02:00
parent 219bac46f1
commit 7d91714d30
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2
7 changed files with 62 additions and 19 deletions

2
Cargo.lock generated
View file

@ -31,7 +31,7 @@ dependencies = [
[[package]] [[package]]
name = "anime-game-core" name = "anime-game-core"
version = "1.3.0" version = "1.3.1"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bzip2", "bzip2",

@ -1 +1 @@
Subproject commit f6e64a259f438ec34db1e987779f3fa9d700d38c Subproject commit 12daa5b81916f4a9cd34e68d8347a64459aeac3f

View file

@ -122,14 +122,34 @@ Adw.PreferencesPage page {
} }
Adw.ActionRow { Adw.ActionRow {
title: "Fullscreen"; title: "Monitor";
subtitle: "Open game window in fullscreen mode"; subtitle: "Number of monitor you want to run the game on";
Gtk.Switch fps_unlocker_fullscreen_switcher { Gtk.SpinButton fps_unlocker_monitor_num {
valign: center; valign: center;
adjustment: Gtk.Adjustment {
value: 1;
lower: 1;
upper: 10;
page-increment: 1;
step-increment: 1;
};
} }
} }
Adw.ComboRow fps_unlocker_window_mode_combo {
title: "Window mode";
model: Gtk.StringList {
strings [
"Default",
"Popup",
"Fullscreen"
]
};
}
Adw.ComboRow fps_unlocker_priority_combo { Adw.ComboRow fps_unlocker_priority_combo {
title: "Priority"; title: "Priority";
subtitle: "Game process priority"; subtitle: "Game process priority";

@ -1 +1 @@
Subproject commit 00a31d87bbac71133a7080a027e02371b511bdef Subproject commit 039d88ab45001cf799c421e58d4669a0596c4d29

View file

@ -11,7 +11,8 @@ pub mod prelude {
pub struct Config { pub struct Config {
pub fps: u64, pub fps: u64,
pub power_saving: bool, pub power_saving: bool,
pub fullscreen: bool, pub monitor: u64,
pub window_mode: u64,
pub priority: u64 pub priority: u64
} }
@ -20,7 +21,8 @@ impl Default for Config {
Self { Self {
fps: 120, fps: 120,
power_saving: false, power_saving: false,
fullscreen: false, monitor: 1,
window_mode: 0,
priority: 3 priority: 3
} }
} }
@ -41,9 +43,14 @@ impl From<&JsonValue> for Config {
None => default.power_saving None => default.power_saving
}, },
fullscreen: match value.get("fullscreen") { monitor: match value.get("monitor") {
Some(value) => value.as_bool().unwrap_or(default.fullscreen), Some(value) => value.as_u64().unwrap_or(default.monitor),
None => default.fullscreen None => default.monitor
},
window_mode: match value.get("window_mode") {
Some(value) => value.as_u64().unwrap_or(default.window_mode),
None => default.window_mode
}, },
priority: match value.get("priority") { priority: match value.get("priority") {

View file

@ -53,7 +53,9 @@ impl ConfigSchema {
Self { Self {
FPSTarget: config.fps, FPSTarget: config.fps,
UsePowerSave: config.power_saving, UsePowerSave: config.power_saving,
Fullscreen: config.fullscreen, PopupWindow: config.window_mode == 1,
Fullscreen: config.window_mode == 2,
MonitorNum: config.monitor,
Priority: config.priority, Priority: config.priority,
..Self::default() ..Self::default()

View file

@ -43,7 +43,8 @@ pub struct AppWidgets {
pub fps_unlocker_combo: adw::ComboRow, pub fps_unlocker_combo: adw::ComboRow,
pub fps_unlocker_switcher: gtk::Switch, pub fps_unlocker_switcher: gtk::Switch,
pub fps_unlocker_power_saving_switcher: gtk::Switch, pub fps_unlocker_power_saving_switcher: gtk::Switch,
pub fps_unlocker_fullscreen_switcher: gtk::Switch, pub fps_unlocker_monitor_num: gtk::SpinButton,
pub fps_unlocker_window_mode_combo: adw::ComboRow,
pub fps_unlocker_priority_combo: adw::ComboRow pub fps_unlocker_priority_combo: adw::ComboRow
} }
@ -76,7 +77,8 @@ impl AppWidgets {
fps_unlocker_combo: get_object(&builder, "fps_unlocker_combo")?, fps_unlocker_combo: get_object(&builder, "fps_unlocker_combo")?,
fps_unlocker_switcher: get_object(&builder, "fps_unlocker_switcher")?, fps_unlocker_switcher: get_object(&builder, "fps_unlocker_switcher")?,
fps_unlocker_power_saving_switcher: get_object(&builder, "fps_unlocker_power_saving_switcher")?, fps_unlocker_power_saving_switcher: get_object(&builder, "fps_unlocker_power_saving_switcher")?,
fps_unlocker_fullscreen_switcher: get_object(&builder, "fps_unlocker_fullscreen_switcher")?, fps_unlocker_monitor_num: get_object(&builder, "fps_unlocker_monitor_num")?,
fps_unlocker_window_mode_combo: get_object(&builder, "fps_unlocker_window_mode_combo")?,
fps_unlocker_priority_combo: get_object(&builder, "fps_unlocker_priority_combo")? fps_unlocker_priority_combo: get_object(&builder, "fps_unlocker_priority_combo")?
}; };
@ -271,10 +273,19 @@ impl App {
} }
}); });
// FPS unlocker -> fullscreen swithing // FPS unlocker -> monitor number
self.widgets.fps_unlocker_fullscreen_switcher.connect_state_notify(move |switch| { self.widgets.fps_unlocker_monitor_num.connect_changed(move |button| {
if let Ok(mut config) = config::get() { if let Ok(mut config) = config::get() {
config.game.enhancements.fps_unlocker.config.fullscreen = switch.state(); config.game.enhancements.fps_unlocker.config.monitor = button.value() as u64;
config::update(config);
}
});
// FPS unlocker -> window mode combo
self.widgets.fps_unlocker_window_mode_combo.connect_selected_notify(move |row| {
if let Ok(mut config) = config::get() {
config.game.enhancements.fps_unlocker.config.window_mode = row.selected() as u64;
config::update(config); config::update(config);
} }
@ -371,8 +382,11 @@ impl App {
// Switch FPS unlocker -> power saving // Switch FPS unlocker -> power saving
self.widgets.fps_unlocker_power_saving_switcher.set_state(config.game.enhancements.fps_unlocker.config.power_saving); self.widgets.fps_unlocker_power_saving_switcher.set_state(config.game.enhancements.fps_unlocker.config.power_saving);
// Switch FPS unlocker -> fullscreen // Switch FPS unlocker -> monitor number
self.widgets.fps_unlocker_fullscreen_switcher.set_state(config.game.enhancements.fps_unlocker.config.fullscreen); self.widgets.fps_unlocker_monitor_num.set_value(config.game.enhancements.fps_unlocker.config.monitor as f64);
// Switch FPS unlocker -> window mode
self.widgets.fps_unlocker_window_mode_combo.set_selected(config.game.enhancements.fps_unlocker.config.window_mode as u32);
// Switch FPS unlocker -> priority // Switch FPS unlocker -> priority
self.widgets.fps_unlocker_priority_combo.set_selected(config.game.enhancements.fps_unlocker.config.priority as u32); self.widgets.fps_unlocker_priority_combo.set_selected(config.game.enhancements.fps_unlocker.config.priority as u32);