Updated how player settings are processed

This commit is contained in:
p11 2025-04-18 20:12:42 +02:00
parent b89b1c3767
commit 8b2d44d574

View File

@ -19,6 +19,7 @@ use data_stream::{
from_stream, to_stream, from_stream, to_stream,
}; };
use dialog::parse_map; use dialog::parse_map;
use dialogi::DialogParameter;
use header_config::parse_config; use header_config::parse_config;
use maud::html; use maud::html;
use percent_encoding::percent_decode_str; use percent_encoding::percent_decode_str;
@ -28,7 +29,7 @@ use threadpool::ThreadPool;
mod request; mod request;
use request::Request; use request::Request;
use vn_settings::{ use vn_settings::{
ColorSettings, ImageSettings, LayoutSettings, Names, ObjectSettings, PlayerSettings, ColorSettings, ImageSettings, LayoutSettings, Names, ObjectSettings, Parameter, PlayerSettings,
SettingsContext, TimingSettings, SettingsContext, TimingSettings,
}; };
@ -604,6 +605,15 @@ fn handle_relative_connection(
.unwrap_or_default(); .unwrap_or_default();
if let Some(mut config_map) = config_map { 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 mut layers = HashMap::new();
let keys: Vec<_> = config_map.keys().cloned().collect(); let keys: Vec<_> = config_map.keys().cloned().collect();
@ -629,6 +639,13 @@ fn handle_relative_connection(
layers, 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 { let Ok(dialogs) = parse_map(file_paths.pk, &mut settings_context) else {
fail(stream); fail(stream);
return; return;
@ -637,15 +654,6 @@ fn handle_relative_connection(
let mut sections = Vec::new(); let mut sections = Vec::new();
for dialog_sequence in dialogs { 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 changes = &dialog_sequence.changes;
let mut states = HashMap::new(); let mut states = HashMap::new();
for parameter in changes.keys() { for parameter in changes.keys() {
@ -693,6 +701,8 @@ fn handle_relative_connection(
sections.push(section_html); sections.push(section_html);
} }
player_settings.reset();
} }
let html = html! { let html = html! {