sitch to bevy_persistent to allow two clients
bevy_pkv was holding a file lock to prevent that
This commit is contained in:
98
Cargo.lock
generated
98
Cargo.lock
generated
@@ -512,6 +512,19 @@ dependencies = [
|
|||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bevy-persistent"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e58d92d32bb99fa22ed46aeabe5212f5d1bc8952ebf9c49b5271fc06a1359f8"
|
||||||
|
dependencies = [
|
||||||
|
"bevy",
|
||||||
|
"gloo-storage",
|
||||||
|
"ron 0.11.0",
|
||||||
|
"serde",
|
||||||
|
"thiserror 2.0.17",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bevy-steamworks"
|
name = "bevy-steamworks"
|
||||||
version = "0.15.0"
|
version = "0.15.0"
|
||||||
@@ -1359,25 +1372,6 @@ dependencies = [
|
|||||||
"uuid",
|
"uuid",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "bevy_pkv"
|
|
||||||
version = "0.14.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "356a9c6fdc13faf7897103b43a8b84aafe24e1bbf1599df1fb00dc4e9b7055db"
|
|
||||||
dependencies = [
|
|
||||||
"bevy_app",
|
|
||||||
"bevy_ecs",
|
|
||||||
"cfg_aliases",
|
|
||||||
"directories",
|
|
||||||
"redb",
|
|
||||||
"rmp-serde",
|
|
||||||
"serde",
|
|
||||||
"serde_json",
|
|
||||||
"thiserror 2.0.17",
|
|
||||||
"wasm-bindgen",
|
|
||||||
"web-sys",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bevy_platform"
|
name = "bevy_platform"
|
||||||
version = "0.17.3"
|
version = "0.17.3"
|
||||||
@@ -2781,10 +2775,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "11277822c27bde750de02c5dc5159b91e88bf2661a2c1d98106f2fb1c5c6f590"
|
checksum = "11277822c27bde750de02c5dc5159b91e88bf2661a2c1d98106f2fb1c5c6f590"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "directories"
|
name = "dirs"
|
||||||
version = "6.0.0"
|
version = "6.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d"
|
checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dirs-sys",
|
"dirs-sys",
|
||||||
]
|
]
|
||||||
@@ -3473,6 +3467,34 @@ version = "0.3.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
|
checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gloo-storage"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a"
|
||||||
|
dependencies = [
|
||||||
|
"gloo-utils",
|
||||||
|
"js-sys",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"thiserror 1.0.69",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"web-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "gloo-utils"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
|
||||||
|
dependencies = [
|
||||||
|
"js-sys",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"web-sys",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glow"
|
name = "glow"
|
||||||
version = "0.16.0"
|
version = "0.16.0"
|
||||||
@@ -3681,18 +3703,19 @@ dependencies = [
|
|||||||
"avian3d",
|
"avian3d",
|
||||||
"bevy",
|
"bevy",
|
||||||
"bevy-inspector-egui",
|
"bevy-inspector-egui",
|
||||||
|
"bevy-persistent",
|
||||||
"bevy-steamworks",
|
"bevy-steamworks",
|
||||||
"bevy_asset_loader",
|
"bevy_asset_loader",
|
||||||
"bevy_ballistic",
|
"bevy_ballistic",
|
||||||
"bevy_common_assets",
|
"bevy_common_assets",
|
||||||
"bevy_debug_log",
|
"bevy_debug_log",
|
||||||
"bevy_pkv",
|
|
||||||
"bevy_replicon",
|
"bevy_replicon",
|
||||||
"bevy_replicon_renet",
|
"bevy_replicon_renet",
|
||||||
"bevy_sprite3d",
|
"bevy_sprite3d",
|
||||||
"bevy_trenchbroom",
|
"bevy_trenchbroom",
|
||||||
"bevy_trenchbroom_avian",
|
"bevy_trenchbroom_avian",
|
||||||
"clap",
|
"clap",
|
||||||
|
"dirs",
|
||||||
"happy_feet",
|
"happy_feet",
|
||||||
"nil 0.14.0",
|
"nil 0.14.0",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
@@ -5459,15 +5482,6 @@ version = "0.4.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb"
|
checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "redb"
|
|
||||||
version = "3.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae323eb086579a3769daa2c753bb96deb95993c534711e0dbe881b5192906a06"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_syscall"
|
name = "redox_syscall"
|
||||||
version = "0.4.1"
|
version = "0.4.1"
|
||||||
@@ -5587,28 +5601,6 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rmp"
|
|
||||||
version = "0.8.14"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
|
|
||||||
dependencies = [
|
|
||||||
"byteorder",
|
|
||||||
"num-traits",
|
|
||||||
"paste",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rmp-serde"
|
|
||||||
version = "1.3.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
|
|
||||||
dependencies = [
|
|
||||||
"byteorder",
|
|
||||||
"rmp",
|
|
||||||
"serde",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "robust"
|
name = "robust"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
|
|||||||
@@ -51,15 +51,12 @@ bevy = { version = "0.17.0", default-features = false, features = [
|
|||||||
"track_location",
|
"track_location",
|
||||||
] }
|
] }
|
||||||
bevy-inspector-egui = "0.34"
|
bevy-inspector-egui = "0.34"
|
||||||
|
bevy-persistent = { version = "0.9", features = ["ron"] }
|
||||||
bevy-steamworks = "0.15.0"
|
bevy-steamworks = "0.15.0"
|
||||||
bevy_asset_loader = "=0.24.0-rc.1"
|
bevy_asset_loader = "=0.24.0-rc.1"
|
||||||
bevy_ballistic = { git = "https://github.com/rustunit/bevy_ballistic.git", rev = "b08ffec" }
|
bevy_ballistic = { git = "https://github.com/rustunit/bevy_ballistic.git", rev = "b08ffec" }
|
||||||
bevy_common_assets = { version = "0.14.0", features = ["ron"] }
|
bevy_common_assets = { version = "0.14.0", features = ["ron"] }
|
||||||
bevy_debug_log = { git = "https://github.com/rustunit/bevy_debug_log.git", rev = "86051a0" }
|
bevy_debug_log = { git = "https://github.com/rustunit/bevy_debug_log.git", rev = "86051a0" }
|
||||||
bevy_pkv = { version = "0.14", default-features = false, features = [
|
|
||||||
"bevy",
|
|
||||||
"redb",
|
|
||||||
] }
|
|
||||||
bevy_replicon = "0.37.1"
|
bevy_replicon = "0.37.1"
|
||||||
# TODO: i dont think we need this in dedicated server mode
|
# TODO: i dont think we need this in dedicated server mode
|
||||||
bevy_replicon_renet = { version = "0.13.0", features = ["renet_steam"] }
|
bevy_replicon_renet = { version = "0.13.0", features = ["renet_steam"] }
|
||||||
@@ -69,6 +66,7 @@ bevy_trenchbroom = { version = "0.10", default-features = false, features = [
|
|||||||
] }
|
] }
|
||||||
bevy_trenchbroom_avian = "0.10"
|
bevy_trenchbroom_avian = "0.10"
|
||||||
clap = { version = "=4.5.47", features = ["derive"] }
|
clap = { version = "=4.5.47", features = ["derive"] }
|
||||||
|
dirs = "6.0.0"
|
||||||
happy_feet = { git = "https://github.com/rustunit/happy_feet.git", rev = "919657fa", features = [
|
happy_feet = { git = "https://github.com/rustunit/happy_feet.git", rev = "919657fa", features = [
|
||||||
"serde",
|
"serde",
|
||||||
] }
|
] }
|
||||||
|
|||||||
@@ -26,18 +26,19 @@ dbg = ["avian3d/debug-plugin", "bevy/debug", "dep:bevy-inspector-egui"]
|
|||||||
avian3d = { workspace = true }
|
avian3d = { workspace = true }
|
||||||
bevy = { workspace = true }
|
bevy = { workspace = true }
|
||||||
bevy-inspector-egui = { workspace = true, optional = true }
|
bevy-inspector-egui = { workspace = true, optional = true }
|
||||||
|
bevy-persistent = { workspace = true }
|
||||||
bevy-steamworks = { workspace = true }
|
bevy-steamworks = { workspace = true }
|
||||||
bevy_asset_loader = { workspace = true }
|
bevy_asset_loader = { workspace = true }
|
||||||
bevy_ballistic = { workspace = true }
|
bevy_ballistic = { workspace = true }
|
||||||
bevy_common_assets = { workspace = true }
|
bevy_common_assets = { workspace = true }
|
||||||
bevy_debug_log = { workspace = true }
|
bevy_debug_log = { workspace = true }
|
||||||
bevy_pkv = { workspace = true }
|
|
||||||
bevy_replicon = { workspace = true }
|
bevy_replicon = { workspace = true }
|
||||||
bevy_replicon_renet = { workspace = true }
|
bevy_replicon_renet = { workspace = true }
|
||||||
bevy_sprite3d = { workspace = true }
|
bevy_sprite3d = { workspace = true }
|
||||||
bevy_trenchbroom = { workspace = true }
|
bevy_trenchbroom = { workspace = true }
|
||||||
bevy_trenchbroom_avian = { workspace = true }
|
bevy_trenchbroom_avian = { workspace = true }
|
||||||
clap = { workspace = true }
|
clap = { workspace = true }
|
||||||
|
dirs = { workspace = true }
|
||||||
happy_feet = { workspace = true }
|
happy_feet = { workspace = true }
|
||||||
nil = { workspace = true }
|
nil = { workspace = true }
|
||||||
rand = { workspace = true }
|
rand = { workspace = true }
|
||||||
|
|||||||
@@ -1,19 +1,30 @@
|
|||||||
use bevy::prelude::*;
|
|
||||||
use bevy_pkv::prelude::*;
|
|
||||||
|
|
||||||
use crate::{client::audio::SoundSettings, utils::Debounce};
|
use crate::{client::audio::SoundSettings, utils::Debounce};
|
||||||
|
use bevy::prelude::*;
|
||||||
|
use bevy_persistent::{Persistent, StorageFormat};
|
||||||
|
|
||||||
pub fn plugin(app: &mut App) {
|
pub fn plugin(app: &mut App) {
|
||||||
#[cfg(not(feature = "dbg"))]
|
app.insert_resource(
|
||||||
app.insert_resource(PkvStore::new("Rustunit", "HEDZ"));
|
Persistent::<SoundSettings>::builder()
|
||||||
|
.name("audio")
|
||||||
|
.format(StorageFormat::Ron)
|
||||||
|
.path(
|
||||||
|
dirs::config_dir()
|
||||||
|
.unwrap()
|
||||||
|
.join("com.rustunit.hedzreloaded")
|
||||||
|
.join("audio.ron"),
|
||||||
|
)
|
||||||
|
.default(SoundSettings::default())
|
||||||
|
.build()
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
|
||||||
app.add_systems(Update, persist_settings.run_if(resource_exists::<PkvStore>));
|
app.add_systems(Update, persist_settings);
|
||||||
app.add_systems(Startup, load_settings.run_if(resource_exists::<PkvStore>));
|
app.add_systems(Startup, load_settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn persist_settings(
|
fn persist_settings(
|
||||||
settings: Res<SoundSettings>,
|
settings: Res<SoundSettings>,
|
||||||
mut pkv: ResMut<PkvStore>,
|
mut persistent: ResMut<Persistent<SoundSettings>>,
|
||||||
mut debounce: Debounce<1000>,
|
mut debounce: Debounce<1000>,
|
||||||
) -> Result {
|
) -> Result {
|
||||||
if settings.is_changed() {
|
if settings.is_changed() {
|
||||||
@@ -21,16 +32,12 @@ fn persist_settings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if debounce.finished() {
|
if debounce.finished() {
|
||||||
pkv.set("audio", &*settings)?;
|
persistent.set(*settings)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_settings(mut settings: ResMut<SoundSettings>, pkv: Res<PkvStore>) -> Result {
|
fn load_settings(persistent: Res<Persistent<SoundSettings>>, mut settings: ResMut<SoundSettings>) {
|
||||||
if let Ok(loaded) = pkv.get::<SoundSettings>("audio") {
|
*settings = *persistent.get();
|
||||||
*settings = loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user