basic scrolling in blueprint list
This commit is contained in:
parent
e42e14489d
commit
ce90a22ea0
2 changed files with 33 additions and 7 deletions
|
@ -14,7 +14,6 @@ fix bag tiles only counting power in one direction at once
|
||||||
tooltips
|
tooltips
|
||||||
lock tile types for early levels to make it less overwhelming
|
lock tile types for early levels to make it less overwhelming
|
||||||
make a gui alternative to pressing R to rotate between tile variants
|
make a gui alternative to pressing R to rotate between tile variants
|
||||||
scroll blueprint list
|
|
||||||
make marble movement more consistent (`>o o<` depends on internal marble order)
|
make marble movement more consistent (`>o o<` depends on internal marble order)
|
||||||
decide on marble data size (u32 or byte?)
|
decide on marble data size (u32 or byte?)
|
||||||
blueprint rotation?
|
blueprint rotation?
|
||||||
|
|
|
@ -55,6 +55,7 @@ pub struct Editor {
|
||||||
score: Option<Score>,
|
score: Option<Score>,
|
||||||
blueprints: Vec<Blueprint>,
|
blueprints: Vec<Blueprint>,
|
||||||
selected_blueprint: usize,
|
selected_blueprint: usize,
|
||||||
|
blueprint_scroll: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
|
@ -123,6 +124,7 @@ impl Editor {
|
||||||
score: solution.score,
|
score: solution.score,
|
||||||
blueprints: get_blueprints(),
|
blueprints: get_blueprints(),
|
||||||
selected_blueprint: usize::MAX,
|
selected_blueprint: usize::MAX,
|
||||||
|
blueprint_scroll: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,11 +360,17 @@ impl Editor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if rl.get_mouse_wheel_move() > 0. {
|
let mouse_pos = rl.get_mouse_position();
|
||||||
self.zoom_in(rl);
|
if self.active_tool != Tool::Blueprint
|
||||||
}
|
|| self.sim_state != SimState::Editing
|
||||||
if rl.get_mouse_wheel_move() < 0. {
|
|| mouse_pos.x > SIDEBAR_WIDTH as f32
|
||||||
self.zoom_out(rl);
|
{
|
||||||
|
if rl.get_mouse_wheel_move() > 0. {
|
||||||
|
self.zoom_in(rl);
|
||||||
|
}
|
||||||
|
if rl.get_mouse_wheel_move() < 0. {
|
||||||
|
self.zoom_out(rl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if rl.is_mouse_button_down(MouseButton::MOUSE_BUTTON_MIDDLE) {
|
if rl.is_mouse_button_down(MouseButton::MOUSE_BUTTON_MIDDLE) {
|
||||||
self.view_offset += rl.get_mouse_delta();
|
self.view_offset += rl.get_mouse_delta();
|
||||||
|
@ -423,7 +431,16 @@ impl Editor {
|
||||||
);
|
);
|
||||||
d.draw_text("Blueprints", 10, HEADER_HEIGHT + 30, 20, Color::WHITE);
|
d.draw_text("Blueprints", 10, HEADER_HEIGHT + 30, 20, Color::WHITE);
|
||||||
let mut y = HEADER_HEIGHT + 60;
|
let mut y = HEADER_HEIGHT + 60;
|
||||||
for (i, b) in self.blueprints.iter_mut().enumerate() {
|
let blueprints_shown = (sidebar_height as usize - 45) / 37;
|
||||||
|
let end = self
|
||||||
|
.blueprints
|
||||||
|
.len()
|
||||||
|
.min(blueprints_shown + self.blueprint_scroll);
|
||||||
|
for (i, b) in self.blueprints[self.blueprint_scroll..end]
|
||||||
|
.iter_mut()
|
||||||
|
.enumerate()
|
||||||
|
{
|
||||||
|
let i = i + self.blueprint_scroll;
|
||||||
if simple_button(d, 5, y, 32, 32) {
|
if simple_button(d, 5, y, 32, 32) {
|
||||||
b.remove_file();
|
b.remove_file();
|
||||||
self.blueprints.remove(i);
|
self.blueprints.remove(i);
|
||||||
|
@ -793,6 +810,7 @@ impl Editor {
|
||||||
fn board_overlay(&mut self, d: &mut RaylibDrawHandle, textures: &Textures) {
|
fn board_overlay(&mut self, d: &mut RaylibDrawHandle, textures: &Textures) {
|
||||||
let footer_top = (d.get_screen_height() - FOOTER_HEIGHT) as f32;
|
let footer_top = (d.get_screen_height() - FOOTER_HEIGHT) as f32;
|
||||||
let mouse_pos = d.get_mouse_position();
|
let mouse_pos = d.get_mouse_position();
|
||||||
|
let scroll_delta = d.get_mouse_wheel_move();
|
||||||
let tile_scale = (1 << self.zoom) as f32;
|
let tile_scale = (1 << self.zoom) as f32;
|
||||||
let tile_size = 16 << self.zoom;
|
let tile_size = 16 << self.zoom;
|
||||||
if self.sim_state == SimState::Editing {
|
if self.sim_state == SimState::Editing {
|
||||||
|
@ -936,6 +954,15 @@ impl Editor {
|
||||||
offset += view_offset;
|
offset += view_offset;
|
||||||
bp.convert_board().draw(d, textures, offset, self.zoom);
|
bp.convert_board().draw(d, textures, offset, self.zoom);
|
||||||
}
|
}
|
||||||
|
if mouse_pos.x < SIDEBAR_WIDTH as f32 {
|
||||||
|
if scroll_delta < 0.
|
||||||
|
&& self.blueprint_scroll < self.blueprints.len().saturating_sub(5)
|
||||||
|
{
|
||||||
|
self.blueprint_scroll += 1;
|
||||||
|
} else if scroll_delta > 0. && self.blueprint_scroll > 0 {
|
||||||
|
self.blueprint_scroll -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// draw selection
|
// draw selection
|
||||||
|
|
Loading…
Reference in a new issue