subtr_actor/stats/calculators/
settings.rs1use super::*;
2
3#[derive(Debug, Clone, Default, PartialEq)]
4pub struct PlayerSettings {
5 pub steering_sensitivity: Option<f32>,
6 pub camera_fov: Option<f32>,
7 pub camera_height: Option<f32>,
8 pub camera_pitch: Option<f32>,
9 pub camera_distance: Option<f32>,
10 pub camera_stiffness: Option<f32>,
11 pub camera_swivel_speed: Option<f32>,
12 pub camera_transition_speed: Option<f32>,
13}
14
15#[derive(Debug, Clone, Default, PartialEq)]
16pub struct SettingsCalculator {
17 player_settings: HashMap<PlayerId, PlayerSettings>,
18}
19
20impl SettingsCalculator {
21 pub fn new() -> Self {
22 Self::default()
23 }
24
25 pub fn player_settings(&self) -> &HashMap<PlayerId, PlayerSettings> {
26 &self.player_settings
27 }
28
29 pub fn apply_replay_meta(&mut self, meta: &ReplayMeta) -> SubtrActorResult<()> {
30 for player in meta.player_order() {
31 let Some(stats) = &player.stats else {
32 continue;
33 };
34 self.player_settings.insert(
35 player.remote_id.clone(),
36 PlayerSettings {
37 steering_sensitivity: get_header_f32(
38 stats,
39 &["SteeringSensitivity", "SteerSensitivity"],
40 ),
41 camera_fov: get_header_f32(stats, &["CameraFOV"]),
42 camera_height: get_header_f32(stats, &["CameraHeight"]),
43 camera_pitch: get_header_f32(stats, &["CameraPitch"]),
44 camera_distance: get_header_f32(stats, &["CameraDistance"]),
45 camera_stiffness: get_header_f32(stats, &["CameraStiffness"]),
46 camera_swivel_speed: get_header_f32(stats, &["CameraSwivelSpeed"]),
47 camera_transition_speed: get_header_f32(stats, &["CameraTransitionSpeed"]),
48 },
49 );
50 }
51 Ok(())
52 }
53
54 pub fn update(&mut self) -> SubtrActorResult<()> {
55 Ok(())
56 }
57}