use rustraight::prelude::*;
fn button_color(btn: MouseButton) -> Color {
if is_mouse_pressed(btn) { Color::GREEN } else { Color::rgb(120, 120, 120) }
}
fn main() {
init(WindowConfig {
title: String::from("07_mouse"),
width: 640,
height: 400,
screen_width: 640,
screen_height: 400,
..Default::default()
});
let mut wheel_accum = 0i32;
while advance_frame() {
draw_fill(MAIN_SCREEN, Color::rgb(15, 15, 20));
let (mx, my) = mouse_position();
let (dx, dy) = mouse_delta();
let wheel = mouse_wheel();
wheel_accum += wheel;
draw_text(MAIN_SCREEN, 10, 10, format!("mouse_position: ({mx}, {my})"), Color::WHITE);
draw_text(MAIN_SCREEN, 10, 30, format!("mouse_delta: ({dx}, {dy})"), Color::WHITE);
draw_text(MAIN_SCREEN, 10, 50, format!("mouse_wheel(このフレーム): {wheel} 累積: {wheel_accum}"), Color::WHITE);
draw_text(MAIN_SCREEN, 10, 90, "Left", button_color(MouseButton::Left));
draw_text(MAIN_SCREEN, 80, 90, "Right", button_color(MouseButton::Right));
draw_text(MAIN_SCREEN, 150, 90, "Middle", button_color(MouseButton::Middle));
for btn in [MouseButton::Left, MouseButton::Right, MouseButton::Middle] {
if is_mouse_just_pressed(btn) { log_info!("is_mouse_just_pressed: {btn:?}"); }
if is_mouse_released(btn) { log_info!("is_mouse_released: {btn:?}"); }
}
draw_line(MAIN_SCREEN, mx - 10, my, mx + 10, my, Color::YELLOW);
draw_line(MAIN_SCREEN, mx, my - 10, mx, my + 10, Color::YELLOW);
draw_text(MAIN_SCREEN, 10, 130, "左/右/中ボタンをクリック・ドラッグ・ホイール回転で確認", Color::CYAN);
}
}