rustraight 0.5.2

A simple 2D game library for Rust, inspired by DXLib
// サブスクリーン API の動作確認用サンプル。
// 必要アセット: 検証素材/images/sprite.png
//
// 確認対象: create_screen(サブスクリーンへの描画→メインへの貼り付け、image_size)

use rustraight::prelude::*;

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

fn main() {
    init(WindowConfig {
        title: String::from("05_subscreen"),
        width: 800,
        height: 500,
        screen_width: 800,
        screen_height: 500,
        ..Default::default()
    });

    let sprite = load_image(&asset("images/sprite.png"));
    let sub = create_screen(160, 160);

    while advance_frame() {
        draw_fill(MAIN_SCREEN, Color::rgb(15, 15, 20));

        // サブスクリーンへ描画(target にサブスクリーンのハンドルを渡す)
        clear(sub);
        draw_fill(sub, Color::rgb(30, 60, 30));
        draw_circle(sub, 80, 80, 60, Color::CYAN, true);
        draw_image(sub, 48, 48, sprite);
        draw_text(sub, 4, 4, "sub", Color::WHITE);

        // サブスクリーンを通常のスプライトと同様にメインへ貼り付け
        draw_image(MAIN_SCREEN, 40, 40, sub);
        draw_text(MAIN_SCREEN, 40, 210, "create_screen -> draw_image(MAIN_SCREEN, sub)", Color::WHITE);

        // サブスクリーンにも draw_image_ex の拡縮/回転が効くことを確認
        let angle = (elapsed_time() as f32 * 45.0) % 360.0;
        draw_image_ex(MAIN_SCREEN, 320, 40, sub, DrawImageParams {
            scale_x: 1.2, scale_y: 1.2, rotation: angle, alpha: 1.0, flip_x: false, flip_y: false,
        });
        draw_text(MAIN_SCREEN, 320, 260, "サブスクリーンにも拡縮/回転が効く", Color::WHITE);

        let (w, h) = image_size(sub);
        draw_text(MAIN_SCREEN, 40, 300, format!("image_size(sub): {w}x{h}"), Color::WHITE);
    }
}