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