Use helpers of updated vn-settings for settings initialization
This commit is contained in:
parent
9b5fb1de0d
commit
dced55dcbe
5
Cargo.lock
generated
5
Cargo.lock
generated
@ -259,10 +259,11 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
|
||||
|
||||
[[package]]
|
||||
name = "vn-settings"
|
||||
version = "0.1.0"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f799fd65b2bf363a1c70c8dce20b9ea2e2e594173dd9bcd5475dd257b0e0b44a"
|
||||
checksum = "e3c5bd91cb7361d8d179deacf6e9b927a45a1e31c7f9c29555a49be81506381a"
|
||||
dependencies = [
|
||||
"dialogi",
|
||||
"indexmap",
|
||||
"simple-color",
|
||||
]
|
||||
|
||||
@ -9,7 +9,7 @@ maud = "0.27.0"
|
||||
pukram2html = "0.3.0"
|
||||
data-stream = "0.3.0"
|
||||
dialogi = "0.3.1"
|
||||
vn-settings = "0.1.0"
|
||||
vn-settings = "0.1.1"
|
||||
threadpool = "1.8.1"
|
||||
header-config = "0.1.5"
|
||||
indexmap = "2.9.0"
|
||||
|
||||
62
src/vn.rs
62
src/vn.rs
@ -1,13 +1,9 @@
|
||||
use std::{collections::HashMap, io::prelude::*, net::TcpStream, path::Path};
|
||||
|
||||
use dialogi::DialogParameter;
|
||||
use indexmap::IndexMap;
|
||||
use maud::{Markup, html};
|
||||
use pukram2html::convert_subheader;
|
||||
use vn_settings::{
|
||||
Change, ColorSettings, ImageSettings, LayoutSettings, Names, ObjectSettings, Parameter,
|
||||
PlayerSettings, SettingsContext, TimingSettings,
|
||||
};
|
||||
use vn_settings::{Change, Parameter, PlayerSettings, SettingsContext, extract_layers};
|
||||
|
||||
use crate::dialog::parse_map;
|
||||
|
||||
@ -280,22 +276,11 @@ pub fn render_novel(
|
||||
stream: &mut TcpStream,
|
||||
start_level: usize,
|
||||
) -> Result<(), dialogi::ParsingError> {
|
||||
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 settings_context = SettingsContext::new();
|
||||
extract_layers(&mut settings_context.layers, &mut config_map);
|
||||
|
||||
let layers = process_layers(&mut config_map);
|
||||
let mut settings_context = SettingsContext {
|
||||
object_cache: HashMap::new(),
|
||||
layers,
|
||||
};
|
||||
|
||||
apply_config_settings(&mut config_map, &mut settings_context, &mut player_settings);
|
||||
let mut player_settings = PlayerSettings::common();
|
||||
player_settings.extract_settings(&mut settings_context, &mut config_map);
|
||||
|
||||
let dialogs = parse_map(pk_path, &mut settings_context)?;
|
||||
let (scenes, sections) = process_dialogs(dialogs, &mut player_settings, start_level);
|
||||
@ -306,43 +291,6 @@ pub fn render_novel(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn process_layers(config_map: &mut IndexMap<Box<str>, Box<str>>) -> HashMap<Box<str>, usize> {
|
||||
let mut layers = HashMap::new();
|
||||
|
||||
let keys: Vec<_> = config_map.keys().cloned().collect();
|
||||
for key in keys {
|
||||
let Some(("Layer", name)) = key.split_once(':') else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let value = config_map.shift_remove(&key).expect("Invalid layer");
|
||||
if !value.is_empty() {
|
||||
eprintln!("Layers don't accept arguments!");
|
||||
}
|
||||
layers.insert(name.into(), layers.len());
|
||||
}
|
||||
|
||||
if layers.is_empty() {
|
||||
layers.insert("Background".into(), 0);
|
||||
layers.insert("Character".into(), 1);
|
||||
}
|
||||
|
||||
layers
|
||||
}
|
||||
|
||||
fn apply_config_settings(
|
||||
config_map: &mut IndexMap<Box<str>, Box<str>>,
|
||||
context: &mut SettingsContext,
|
||||
settings: &mut PlayerSettings,
|
||||
) {
|
||||
for (key, value) in config_map.drain(..) {
|
||||
if let Some(parameter) = Parameter::create(&key, context) {
|
||||
let setter = parameter.value_setter(&value, context);
|
||||
settings.set_character_default(setter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn process_dialogs(
|
||||
dialogs: Vec<dialogi::DialogSequence<Change, Parameter>>,
|
||||
player_settings: &mut PlayerSettings,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user