昨日のメインルーチンから呼び出されるサブルーチンを一応掲載します。
まずはヘッダーとフッター。
sub STDOUT_HEADER { print "Content-type: text/html\n\n"; print "<html><head><title>人狼BBS - $Vil_Name</title>\n"; print "<link rel=\"stylesheet\" type=\"text/css\" href=\"$Vil_Css\">\n"; print "</head><body class=\"mode01\">\n"; print "<center><div class=\"main\">\n"; print "<img src=\"$Vil_Img\" width=\"600\" height=\"100\" alt=\"人狼BBS\"><br class=\"clear\">\n"; }
sub STDOUT_FOOTER { print "</div></center>\n"; print "<body></html>\n"; }
これはまあ、特に解説不要ですね。いままで、前後で出力していたものをサブルーチンにしただけです。
次は、日付リストの出力。
sub STDOUT_DAY_LIST { print "<div class=\"@_[0]\">\n"; print "<div class=\"vilname\">$Vil_Name</div>\n"; print "<ul class=\"daylink\">\n"; for($index = 0; $index <= $Day_Count_Max; $index++){ if($index == $Day_Count){ print "<li class=\"daydisp\">$index日目</li>"; }else{ print "<li class=\"daylink\"><a href=\"$Cgi_Main?day=$index\">$index日目</a></li>"; } } print "</ul><br class=\"clear\">\n"; print "</div>\n"; }
日付リストは画面の上下に表示するので、上の場合と下の場合でdivのclassを違うものに出来るよう、引数で受け取るようにしてあります。「@_[0]」というのがその引数ですね。
あと、最後にキャラクターの登場メッセージを。
sub STDOUT_CHAR { ($Msg_Date, $Msg_Type, $Msg_Char_Index, $Msg_Time) = split( /<>/, @_[0] ); $Char_Number = $Msg_Char_Index + 1; print "<div class=\"cell\">\n"; print "<div class=\"name\">システムメッセージ [$Msg_Time]</div>\n"; print "<div class=\"msg80\">$Char_Number番目の村人 $Char_Name[$Msg_Char_Index]</div><br class=\"clear\"></div>\n"; print "<br>\n"; }
ほとんどシステムメッセージと同じですが、メッセージデータの代わりに、キャラクターの名前をChar_Nameから取得して表示するところが異なります。
なんだか出力系はもう解説しなくても良いような気がしてきました。次からは、必要と思えるものだけ解説することにしようかと思います。