pinch_points/app/
daily.rs1use bevy::prelude::*;
7
8#[derive(Resource, Default)]
12pub struct Daily {
13 pub active: bool,
14}
15
16impl Daily {
17 pub fn today() -> u32 {
19 (crate::app::clock::now_secs() / 86_400) as u32
20 }
21
22 pub fn seed() -> u64 {
23 Self::seed_for(Self::today())
24 }
25
26 pub fn seed_for(day: u32) -> u64 {
28 0xDA11_0000 ^ u64::from(day)
29 }
30}
31
32#[cfg(test)]
33mod tests {
34 use super::Daily;
35
36 #[test]
37 fn daily_seed_is_stable_within_a_day_and_fresh_across_days() {
38 assert_eq!(Daily::seed_for(20_662), Daily::seed_for(20_662));
39 assert_ne!(Daily::seed_for(20_662), Daily::seed_for(20_663));
40 assert_eq!(Daily::seed(), Daily::seed_for(Daily::today()));
42 }
43}