1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00
Files
ojrc/rc_core/src/persist/settings.rs

100 lines
2.6 KiB
Rust
Raw Normal View History

use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Settings {
#[serde(default = "default_gameplay_settings")]
pub gameplay: super::GameplaySettings,
#[serde(default = "default_dev_messages")]
pub banners: Vec<BannerMessage>,
#[serde(default = "default_slot_upgrades")]
pub garage_upgrades: Vec<GarageSlotUpgrade>,
2025-05-07 20:23:22 -04:00
#[serde(default = "default_server_conf")]
pub server: ServerSettings,
}
fn default_gameplay_settings() -> super::GameplaySettings {
super::GameplaySettings {
show_tutorial_after_date: "2030-01-01".to_owned(),
health_threshold: 0.20,
microbot_sphere: 0.5,
misfire_angle: 10.0,
shield_dps: 100,
shield_hps: 2_000,
request_review_level: 10_000,
critical_ratio: 5.0,
2025-06-10 20:52:36 -04:00
cross_promo_image: "https://git.ngram.ca/OpenJam/servers/raw/branch/main/assets/robocraft/favicon.jpg".to_owned(),
cross_promo_link: "https://git.ngram.ca/OpenJam/servers".to_owned(),
}
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct BannerMessage {
pub message: String,
pub duration: u32, // seconds
}
fn default_dev_messages() -> Vec<BannerMessage> {
Vec::default()
}
2025-05-07 20:23:22 -04:00
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct GarageSlotUpgrade {
pub cpu: u32,
pub cost: u32,
}
fn default_slot_upgrades() -> Vec<GarageSlotUpgrade> {
vec![
GarageSlotUpgrade {
cpu: 100,
cost: 100,
},
GarageSlotUpgrade {
cpu: 200,
cost: 200,
},
GarageSlotUpgrade {
cpu: 1_000,
cost: 1_000,
},
GarageSlotUpgrade {
cpu: 2_000,
cost: 2_000,
},
GarageSlotUpgrade {
cpu: 10_000,
cost: 10_000,
},
]
}
2025-05-07 20:23:22 -04:00
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ServerSettings {
#[serde(default = "default_db_conn")]
pub database: String,
2025-05-12 20:56:24 -04:00
#[serde(default)]
pub auto_signup: bool,
#[serde(default)]
pub queue_mode: QueueMode,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
pub enum QueueMode {
Upgrade, // move enqueued players into newer gamemode
#[default]
Notify, // send match change
Ignore, // do nothing
2025-05-07 20:23:22 -04:00
}
fn default_db_conn() -> String {
"sqlite:../data/robocraft/accounts.sqlite.db?mode=rwc".to_owned()
}
fn default_server_conf() -> ServerSettings {
ServerSettings {
database: default_db_conn(),
2025-05-12 20:56:24 -04:00
auto_signup: false,
queue_mode: QueueMode::Notify,
2025-05-07 20:23:22 -04:00
}
}