CLiCkin2DaBeaT (2)

ええと、ONEPASS_MODE とか TWOPASS_MODE って一体何でしょ。

mode 属性

C2B.java で mode 属性に代入してる箇所を確認。M-x occur で調べたら以下。

5 matches for " mode =" in buffer: C2B.java
    118:    mode = GAME_MODE;
    163:          mode = ONEPASS_MODE;
    259:    mode = ONEPASS_MODE;
    272:          mode = ONEPASS_MODE;
    274:          mode = TWOPASS_MODE;

ちなみに試しに grep してみた結果が以下。

$ find src |xargs grep ONEPASS
src/com/google/clickin2dabeat/C2B.java:  public static final int ONEPASS_MODE = 2;
src/com/google/clickin2dabeat/C2B.java:        if (mode == ONEPASS_MODE) {
src/com/google/clickin2dabeat/C2B.java:          mode = ONEPASS_MODE;
src/com/google/clickin2dabeat/C2B.java:    mode = ONEPASS_MODE;
src/com/google/clickin2dabeat/C2B.java:          mode = ONEPASS_MODE;
src/com/google/clickin2dabeat/GameView.java:      if (parent.mode == C2B.ONEPASS_MODE) { // Record this point as a target
$

.svn はスルー。基本的には C2B のみで mode の変更、という理解で良いのかな。ちなみに TWOPASS_MODE になるのは displayCreateLevelAlert メソドで関連ブロックを以下に引用。

    String[] choices = new String[2];
    choices[0] = getString(R.string.ONE_PASS);
    choices[1] = getString(R.string.TWO_PASS);
    createLevelAlert.setSingleChoiceItems(choices, 0, new OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
        if (which == 0) {
          mode = ONEPASS_MODE;
        } else {
          mode = TWOPASS_MODE;
        }
      }
    });

ええと R.string.*_PASS の定義が以下。

<string name="ONE_PASS">Use 1-pass method to set the beats</string>
<string name="TWO_PASS">Use 2-pass method to set the beats (more accurate beat synchronization)</string>

うーん。そろそろ実機で動作を見てみたいんですが。そもそもこの displayCreateLevelAlert の呼び出し元がどこなのか、というと三個所

  • runC2B から
  • displayCreateLevelAlert で表示される AlertDialog の PositiveButton クリックで busyProcessing が true のケイス
  • displayCreateLevelAlert で表示される AlertDialog の NagativeButton クリックで busyProcessing が true のケイス

あら?

やっぱ C2B の処理フローはちゃんと確認しといた方が良いカンジ。ちょっとざっくりまとめとく。

  • resetGame で background な VideoView な callback 設定
    • OnPreparedListener
    • OnErrorListener
    • OnCompletionListener
  • resetGame から displayStartupMessage メソド呼び出し

このあたり、明日実機で確認してみますorz