1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use super::{PrngAlgorithm, PrngGeneration, PrngSeeding, Randomizable};

pub struct Prng<T: PrngAlgorithm>(T);

impl<G: PrngAlgorithm + PrngSeeding + PrngGeneration> Prng<G> {
    pub fn new(seed: u64) -> Prng<G> {
        Prng { 0: G::new(seed) }
    }

    pub fn random_factor(&mut self) -> f32 {
        self.0.random_factor()
    }

    pub fn chance(&mut self, chance: f32) -> bool {
        self.0.chance(chance)
    }

    pub fn generate<T: Randomizable>(&mut self) -> T {
        self.0.generate()
    }

    pub fn range<T: Randomizable>(&mut self, minimum: T, maximum: T) -> T {
        self.0.range(minimum, maximum)
    }
}