ノベルゲームでの操作系の仕様確認

操作の反応をよくするためには、キー操作にせよアイコンクリックにせよ、クリックアップを待っていては遅い。全て、キーなりマウスボタンなりが押下された段階で検出すべきである。
そして、操作による画面遷移が行われ、次の入力待ちになるのだが、その直前に、無入力状態になるまで待機する処理を挟むべきだ。
これは整理すると、「ユーザーからの入力待ち」処理は常に

  1. 「ユーザーからの入力がない状態待ち」
  2. 「ユーザーからの入力待ち」

の二段階がセットになる。
ただ、例外があって、それが、

  • ノベルゲームにおける、CTRL押しっぱなしによるスキップ処理
  • スクロールバーのレール部分の押しっぱなし
  • スクロールバーのカーソル部分のドラッグ

この二点である。プログラムを組む時は、この点に留意しなければならない。

実際のスクリプトでは?

  • bexecには、bdownを常にセットで。
  • bexecの直前に、getkey.dllを使った入力無し待ちを挟む。
  • CTRLの場合は、bexecに入る前に別処理で判定。
  • スクロールバーの場合は、bexec後、isdownで1が戻り続ける限り、マウスの位置に追随する処理をかます