better puppy animation calculation
This commit is contained in:
@@ -48,14 +48,14 @@ pub async fn run_display(display: &mut Option<Display>) -> Option<()> {
|
|||||||
loop {
|
loop {
|
||||||
// Choose state based on wpm
|
// Choose state based on wpm
|
||||||
let (state, frame_delay_ms) = if wpm == 0 {
|
let (state, frame_delay_ms) = if wpm == 0 {
|
||||||
(PuppyAnim::Sleep, 250)
|
(PuppyAnim::Sleep, 400)
|
||||||
} else if wpm < 60 {
|
} else if wpm < 80 {
|
||||||
// faster tail wagging, connected to wpm
|
// faster tail wagging, connected to wpm
|
||||||
let delay = (3000 / wpm.max(10)).clamp(100, 300);
|
let delay = (250 - (wpm * 170 / 80)).max(80);
|
||||||
(PuppyAnim::Idle, delay)
|
(PuppyAnim::Idle, delay)
|
||||||
} else {
|
} else {
|
||||||
// even faster tail wagging!!
|
// even faster tail wagging!!
|
||||||
let delay = (4000 / wpm).clamp(16, 100);
|
let delay = (80 - ((wpm - 80) * 50 / 70)).max(30);
|
||||||
(PuppyAnim::Happy, delay)
|
(PuppyAnim::Happy, delay)
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ pub async fn run_display(display: &mut Option<Display>) -> Option<()> {
|
|||||||
|
|
||||||
display.flush().ok()?;
|
display.flush().ok()?;
|
||||||
|
|
||||||
Timer::after(Duration::from_millis(16)).await;
|
Timer::after(Duration::from_millis(8)).await;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
|||||||
Reference in New Issue
Block a user