rustraight 0.5.2

A simple 2D game library for Rust, inspired by DXLib
// マウス入力 API の動作確認用サンプル。アセット不要。
//
// 確認対象: mouse_position / mouse_delta / mouse_wheel
//           is_mouse_pressed / is_mouse_just_pressed / is_mouse_released / MouseButton

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);
    }
}