1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00
Files
ojrc/rc_services_room/src/data/premium_config.rs
2025-03-08 17:16:02 -05:00

46 lines
1.2 KiB
Rust

use polariton::{operation::{Dict, Typed}, serdes::TypePrefix};
pub struct PremiumEffects {
pub factor: PremiumFactor,
pub multiplayer: PremiumMultiplayer,
}
impl PremiumEffects {
pub fn as_transmissible(&self) -> Typed {
Typed::Dict(Dict {
key_ty: TypePrefix::Str, // str
val_ty: TypePrefix::HashMap, // hashtable
items: vec![
(Typed::Str("PremiumFactor".into()), self.factor.as_transmissible()),
(Typed::Str("TieredMultiplayer".into()), self.multiplayer.as_transmissible()),
]
})
}
}
pub struct PremiumFactor {
pub factor: i32, // percent
pub party_bonus: i32, // percent
}
impl PremiumFactor {
fn as_transmissible(&self) -> Typed {
Typed::HashMap(vec![
(Typed::Str("Factor".into()), Typed::Int(self.factor)),
(Typed::Str("PartyBonusPercentagePerPlayer".into()), Typed::Int(self.party_bonus)),
].into())
}
}
pub struct PremiumMultiplayer {
pub tier_multiplier: f64,
}
impl PremiumMultiplayer {
fn as_transmissible(&self) -> Typed {
Typed::HashMap(vec![
(Typed::Str("BonusPerTierMultiplier".into()), Typed::Double(self.tier_multiplier)),
].into())
}
}