mirror of
https://github.com/IntQuant/noita_entangled_worlds.git
synced 2025-10-19 07:03:16 +00:00
Persistent flags sync
This commit is contained in:
parent
ba7a2abb56
commit
e1145706e0
9 changed files with 77 additions and 2 deletions
|
@ -123,6 +123,22 @@ impl ModmanagerSettings {
|
|||
path.push("quant.ew");
|
||||
path
|
||||
}
|
||||
|
||||
pub fn get_progress(&self) -> Option<Vec<String>> {
|
||||
let flags_path = self
|
||||
.game_save_path
|
||||
.as_ref()?
|
||||
.join("save00/persistent/flags/");
|
||||
Some(
|
||||
fs::read_dir(&flags_path)
|
||||
.inspect_err(|e| warn!("Could not read progress: read_dir failed: {e}"))
|
||||
.ok()?
|
||||
.filter_map(|entry| entry.ok())
|
||||
.filter_map(|entry| entry.file_name().into_string().ok())
|
||||
.collect(),
|
||||
)
|
||||
.inspect(|progress: &Vec<String>| info!("Found {} progress entries", progress.len()))
|
||||
}
|
||||
}
|
||||
|
||||
impl Modmanager {
|
||||
|
|
|
@ -68,6 +68,7 @@ pub struct GameSettings {
|
|||
game_mode: GameMode,
|
||||
friendly_fire: bool,
|
||||
enemy_sync_interval: u32,
|
||||
progress: Vec<String>,
|
||||
}
|
||||
|
||||
impl Default for GameSettings {
|
||||
|
@ -85,6 +86,7 @@ impl Default for GameSettings {
|
|||
game_mode: GameMode::SharedHealth,
|
||||
friendly_fire: false,
|
||||
enemy_sync_interval: 2,
|
||||
progress: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -392,6 +394,7 @@ impl App {
|
|||
} else {
|
||||
info!("Using constant seed: {}", settings.seed);
|
||||
}
|
||||
settings.progress = self.modmanager_settings.get_progress().unwrap_or_default();
|
||||
*netman.pending_settings.lock().unwrap() = settings.clone();
|
||||
netman.accept_local.store(true, Ordering::SeqCst);
|
||||
}
|
||||
|
|
|
@ -431,6 +431,8 @@ impl NetManager {
|
|||
state.try_ws_write_option("game_mode", settings.game_mode);
|
||||
state.try_ws_write_option("friendly_fire", settings.friendly_fire);
|
||||
state.try_ws_write_option("enemy_sync_interval", settings.enemy_sync_interval);
|
||||
let progress = settings.progress.join(",");
|
||||
state.try_ws_write_option("progress", progress.as_str());
|
||||
|
||||
state.try_ws_write(ws_encode_proxy("ready", ""));
|
||||
// TODO? those are currently ignored by mod
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue