タイプ別の入力フォームは、hidden で埋め込んでいるmode パラメータを変えることで判別すれば良いだろう。
ただ、見た目的に色々と考えないと誤入力なども懸念されるから、そこら辺も工夫したいところです。
ということで、以下のようにしてみます。
sub STDOUT_INPUT_FORM {
print "<div class=\"cell\"><div class=\"char\">\n";
print "<img class=\"char\" src=\"$Char_Icon\" width=\"50\" height=\"50\" alt=\"$Char_Name\"></div>\n";
print "<div class=\"name\">$Char_Name $Mode_Name{@_[0]}メッセージ</div>\n";
print "<form method=\"POST\" action=\"$Cgi_Main\" class=\"mode@_[0]\">\n";
print "<input type=\"hidden\" name=\"mode\" value=\"@_[0]\">\n";
print "<textarea cols=\"60\" rows=\"5\" name=\"msg\" wrap=\"off\"></textarea><br>\n";
print "<input type=\"submit\" value=\"発言する\">\n";
print "</form><br class=\"clear\"></div>\n";
print "<br>\n";
}STDOUT_INPUT_FORM に、モードを引数として渡すように変えました。
使い方は、以下のようになるでしょう。
&STDOUT_INPUT_FORM( "01" );
&STDOUT_INPUT_FORM( "05" );
&STDOUT_INPUT_FORM( "11" );
&STDOUT_INPUT_FORM( "15" );
&STDOUT_INPUT_FORM( "40" );
&STDOUT_INPUT_FORM( "50" );また、各モードの名前についても、文字で明示的に表示させた方が良いので、それも以下のように連想配列に保持しておき、使えるようにしておきます。
$Mode_Name{'01'} = "村人";
$Mode_Name{'05'} = "霊界";
$Mode_Name{'11'} = "人狼";
$Mode_Name{'15'} = "魔界";
$Mode_Name{'40'} = "妖精";
$Mode_Name{'50'} = "天界";ファイルへの出力などの処理は先日のものと同じなので、割愛します。
まあ、とりあえずはこれで。ログインが実装されていないので、誰でもどんなメッセージでも入力・閲覧できてしまいますね。まだまだ道のりは長いようです。