今、簡単なゲーム(シンプルなタイピング)作ってます。
それがだいたいできてきたので、タイトル画面もつけようと思ってます。
そのとき、ちょっと思ったことがあったので質問させてください。

例えばRPGでいえば、タイトル画面・フィールド・戦闘シーン・メニュー画面などでは
プロシージャの動作が全く違いますよね?
この場合、プロシージャ内の動作はどうすればよいでしょう?
私が考えたのは次のものです。
modeというint型の変数があったとして、それを現在の状況ごとに変化させるとします。

(案1)
if(mode==0)のときは1つ目のswitch文でmsgを処理。
if(mode==1)のときは2つ目のswitch文でmsgを処理。
どの場面でも処理が同じメッセージだけは、if文の外に書きます。

(案2)
必要な場合にそれぞれのメッセージごとに、
if(mode==0)、if(mode==1)などを使って分ける。

(案3)
プロシージャを2つ(以上)つくり、modeによってプロシージャを変える。

まだWinApi始めて間もないので、大規模なプログラムを組んだことがありません。
大規模なプログラムを組む場合はどうするべきか、お教えください。
申し訳ありませんが、よろしくお願いいたします。