150 lines
7.5 KiB
Rust
150 lines
7.5 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
use crate::{CalendarPoint, RuntimeState};
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct RuntimeSummary {
|
|
pub calendar: CalendarPoint,
|
|
pub calendar_projection_source: Option<String>,
|
|
pub calendar_projection_is_placeholder: bool,
|
|
pub world_flag_count: usize,
|
|
pub world_restore_selected_year_profile_lane: Option<u8>,
|
|
pub world_restore_campaign_scenario_enabled: Option<bool>,
|
|
pub world_restore_sandbox_enabled: Option<bool>,
|
|
pub world_restore_seed_tuple_written_from_raw_lane: Option<bool>,
|
|
pub world_restore_absolute_counter_requires_shell_context: Option<bool>,
|
|
pub world_restore_absolute_counter_reconstructible_from_save: Option<bool>,
|
|
pub world_restore_disable_cargo_economy_special_condition_slot: Option<u8>,
|
|
pub world_restore_disable_cargo_economy_special_condition_reconstructible_from_save:
|
|
Option<bool>,
|
|
pub world_restore_disable_cargo_economy_special_condition_write_side_grounded: Option<bool>,
|
|
pub world_restore_disable_cargo_economy_special_condition_enabled: Option<bool>,
|
|
pub world_restore_use_bio_accelerator_cars_enabled: Option<bool>,
|
|
pub world_restore_use_wartime_cargos_enabled: Option<bool>,
|
|
pub world_restore_disable_train_crashes_enabled: Option<bool>,
|
|
pub world_restore_disable_train_crashes_and_breakdowns_enabled: Option<bool>,
|
|
pub world_restore_ai_ignore_territories_at_startup_enabled: Option<bool>,
|
|
pub world_restore_absolute_counter_restore_kind: Option<String>,
|
|
pub world_restore_absolute_counter_adjustment_context: Option<String>,
|
|
pub metadata_count: usize,
|
|
pub company_count: usize,
|
|
pub event_runtime_record_count: usize,
|
|
pub candidate_availability_count: usize,
|
|
pub zero_candidate_availability_count: usize,
|
|
pub special_condition_count: usize,
|
|
pub enabled_special_condition_count: usize,
|
|
pub save_profile_kind: Option<String>,
|
|
pub save_profile_family: Option<String>,
|
|
pub save_profile_map_path: Option<String>,
|
|
pub save_profile_display_name: Option<String>,
|
|
pub save_profile_selected_year_profile_lane: Option<u8>,
|
|
pub save_profile_sandbox_enabled: Option<bool>,
|
|
pub save_profile_campaign_scenario_enabled: Option<bool>,
|
|
pub save_profile_staged_profile_copy_on_restore: Option<bool>,
|
|
pub total_event_record_service_count: u64,
|
|
pub periodic_boundary_call_count: u64,
|
|
pub total_trigger_dispatch_count: u64,
|
|
pub dirty_rerun_count: u64,
|
|
pub total_company_cash: i64,
|
|
}
|
|
|
|
impl RuntimeSummary {
|
|
pub fn from_state(state: &RuntimeState) -> Self {
|
|
Self {
|
|
calendar: state.calendar,
|
|
calendar_projection_source: state.metadata.get("save_slice.calendar_source").cloned(),
|
|
calendar_projection_is_placeholder: state
|
|
.metadata
|
|
.get("save_slice.calendar_source")
|
|
.is_some_and(|value| value == "default-1830-placeholder"),
|
|
world_flag_count: state.world_flags.len(),
|
|
world_restore_selected_year_profile_lane: state
|
|
.world_restore
|
|
.selected_year_profile_lane,
|
|
world_restore_campaign_scenario_enabled: state.world_restore.campaign_scenario_enabled,
|
|
world_restore_sandbox_enabled: state.world_restore.sandbox_enabled,
|
|
world_restore_seed_tuple_written_from_raw_lane: state
|
|
.world_restore
|
|
.seed_tuple_written_from_raw_lane,
|
|
world_restore_absolute_counter_requires_shell_context: state
|
|
.world_restore
|
|
.absolute_counter_requires_shell_context,
|
|
world_restore_absolute_counter_reconstructible_from_save: state
|
|
.world_restore
|
|
.absolute_counter_reconstructible_from_save,
|
|
world_restore_disable_cargo_economy_special_condition_slot: state
|
|
.world_restore
|
|
.disable_cargo_economy_special_condition_slot,
|
|
world_restore_disable_cargo_economy_special_condition_reconstructible_from_save: state
|
|
.world_restore
|
|
.disable_cargo_economy_special_condition_reconstructible_from_save,
|
|
world_restore_disable_cargo_economy_special_condition_write_side_grounded: state
|
|
.world_restore
|
|
.disable_cargo_economy_special_condition_write_side_grounded,
|
|
world_restore_disable_cargo_economy_special_condition_enabled: state
|
|
.world_restore
|
|
.disable_cargo_economy_special_condition_enabled,
|
|
world_restore_use_bio_accelerator_cars_enabled: state
|
|
.world_restore
|
|
.use_bio_accelerator_cars_enabled,
|
|
world_restore_use_wartime_cargos_enabled: state
|
|
.world_restore
|
|
.use_wartime_cargos_enabled,
|
|
world_restore_disable_train_crashes_enabled: state
|
|
.world_restore
|
|
.disable_train_crashes_enabled,
|
|
world_restore_disable_train_crashes_and_breakdowns_enabled: state
|
|
.world_restore
|
|
.disable_train_crashes_and_breakdowns_enabled,
|
|
world_restore_ai_ignore_territories_at_startup_enabled: state
|
|
.world_restore
|
|
.ai_ignore_territories_at_startup_enabled,
|
|
world_restore_absolute_counter_restore_kind: state
|
|
.world_restore
|
|
.absolute_counter_restore_kind
|
|
.clone(),
|
|
world_restore_absolute_counter_adjustment_context: state
|
|
.world_restore
|
|
.absolute_counter_adjustment_context
|
|
.clone(),
|
|
metadata_count: state.metadata.len(),
|
|
company_count: state.companies.len(),
|
|
event_runtime_record_count: state.event_runtime_records.len(),
|
|
candidate_availability_count: state.candidate_availability.len(),
|
|
zero_candidate_availability_count: state
|
|
.candidate_availability
|
|
.values()
|
|
.filter(|value| **value == 0)
|
|
.count(),
|
|
special_condition_count: state.special_conditions.len(),
|
|
enabled_special_condition_count: state
|
|
.special_conditions
|
|
.values()
|
|
.filter(|value| **value != 0)
|
|
.count(),
|
|
save_profile_kind: state.save_profile.profile_kind.clone(),
|
|
save_profile_family: state.save_profile.profile_family.clone(),
|
|
save_profile_map_path: state.save_profile.map_path.clone(),
|
|
save_profile_display_name: state.save_profile.display_name.clone(),
|
|
save_profile_selected_year_profile_lane: state.save_profile.selected_year_profile_lane,
|
|
save_profile_sandbox_enabled: state.save_profile.sandbox_enabled,
|
|
save_profile_campaign_scenario_enabled: state.save_profile.campaign_scenario_enabled,
|
|
save_profile_staged_profile_copy_on_restore: state
|
|
.save_profile
|
|
.staged_profile_copy_on_restore,
|
|
total_event_record_service_count: state.service_state.total_event_record_services,
|
|
periodic_boundary_call_count: state.service_state.periodic_boundary_calls,
|
|
total_trigger_dispatch_count: state
|
|
.service_state
|
|
.trigger_dispatch_counts
|
|
.values()
|
|
.sum(),
|
|
dirty_rerun_count: state.service_state.dirty_rerun_count,
|
|
total_company_cash: state
|
|
.companies
|
|
.iter()
|
|
.map(|company| company.current_cash)
|
|
.sum(),
|
|
}
|
|
}
|
|
}
|