aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorArne Dußin2021-01-17 13:33:04 +0100
committerArne Dußin2021-01-17 13:33:04 +0100
commit51b7747e62c189d430318c67368a5c84e50ece61 (patch)
tree328be6230d392027eb106fd963b5ec97b9034f9f /src/main.rs
parentb1179849c28e50c39ac3c94af9dda86ee24beca0 (diff)
downloadgraf_karto-51b7747e62c189d430318c67368a5c84e50ece61.tar.gz
graf_karto-51b7747e62c189d430318c67368a5c84e50ece61.zip
Input revamp to make keybindings controlable.input
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/main.rs b/src/main.rs
index 4d6f4ba..3c582d9 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -21,16 +21,17 @@
#[macro_use]
extern crate log;
-pub mod button;
pub mod cli;
pub mod colours;
pub mod config;
pub mod editor;
pub mod grid;
pub mod gui;
+pub mod input;
pub mod map;
pub mod math;
pub mod snapping;
+pub mod stable_vec;
pub mod svg;
pub mod tool;
pub mod transform;
@@ -41,6 +42,7 @@ use config::Config;
use editor::Editor;
use float_cmp::F64Margin;
use gui::{DimensionIndicator, ToolSidebar};
+use input::Input;
use raylib::prelude::*;
use snapping::Snapper;
use std::ffi::CString;
@@ -96,11 +98,13 @@ fn main() {
&CString::new(GUI_STYLE).expect("Could not create C string from style file name"),
));
+ let mut input = Input::new(&rl);
+ config::register_bindings(&config, &mut input);
let mut editor = Editor::new(&mut rl, &thread, config);
let mut dimension_indicator = DimensionIndicator::new();
- let tool_sidebar = ToolSidebar::new(&mut rl, &thread);
+ let mut tool_sidebar = ToolSidebar::new(&mut rl, &thread, &mut input);
let mut snapper = Snapper::default();
- let mut cli = CLI::new();
+ let mut cli = CLI::new(&mut input);
let mut transform = Transform::new();
let mut last_mouse_pos = rl.get_mouse_position();
@@ -108,6 +112,8 @@ fn main() {
let screen_width = rl.get_screen_width();
let screen_height = rl.get_screen_height();
+ input.update(&mut rl);
+
// Move the canvas together with the mouse
if rl.is_mouse_button_down(MouseButton::MOUSE_MIDDLE_BUTTON) {
transform.move_by_px(&(rl.get_mouse_position() - last_mouse_pos).into());
@@ -125,16 +131,11 @@ fn main() {
);
}
- cli.update(&mut rl, &mut editor);
+ cli.update(&mut editor, &mut input);
dimension_indicator.update(editor.map_mut(), &mut rl);
snapper.update(&mut rl, cli.active());
- editor.update(
- &mut rl,
- &transform,
- &snapper,
- ToolSidebar::mouse_captured(screen_height as u16, last_mouse_pos.into()),
- cli.active(),
- );
+ editor.update(&mut rl, &transform, &snapper, &mut input);
+ tool_sidebar.update(screen_height as u16, &mut input);
// Drawing section
{
@@ -144,7 +145,7 @@ fn main() {
editor.map().draw(&mut d, &transform);
editor.draw_tools(&mut d, &transform);
- tool_sidebar.draw(screen_height as u16, &mut d, &mut editor);
+ tool_sidebar.draw(&mut d, &mut editor);
snapper.draw(&mut d);
gui::position_indicator_draw(&mut d, last_mouse_pos.into(), &transform, &snapper);
dimension_indicator.draw(&mut d, &transform);