cuqueclicker 0.1.1

A TUI idle clicker where you finger an ASCII ass instead of clicking a cookie.
use ratatui::prelude::*;

use crate::game::state::Particle;

const PARTICLE_LIFE_F: f32 = 20.0;

pub fn draw_particles(frame: &mut Frame, area: Rect, particles: &[Particle]) {
    let buf = frame.buffer_mut();
    for p in particles {
        let r = p.row.round();
        if r < area.y as f32 || r >= (area.y + area.height) as f32 {
            continue;
        }
        let row = r as u16;
        if p.col < area.x || p.col >= area.x + area.width {
            continue;
        }
        let t = (p.life as f32 / PARTICLE_LIFE_F).clamp(0.0, 1.0);
        let dim = (t * 255.0) as u8;
        let style = Style::default()
            .fg(Color::Rgb(255, dim, dim))
            .add_modifier(Modifier::BOLD);
        buf.set_string(p.col, row, &p.text, style);
    }
}