use crate::utils::random::Random; use std::fmt::{Debug, Formatter}; use std::sync::Mutex; #[derive(Default)] pub struct BattleRandom { random: Mutex, } impl BattleRandom { pub fn new_with_seed(seed: u128) -> Self { BattleRandom { random: Mutex::new(Random::new(seed)), } } pub fn get_rng(&self) -> &Mutex { &self.random } } impl Debug for BattleRandom { fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result { f.debug_struct("BattleRandom").finish() } } impl Clone for BattleRandom { fn clone(&self) -> Self { Self { random: Mutex::new(self.random.lock().unwrap().clone()), } } }