prettify marble direction and value rendering

This commit is contained in:
Crispy 2024-10-12 20:53:47 +02:00
parent 23ac416c7e
commit 27ff77f133
9 changed files with 65 additions and 28 deletions

View file

@ -7,6 +7,8 @@ use board::Board;
use pos::*;
use tile::*;
use crate::{draw_usize_small, Textures};
#[derive(Debug)]
pub struct Machine {
board: Board,
@ -66,35 +68,27 @@ impl Machine {
self.input = bytes;
}
pub fn draw_marble_values(&self, d: &mut RaylibDrawHandle, offset: Vector2, zoom: i32) {
pub fn draw_marble_values(
&self,
d: &mut RaylibDrawHandle,
textures: &Textures,
offset: Vector2,
zoom: i32,
) {
let tile_size = 16 << zoom;
for marble in &self.marbles {
let x = marble.x;
let y = marble.y;
if let Some(tile) = self.board.get(*marble) {
let px = x as i32 * tile_size + offset.x as i32 + tile_size / 2;
let py = y as i32 * tile_size + offset.y as i32 + tile_size / 2;
let px = x as i32 * tile_size + offset.x as i32;
let py = y as i32 * tile_size + offset.y as i32;
if let Tile::Marble { value, dir } = tile {
let fontsize = (zoom + 1) * 10;
d.draw_text(
&format!("{value}"),
px - tile_size / 2 + 2,
py - tile_size / 2 + 2,
fontsize,
Color::MAGENTA,
);
d.draw_text(
match dir {
Direction::Up => "^",
Direction::Down => "v",
Direction::Left => "<",
Direction::Right => ">",
},
px - tile_size / 2 + 2,
py - tile_size / 2 + fontsize,
fontsize,
Color::MAGENTA,
);
let scale = 1 << zoom;
let texture = textures.get(dir.arrow_texture_name());
let pos = Vector2::new(px as f32, py as f32);
let faded = Color::new(255, 255, 255, 100);
d.draw_texture_ex(texture, pos, 0., scale as f32, faded);
draw_usize_small(d, textures, value as usize, px, py, scale);
}
}
}
@ -111,6 +105,10 @@ impl Machine {
}
}
if self.marbles.is_empty() {
return;
}
#[derive(Debug, Clone, Copy)]
enum Event {
Stay,