# sample13_mobile-ratio.hsp

sample\sample_mobile-ratio\ sample13_mobile-ratio.hsp

    #include "hsp3dish.as"

    #include "ezlocal-dish-js.hsp"
    ezLocalJS
    ;  ------------------------------------------------------------------------------
    ;  - スマホの解像度や表示比率に合わせてプログラミングする方法
    ;  ------------------------------------------------------------------------------
    ;  hsp3dish.ini に、
    ;   wx_mobile = ENV.HSP_SX
    ;   wy_mobile = ENV.HSP_SY
    ;  を追記することで画面の解像度や比率をスマホに合わせてゲームを製作することができます。
    ;
    ;  -- 縦向き型ゲームの場合 (横幅解像度固定、高さ可変)
    ;  ----------------------------------------------
    ;  スマホの解像度に合わせると例えば 980 x 1862 等の大きなサイズでゲームを
    ;  作っていくことになり、解像度が高すぎてしまう場合があります。
    ;  そういった場合は例えば、横幅解像度を640に固定して
    ;   wx_mobile = 640
    ;   wy_mobile = Math.round(ENV.HSP_SY * 640 / ENV.HSP_SX)
    ;  と記述することで、先程の例の比率で 640 x 1216 のサイズでゲーム画面が初期化されます。
    ;
    ;  -- 横向き型ゲームの場合 (高さ解像度固定、横幅可変)
    ;  ----------------------------------------------
    ;  横幅固定はスマホを縦向きで使用するゲームの場合です。
    ;  スマホを横向きで使うために「スマホ横向き全画面FIT」を設定している場合は
    ;  縦方向の解像度を固定します。
    ;   wx_mobile = Math.round(ENV.HSP_SX * 520 / ENV.HSP_SY)
    ;   wy_mobile = 520
    ;
    ;  ※ この画面初期化サイズは ginfo_sx, ginfo_sy で取得することができます。

    // 実際にHTMLの中でどういった解像度で初期化されているかJavaScriptの変数内容を取得
    exec {"
    	HEAP32["}+varptr(ENV_HSP_WX)+{" >> 2] = ENV.HSP_WX;
    	HEAP32["}+varptr(ENV_HSP_WY)+{" >> 2] = ENV.HSP_WY;
    	HEAP32["}+varptr(ENV_HSP_SX)+{" >> 2] = ENV.HSP_SX;
    	HEAP32["}+varptr(ENV_HSP_SY)+{" >> 2] = ENV.HSP_SY;
    "}

    *main
        redraw 0 : color 220,220,220 : boxf
    	gosub *draw_wakusen
    	color : pos 0,0
    	gfilter 1  ; ← 画面の拡大縮小時の文字つぶれにある程度の効果
    	mes "【スマホの表示領域ぴったりに初期化】"
    	mes ""
    	mes "動作解像度 : "
    	mes "  ENV.HSP_WX="+ ENV_HSP_WX
    	mes "  ENV.HSP_WY="+ ENV_HSP_WY
    	mes ""
    	mes "表示解像度 : "
    	mes "  ENV.HSP_SX="+ ENV_HSP_SX
    	mes "  ENV.HSP_SY="+ ENV_HSP_SY
        mes ""
    	mes "ginfo値 : "
    	mes "  ginfo_sx="+ ginfo_sx
    	mes "  ginfo_sy="+ ginfo_sy
        mes ""
    	mes "PCの場合は 480 x 600 、"
    	mes "スマホなら画面いっぱいに表示される解像度になります。"
        mes ""
        mes strf("%02d:%02d:%02d",gettime(4),gettime(5),gettime(6))
    	pos 0, ginfo_sy-ginfo_mesy
    	mes "　↓ ここまで描画領域が広がります。"
    	gfilter 0
        redraw 1
        await 16
    goto *main

    // サイズ感を把握するための枠線を描画
    *draw_wakusen
    	color 255
    	line 0, 0, ENV_HSP_WX/2, 0 : line 10, 10, ENV_HSP_WX/2, 10
    	line 0, 0, 0, ENV_HSP_WY/2 : line 10, 10, 10, ENV_HSP_WY/2
    	line ENV_HSP_WX-1, ENV_HSP_WY-1, ENV_HSP_WX/2, ENV_HSP_WY-1 : line ENV_HSP_WX-11, ENV_HSP_WY-11, ENV_HSP_WX/2, ENV_HSP_WY-11
    	line ENV_HSP_WX-1, ENV_HSP_WY-1, ENV_HSP_WX-1, ENV_HSP_WY/2 : line ENV_HSP_WX-11, ENV_HSP_WY-11, ENV_HSP_WX-11, ENV_HSP_WY/2
    	return