From 8b2d44d5740fa0b86f2af4536f5a80e41c77ba4a Mon Sep 17 00:00:00 2001 From: p11 Date: Fri, 18 Apr 2025 20:12:42 +0200 Subject: [PATCH] Updated how player settings are processed --- src/main.rs | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/main.rs b/src/main.rs index cd01850..c152bf5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,6 +19,7 @@ use data_stream::{ from_stream, to_stream, }; use dialog::parse_map; +use dialogi::DialogParameter; use header_config::parse_config; use maud::html; use percent_encoding::percent_decode_str; @@ -28,7 +29,7 @@ use threadpool::ThreadPool; mod request; use request::Request; use vn_settings::{ - ColorSettings, ImageSettings, LayoutSettings, Names, ObjectSettings, PlayerSettings, + ColorSettings, ImageSettings, LayoutSettings, Names, ObjectSettings, Parameter, PlayerSettings, SettingsContext, TimingSettings, }; @@ -604,6 +605,15 @@ fn handle_relative_connection( .unwrap_or_default(); if let Some(mut config_map) = config_map { + let mut player_settings = PlayerSettings { + colors: ColorSettings::common(), + timing: TimingSettings::common(), + images: ImageSettings::common(), + objects: ObjectSettings::common(), + layout: LayoutSettings::common(), + names: Names::new(), + }; + let mut layers = HashMap::new(); let keys: Vec<_> = config_map.keys().cloned().collect(); @@ -629,6 +639,13 @@ fn handle_relative_connection( layers, }; + for (key, value) in config_map { + if let Some(parameter) = Parameter::create(&key, &mut settings_context) { + let setter = parameter.value_setter(&value, &settings_context); + player_settings.set_character_default(setter); + } + } + let Ok(dialogs) = parse_map(file_paths.pk, &mut settings_context) else { fail(stream); return; @@ -637,15 +654,6 @@ fn handle_relative_connection( let mut sections = Vec::new(); for dialog_sequence in dialogs { - let mut player_settings = PlayerSettings { - colors: ColorSettings::common(), - timing: TimingSettings::common(), - images: ImageSettings::common(), - objects: ObjectSettings::common(), - layout: LayoutSettings::common(), - names: Names::new(), - }; - let changes = &dialog_sequence.changes; let mut states = HashMap::new(); for parameter in changes.keys() { @@ -693,6 +701,8 @@ fn handle_relative_connection( sections.push(section_html); } + + player_settings.reset(); } let html = html! {