rustraight 0.5.2

A simple 2D game library for Rust, inspired by DXLib
// オーバーレイウィンドウ API の動作確認用サンプル。
// 必要アセット: 検証素材/images/sprite.png
//
// 確認対象: WindowConfig.overlay_enabled
//           overlay_visible / overlay_draw_image / overlay_draw_image_ex
//           overlay_draw_text / overlay_blend_set / overlay_clear
//           メインウィンドウ外座標への draw_* がオーバーレイ側にも描画される自動フォールバック

use rustraight::prelude::*;

fn asset(rel: &str) -> String {
    format!("{}/検証素材/{}", env!("CARGO_MANIFEST_DIR"), rel)
}

fn main() {
    init(WindowConfig {
        title: String::from("11_overlay"),
        width: 500,
        height: 400,
        screen_width: 500,
        screen_height: 400,
        overlay_enabled: true,
        ..Default::default()
    });

    let sprite = load_image(&asset("images/sprite.png"));
    let mut overlay_on = true;

    while advance_frame() {
        draw_fill(MAIN_SCREEN, Color::rgb(15, 15, 20));
        draw_text(MAIN_SCREEN, 10, 10, "V: overlay_visible切替  C: 押している間 overlay_clear()", Color::YELLOW);

        if is_just_pressed(KeyCode::KeyV) {
            overlay_on = !overlay_on;
            overlay_visible(overlay_on);
        }
        draw_text(MAIN_SCREEN, 10, 30, format!("overlay_visible: {overlay_on}"), Color::GREEN);

        // 明示的なオーバーレイ描画(メインウィンドウ基準座標、範囲外もOK)
        overlay_draw_image(-80, 100, sprite);
        overlay_draw_text(-80, 170, "overlay_draw_text", Color::WHITE);

        overlay_blend_set(BlendMode::Add);
        overlay_draw_image_ex(550, 100, sprite, DrawImageParams {
            scale_x: 1.5, scale_y: 1.5, rotation: 0.0, alpha: 0.7, flip_x: false, flip_y: false,
        });
        overlay_blend_set(BlendMode::Normal);
        draw_text(MAIN_SCREEN, 10, 50, "左右の画面外にスプライトが見えればOK(左:通常 / 右:Add+半透明)", Color::WHITE);

        // draw_* をメインウィンドウ外座標で呼ぶと自動的にオーバーレイにも描画される確認
        draw_image(MAIN_SCREEN, -80, 250, sprite);
        draw_text(MAIN_SCREEN, 10, 320, "上のdraw_imageはメイン外座標 → 自動でオーバーレイに描かれるはず", Color::CYAN);

        // overlay_clear の確認: Cキーを押している間、overlay_draw_* で積んだ分だけが消えるはず。
        // 上の draw_image によるフォールバック分は inner.draw_queue 側なので消えない。
        if is_pressed(KeyCode::KeyC) {
            overlay_clear();
        }
    }
}