ゲームのデバッグとかで使えるかな
#ifndef __module_fpstool__
#define __module_fpstool__
//
// ****************************************************
// FPS操作モジュール
// ****************************************************
//
// HSPの定義ヘッダ
#include "llmod3/llmod3.hsp"
#include "llmod3/trackbox.hsp"
//
#module module_fpstool
// 定数
#const _SCREEN_WIDTH_ 300
#const _SCREEN_HEIGHT_ 50
//
// --- --- ---
// リセット
// --- --- ---
//
#deffunc fps_reset int time, local winid, local px, local py
// 操作先ID
winid = ginfo( 3 )
// 配置すべき座標を取得
px = ginfo( 4 ) + ginfo( 10 )
py = ginfo( 5 )
// 初期化確認
if ( _INIT_ == 1 ) {
// 解放
_cls
// 利用解除にする
_INIT_ = 0
}
// 初期化確認
if ( _INIT_ == 0 ) {
// 利用中にする
_INIT_ = 1
// 待機時間を保存
_TIME_ = limit( time, 1, 300 )
// 制御画面
_SCREEN_ = ginfo( 25 )
screen _SCREEN_, _SCREEN_WIDTH_, _SCREEN_HEIGHT_, 4 + 8, px, py
title "FPS操作"
// ボタン設定
objmode 2, 0
objsize _SCREEN_HEIGHT_, _SCREEN_HEIGHT_
// ブレークポイント用
_BREAKPOINT_ = 1
// フォント切り替え
font "Webdings", 20
// ボタン
pos 0, 0
button gosub "", *breakpoint : _BUTTON_ = stat
// ボタンを再生にする
gosub *breakpoint
// フォント設定
font msgothic, 15, 17
// トラックボックス
pos _SCREEN_HEIGHT_, 0
trackbox _SCREEN_WIDTH_ - _SCREEN_HEIGHT_, _SCREEN_HEIGHT_, 1 + 8 + $100 : _TRACKBOX_ = stat
// 範囲設定 / つまみ位置移動
sel_trackbox _TRACKBOX_
trackrng 1, 300, 0
trackpos _TIME_, 0
// 最前面に
gsel _SCREEN_, 2
}
// 元に戻す
gsel winid
return
//
// --- --- ---
// 同期
// --- --- ---
//
#defcfunc fps_sync local winid
// 操作先ID
winid = ginfo( 3 )
// 最前面に
gsel _SCREEN_
// つまみ位置取得
trackpos 0, 1
// 元に戻す
gsel winid
// 待機時間とする
return stat
//
// --- --- ---
// ブレークポイント関連
// --- --- ---
//
// ユーザー向けブレークポイント
#deffunc fps_breakpoint
// ユーザー用にわかりやすくする
fps_breakpoint_stop
return
// 切り替え
*breakpoint
// 一時停止
if ( _BREAKPOINT_ == 0 ) {fps_breakpoint_stop}
// 再生
if ( _BREAKPOINT_ == 1 ) {fps_breakpoint_play}
return
// 一時停止
#deffunc fps_breakpoint_stop local winid
// 操作先ID
winid = ginfo( 3 )
// 制御画面
gsel _SCREEN_
// ブレークポイント切り替え
_BREAKPOINT_ = 1
// ボタンを再生に記号に
objprm 0, "4"
// 元に戻す
gsel winid
// ループ待機
repeat
// 待機
await 30
// もしポーズ解除されたら抜ける
if ( _BREAKPOINT_ == 0 ) {break}
loop
return
// 再生
#deffunc fps_breakpoint_play local winid
// 操作先ID
winid = ginfo( 3 )
// 制御画面
gsel _SCREEN_
// ブレークポイント切り替え
_BREAKPOINT_ = 0
// ボタンを再生に記号に
objprm 0, ";"
// 元に戻す
gsel winid
// ループ待機
repeat
// 待機
await 30
// もしポーズ解除されたら抜ける
if ( _BREAKPOINT_ == 0 ) {break}
loop
return
#global
#endif
/////////////////////////////////////////////////////////
// サンプルスクリプト
/////////////////////////////////////////////////////////
// 初期化
fps_reset 16
*main
redraw 0
color 255, 255, 255 : boxf
// ★を描画
gosub *drawstar
redraw 1
// 時間調整
await fps_sync()
goto *main
//
// ★を描画
//
*drawstar
// 大量にランダムな描画
repeat rnd( 9 ) * rnd( 99 )
color rnd( 256 ), rnd( 256 ), rnd( 256 )
pos rnd( 640 ), rnd( 480 )
mes "★"
loop
return