show more output cells when space is available

This commit is contained in:
Crispy 2024-10-07 00:20:52 +02:00
parent 098dc9517d
commit 0ca1b4ba54
2 changed files with 14 additions and 11 deletions

View file

@ -1,4 +1,4 @@
use std::ops::Rem; use std::{mem::transmute, ops::Rem};
use raylib::prelude::*; use raylib::prelude::*;
@ -404,7 +404,7 @@ impl Editor {
texture_option_button( texture_option_button(
d, d,
Vector2 { Vector2 {
x: 320. + col as f32 * bound_offset - if col < 0 { 15. } else { 0. }, x: 100. + col as f32 * bound_offset - if col < 0 { 10. } else { 0. },
y: footer_top + 5. + row as f32 * bound_offset, y: footer_top + 5. + row as f32 * bound_offset,
}, },
textures.get(texture), textures.get(texture),
@ -453,8 +453,12 @@ impl Editor {
Tool::Gate, Tool::Gate,
); );
let output_x = 370;
let output_cell_width = 43;
let output_cells = (d.get_screen_width() - output_x) as usize / 43;
let y = footer_top as i32 + 5; let y = footer_top as i32 + 5;
if simple_button(d, 600, y + 70, 65, 15) { if simple_button(d, output_x, y + 70, 65, 15) {
self.output_as_text = !self.output_as_text self.output_as_text = !self.output_as_text
} }
let output_mode_text = if self.output_as_text { let output_mode_text = if self.output_as_text {
@ -462,11 +466,12 @@ impl Editor {
} else { } else {
"show text" "show text"
}; };
d.draw_text(output_mode_text, 605, y + 72, 10, Color::WHITE); d.draw_text(output_mode_text, output_x + 5, y + 72, 10, Color::WHITE);
let output_start = self.machine.output().len().saturating_sub(8);
let output_end = output_start + 8; let output_start = self.machine.output().len().saturating_sub(output_cells);
let output_end = output_start + output_cells;
for (box_index, index) in (output_start..output_end).enumerate() { for (box_index, index) in (output_start..output_end).enumerate() {
let x = 600 + 43 * box_index as i32; let x = output_x + output_cell_width * box_index as i32;
let expected_byte = self.level.outputs().get(index); let expected_byte = self.level.outputs().get(index);
let real_byte = self.machine.output().get(index); let real_byte = self.machine.output().get(index);
@ -534,9 +539,7 @@ impl Editor {
} }
let pos = *pos; let pos = *pos;
for n in 0..10 { for n in 0..10 {
if d.is_key_pressed(unsafe { if d.is_key_pressed(unsafe { transmute::<u32, KeyboardKey>(b'0' as u32 + n) }) {
std::mem::transmute(KeyboardKey::KEY_ZERO as u32 + n)
}) {
self.set_tile(pos, Tile::Digit(n as u8)); self.set_tile(pos, Tile::Digit(n as u8));
} }
} }

View file

@ -227,7 +227,7 @@ impl Board {
if self.in_bounds((tx, ty).into()) { if self.in_bounds((tx, ty).into()) {
let tile = self.rows[ty][tx]; let tile = self.rows[ty][tx];
let texname = tile.texture(); let texname = tile.texture();
if texname == "" { if texname.is_empty() {
continue; continue;
} }
let texture = textures.get(&texname); let texture = textures.get(&texname);