add digit sprites, remove comment tiles

This commit is contained in:
Crispy 2024-10-05 15:01:06 +02:00
parent 636e9d04e2
commit 86548a8b0d
13 changed files with 65 additions and 75 deletions

View file

@ -6,12 +6,11 @@ use super::board::Pos;
pub type MarbleValue = u32;
#[derive(Debug, Default, Clone, Copy)]
#[derive(Debug, Default, Clone, Copy, PartialEq)]
pub enum Tile {
#[default]
Blank,
Block,
Comment(u8),
Marble {
value: MarbleValue,
dir: Direction,
@ -22,7 +21,7 @@ pub enum Tile {
Powerable(PTile, bool),
}
#[derive(Debug, Clone, Copy)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum PTile {
Trigger,
Wire(WireType),
@ -34,13 +33,13 @@ pub enum PTile {
Output,
}
#[derive(Debug, Clone, Copy)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum MirrorType {
Forward,
Back,
}
#[derive(Debug, Clone, Copy)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum MathOp {
Add,
Sub,
@ -49,7 +48,7 @@ pub enum MathOp {
Rem,
}
#[derive(Debug, Clone, Copy)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum GateType {
LessThan,
GreaterThan,
@ -57,7 +56,7 @@ pub enum GateType {
NotEqual,
}
#[derive(Debug, Clone, Copy)]
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum WireType {
Vertical,
Horizontal,
@ -97,9 +96,20 @@ impl Tile {
let tex_name = match self {
Tile::Blank => "",
Tile::Block => "block",
Tile::Comment(_) => "",
Tile::Marble { value: _, dir: _ } => "marble",
Tile::Digit(_) => "",
Tile::Digit(n) => match n {
b'0' => "digit_0",
b'1' => "digit_1",
b'2' => "digit_2",
b'3' => "digit_3",
b'4' => "digit_4",
b'5' => "digit_5",
b'6' => "digit_6",
b'7' => "digit_7",
b'8' => "digit_8",
b'9' => "digit_9",
_ => unreachable!("invalid digit"),
},
Tile::Mirror(mirror) => match mirror {
MirrorType::Forward => "mirror_forward",
MirrorType::Back => "mirror_back",
@ -139,8 +149,7 @@ impl Tile {
&format!("{t}_{}", if *state { "on" } else { "off" })
}
};
let tex_name = format!("{tex_name}.png");
if let Some(texture) = textures.get(&tex_name) {
if let Some(texture) = textures.get(tex_name) {
d.draw_texture_ex(
texture,
Vector2::new((x - size / 2) as f32, (y - size / 2) as f32),
@ -153,13 +162,6 @@ impl Tile {
match self {
Tile::Blank => (),
Tile::Comment(c) => {
d.draw_rectangle(x - size / 2, y - size / 2, size, size, Color::DIMGRAY);
d.draw_text(&format!("{}", *c as char), x - 10, y - 10, 20, Color::WHITE);
}
Tile::Digit(n) => {
d.draw_text(&String::from(*n as char), x - 10, y - 10, 20, Color::ORANGE)
}
_ => d.draw_rectangle(x - size / 2, y - size / 2, size, size, Color::RED),
}
}