package SWConfig;

#----------------------------------------
# 設定ファイル
#----------------------------------------
sub GetConfig {
	# PCモードの表示件数一覧
	my @row_pc = (10, 20, 30, 50, 100, 200);

	# 携帯モードの表示件数一覧
	my @row_mb = (5, 10, 20, 30, 50, 100);

	# キャラクターセットID
	my @csidlist = (
		'sow',
	);

	# 文字列リソースセットID
	my @trsidlist = (
		'sow',
		'wbbs',
		'juna',
		'fool',
	);

	# 発言制限
	my %saycnt_sow = (
		CAPTION     => '物語(800pt)',
		COUNT_TYPE  => 'point', # ポイント勘定
		MAX_SAY     =>  800, # 通常発言回数
		MAX_TSAY    => 1000, # 独り言発言回数
		MAX_WSAY    => 2000, # 囁き発言回数
		MAX_SPSAY   =>  800, # 共鳴発言回数
		MAX_BSAY    => 1500, # 念話発言回数
		MAX_GSAY    => 2000, # うめき発言回数
		MAX_PSAY    => 1500, # プロローグ発言回数
		MAX_ESAY    => 3000, # エピローグ発言回数
		MAX_SAY_ACT =>   24, # アクション回数
		ADD_SAY     =>  200, # 促しで増える発言回数
		MAX_ADDSAY  =>    1, # 促しの回数
		MAX_MESCNT  =>  750, # 一発言の最大バイト数
		MAX_MESLINE =>   10, # 一発言の最大行数
	);

	my %saycnt_wbbs = (
		CAPTION     => 'BBS(20回)',
		COUNT_TYPE  => 'count', # 回数勘定
		MAX_SAY     =>  20, # 通常発言回数
		MAX_TSAY    =>  10, # 独り言発言回数
		MAX_WSAY    =>  40, # 囁き発言回数
		MAX_SPSAY   =>  20, # 共鳴発言回数
		MAX_BSAY    =>  30, # 念話発言回数
		MAX_GSAY    =>  20, # うめき発言回数
		MAX_PSAY    =>  20, # プロローグ発言回数
		MAX_ESAY    => 600, # エピローグ発言回数
		MAX_SAY_ACT =>  15, # アクション回数
		ADD_SAY     =>   4, # 促しで増える発言回数
		MAX_ADDSAY  =>   1, # 促しの回数
		MAX_MESCNT  => 200, # 一発言の最大文字数
		MAX_MESLINE =>   5, # 一発言の最大行数
	);

	my %saycnt_juna = (
		CAPTION     => '審問(1000pt)',
		COUNT_TYPE  => 'point', # バイト勘定
		MAX_SAY     => 1000, # 通常発言pt数
		MAX_TSAY    =>  700, # 独り言発言pt数
		MAX_WSAY    => 3000, # 囁き発言pt数
		MAX_SPSAY   => 1000, # 共鳴発言回数
		MAX_BSAY    => 2000, # 念話発言回数
		MAX_GSAY    => 2000, # うめき発言pt数
		MAX_PSAY    => 2000, # プロローグ発言pt数
		MAX_ESAY    => 3000, # エピローグ発言pt数
		ADD_SAY     =>  200, # 促しで増える発言pt数
		MAX_ADDSAY  =>    1, # 促しの回数
		MAX_SAY_ACT =>   24, # アクション回数
		MAX_MESCNT  => 1000, # 一発言の最大文字バイト数
		MAX_MESLINE =>   20, # 一発言の最大行数
	);

	my %saycnt_vulcan = (
		CAPTION     => '多弁(1500pt)',
		COUNT_TYPE  => 'point', # ポイント勘定
		MAX_SAY     => 1500, # 通常発言pt数
		MAX_TSAY    => 1000, # 独り言発言pt数
		MAX_WSAY    => 4000, # 囁き発言pt数
		MAX_SPSAY   => 1500, # 共鳴発言回数
		MAX_BSAY    => 3000, # 念話発言回数
		MAX_GSAY    => 3000, # うめき発言pt数
		MAX_PSAY    => 3000, # プロローグ発言pt数
		MAX_ESAY    => 4500, # エピローグ発言pt数
		ADD_SAY     =>  200, # 促しで増える発言pt数
		MAX_ADDSAY  =>    1, # 促しの回数
		MAX_SAY_ACT =>   36, # アクション回数
		MAX_MESCNT  => 1000, # 一発言の最大文字バイト数
		MAX_MESLINE =>   20, # 一発言の最大行数
	);

	my %saycnt_saving = (
		CAPTION     => '節約(15回)',
		COUNT_TYPE  => 'count', # 回数勘定
		MAX_SAY     =>  15, # 通常発言回数
		MAX_TSAY    =>  10, # 独り言発言回数
		MAX_WSAY    =>  30, # 囁き発言回数
		MAX_SPSAY   =>  12, # 共鳴発言回数
		MAX_BSAY    =>  20, # 念話発言回数
		MAX_GSAY    =>  20, # うめき発言回数
		MAX_PSAY    =>  20, # プロローグ発言回数
		MAX_ESAY    => 600, # エピローグ発言回数
		MAX_SAY_ACT =>  10, # アクション回数
		ADD_SAY     =>   3, # 促しで増える発言回数
		MAX_ADDSAY  =>   1, # 促しの回数
		MAX_MESCNT  => 200, # 一発言の最大文字数
		MAX_MESLINE =>   5, # 一発言の最大行数
	);

	my @saycnt_order = ('sow', 'wbbs', 'juna', 'vulcan', 'saving');
	my %saycnt = (
		ORDER    => \@saycnt_order,
		sow      => \%saycnt_sow,
		wbbs     => \%saycnt_wbbs,
		juna     => \%saycnt_juna,
		vulcan   => \%saycnt_vulcan,
		saving   => \%saycnt_saving,
	);

	# 画像の作者等の表示用
	my @copyrights = (
		'人狼物語画像 by Momoko Takatori',
	);

	my %css_default = (
		TITLE => '標準スタイル',
		FILE  => 'sow.css',
		WIDTH => 500,
	);

	my %css_text = (
		TITLE => '簡易表示',
		FILE  => 'text.css',
		WIDTH => 500,
	);

	my %css_juna = (
		TITLE => '審問風',
		FILE  => 'juna.css',
		WIDTH => 500,
#		FILE_TOPBANNER   => 'mwtitle_juna.jpg',
#		WIDTH_TOPBANNER  => 500,
#		HEIGHT_TOPBANNER => 70,
	);

	my %css_junawide = (
		TITLE => '審問風（ワイド）',
		FILE  => 'junawide.css',
		WIDTH => 582,
#		FILE_TOPBANNER => 'mwtitle_juna.jpg',
#		WIDTH_TOPBANNER  => 500,
#		HEIGHT_TOPBANNER => 70,
	);

	my %csslist = (
		default  => \%css_default,
		text     => \%css_text,
		juna     => \%css_juna,
		junawide => \%css_junawide,
	);

	# ロボット検索用の設定
	my @robots = (
		'noindex,nofollow',
		'noarchive',
	);

	# おみくじ
	# 個数は固定なので変えない事
	my @mikuji = (
		'現人神',   #  3
		'一等賞',   #  4
		'大大吉',   #  5
		'大吉',     #  6
		'中吉',     #  7
		'小吉',     #  8
		'吉',       #  9
		'半吉',     # 10
		'末吉',     # 11
		'末小吉',   # 12
		'凶',       # 13
		'小凶',     # 14
		'半凶',     # 15
		'末凶',     # 16
		'大凶',     # 17
		'回答拒否', # 18
	);

	# 閲覧制限表示
	my %ratingnormal = (
		FILE    => '',
		CAPTION => '一般',
		ALT     => '',
		WIDTH   => 0,
		HEIGHT  => 0,
	);

	my %rating15 = (
		FILE    => 'cau15.png',
		CAPTION => '15歳以上',
		ALT     => 'R15',
		WIDTH   => 16,
		HEIGHT  => 16,
	);

	my %rating18 = (
		FILE    => 'cau18.png',
		CAPTION => '18歳以上',
		ALT     => 'R18',
		WIDTH   => 16,
		HEIGHT  => 16,
	);

	my %ratinggro = (
		FILE    => 'caugro.png',
		CAPTION => 'グロ注意',
		ALT     => 'グロ',
		WIDTH   => 16,
		HEIGHT  => 16,
	);

	my %ratingview = (
		FILE    => 'cauview.png',
		CAPTION => '閲覧注意',
		ALT     => '注意',
		WIDTH   => 16,
		HEIGHT  => 16,
	);

	my @rating_order = ('default', 'r15', 'r18', 'gro', 'view');
	my %rating = (
		ORDER   => \@rating_order,
		default => \%ratingnormal,
		r15     => \%rating15,
		r18     => \%rating18,
		gro     => \%ratinggro,
		view    => \%ratingview,
	);

	my %cfg = (
		# 1:動作停止（アップデート用）
		ENABLED_HALT => 0,

		# 0:村の作成ができない（村作成終了用）
		# 1:村を作成可能
		ENABLED_VMAKE => 1,

		NAME_SW   => '人狼物語',
		URL_SW    => 'http://***/sow', # 設置するURL（最後の“/”は必要ありません）
		DESC_SW   => '人狼BBS似のウェブ版人狼クローン。',
		URL_HOME  => 'http://***/', # ホームページ
		NAME_HOME => '名無しのサイト',
		URL_BBS   => '', # サポート掲示板のURL
		NAME_BBS  => '', # サポート掲示板の名前

		MAX_VILLAGES   =>  5, # 最大同時稼働村数
		TIMEOUT_SCRAP  => 21, # 廃村期限
		TIMEOUT_ENTRY  =>  3, # プロローグでの無発言者自動追い出し機能の制限日数
		LIMIT_TIMEEDIT =>  0, # 村設定変更のリミット（秒単位）
			# 次の更新予定時刻付近で指定時間以内に設定を変更した場合
			# 設定ミス確認の時間をとるため開始時刻を翌々時とする

		MESFIXTIME     => 20, # 保留時間
		MAX_ROW        => 20, # 標準表示時の行数
		MAX_ROW_MB     => 10, # 標準表示時の行数（モバイル）
		MAX_PAGEROW_PC => 100, # ページ表示時の行数(未使用)
		MAX_PAGES_MB   =>   5, # ページリンクの表示数
		ROW_ACTION     =>   0, # 行数計算にアクションを含むかどうか

		ENABLED_TSAY_PRO     => 1, # プロローグでの独り言
		ENABLED_TSAY_GRAVE   => 1, # 墓下での独り言
		ENABLED_TSAY_EP      => 0, # エピでの独り言（未実装）
		ENABLED_PERMIT_DEAD  => 0, # 墓下の人狼/共鳴者/コウモリ人間が囁きを見られるかどうか
		ENABLED_DELETED      => 0, # 削除発言を表示するかどうか
		ENABLED_SUDDENDEATH  => 1, # 1:突然死あり
		ENABLED_NOTICE_SD    => 0, # 1:突然死通知あり（未実装）
		ENABLED_RANDOMTARGET => 0, # 1:投票・能力先に「ランダム」を含める
		DEFAULT_VOTETYPE     => 'anonymity', # 標準の投票方法(sign: 記名、anonymity:無記名)

		ENABLED_POPUP => 1, # アンカーのポップアップ

		USERID_NPC   => 'master', # ダミーキャラのユーザID
		USERID_ADMIN => 'admin', # 管理人のユーザID

		# ファイルロック機能
		ENABLED_GLOCK => 1, # 0: none, 1: flock, 2: rename
		TIMEOUT_GLOCK => 5 * 60, # rename方式の時の時間切れ

		# 標準のバナー画像
		FILE_TOPBANNER   => 'mwtitle.jpg',
		TOPBANNER_WIDTH  => 500,
		TOPBANNER_HEIGHT => 70,

		#----------------------------------------
		# 入力値の制限値
		#----------------------------------------
		MAXSIZE_USERID => 32, # ユーザIDの最大バイト数
		MINSIZE_USERID =>  2, # ユーザIDの最小バイト数
		MAXSIZE_PASSWD =>  8, # パスワードの最大バイト数
		MINSIZE_PASSWD =>  5, # パスワードの最小バイト数

		MINSIZE_MES      =>   4, # 発言の最小バイト数
		MAXSIZE_ACTION   =>  60, # アクションの最大バイト数
		MINSIZE_ACTION   =>   4, # アクションの最大バイト数
		MAXSIZE_MEMOCNT  => 300, # メモの最大バイト数
		MINSIZE_MEMOCNT  =>   4, # メモの最小バイト数
		MAXSIZE_MEMOLINE =>  15, # メモの最大行数

		MAXSIZE_VNAME    => 32,  # 村の名前の最大バイト数
		MINSIZE_VNAME    => 6,   # 村の名前の最小バイト数
		MAXSIZE_VCOMMENT => 600, # 村の説明の最大バイト数
		MINSIZE_VCOMMENT => 16,  # 村の説明の最小バイト数
		MAXSIZE_VPLCNT   => 25,  # 定員の最大数
		MINSIZE_VPLCNT   =>  4,  # 定員の最小数

		MAXSIZE_HANDLENAME => 64,  # ハンドル名の最大バイト数
		MAXSIZE_URL        => 128, # URLの最大バイト数
		MAXSIZE_INTRO      => 600, # 自己紹介の最大バイト数

		MAXCOUNT_STIGMA => 5, # 聖痕者の最大数

		#----------------------------------------
		# オプション機能
		#----------------------------------------

		# TypeKey認証（未実装）
		ENABLED_TYPEKEY => 0, # 1:TypeKey認証を用いる
		TOKEN_TYPEKEY => '',

		# QRコード
		# ※要QRcode Perl CGI & PHP scripts
		# http://www.swetake.com/qr/qr_cgi.html
		ENABLED_QR => 0, # 1:QRコード出力機能を使用する
		URL_QR => 'http://testserver/qr/perl/qr_img.cgi',

		# gzip転送機能
#		FILE_GZIP => '/bin/gzip',
		FILE_GZIP => '',

		DEFAULT_TEXTRS => 'sow', # デフォルトの文字列リソース

		DEFAULT_UA => 'html401', # デフォルトの出力形式
		ENABLED_PLLOG => 1, # 1:プレイヤーの操作ログを記録
		ENABLED_SCORE => 1, # 人狼譜の出力

		# RSS出力
		ENABLED_RSS => 1,
		MAXSIZE_RSSDESC => 400, # RSS の description要素の最大バイト数
		RSS_ENCODING_UTF8  => 1, # 1:RSSを UTF-8 で出力する（要Jcode.pm）

		# ランダム表示機能
		ENABLED_RANDOMTEXT => 1,
		RANDOMTEXT_1D6     => '1d6',
		RANDOMTEXT_1D10    => '1d10',
		RANDOMTEXT_1D20    => '1d20',
		RANDOMTEXT_FORTUNE => 'fortune',
		RANDOMTEXT_LIVES   => 'who',
		RANDOMTEXT_MIKUJI  => 'omikuji',
		RANDOMTEXT_ROLE    => 'role',

		# アプリケーションログ
		ENABLED_APLOG => 1,
		LEVEL_APLOG => 5,
		MAXSIZE_APLOG => 65536,
		MAXNO_APLOG => 9,
		ENABLED_HTTPLOG => 0, # HTTPログ出力

		OUTPUT_HTTP_EQUIV => 1, # HTMLに http-equiv を出力する時は 1 に。

		# form要素の method属性値
		# うまく動作しない時は get に設定してみてください。
		METHOD_FORM => 'post',

		# form要素の method属性値（携帯モード）
		# 大昔の携帯には post を受け付けない物があるらしい。
		# 最近のならまず大丈夫っぽいけど。
		METHOD_FORM_MB => 'post',

		MAXSIZE_QUERY => 65536,

		# 時差
		TIMEZONE => 9, # JST

		# クッキーの生存期間
		TIMEOUT_COOKIE => 60 * 60 * 24 * 14,

		CID_MAKER   => 'maker', # 村建て人用の便宜上のキャラID
		CID_ADMIN   => 'admin', # 管理人用の便宜上のキャラID

		# 基本ディレクトリ
		BASEDIR_CGI => '.',
		BASEDIR_DOC => '.',
		BASEDIR_DAT => './data',

		FILE_SOW       => "sow.cgi",
		FILE_VIL       => "vil.cgi",
		FILE_LOG       => "log.cgi",
		FILE_LOGINDEX  => "logidx.cgi",
		FILE_LOGCNT    => "logcnt.cgi",
		FILE_QUE       => "que.cgi",
		FILE_MEMO      => "memo.cgi",
		FILE_MEMOINDEX => "memoidx.cgi",
		FILE_SCORE     => "score.cgi",

#		FILE_JS_SOW    => "sow.js",
		FILE_JS_FILTER => "filter.js",
		FILE_FAVICON   => "favicon.ico",

		PERMITION_MKDIR => 0777, # 未使用（おい）

		MIKUJI           => \@mikuji,
		COPYRIGHTS       => \@copyrights,
		COUNTS_SAY       => \%saycnt,
		CSIDLIST         => \@csidlist,
		TRSIDLIST        => \@trsidlist,
		ROW_MB           => \@row_mb,
		ROW_PC           => \@row_pc,
		CSS              => \%csslist,
		RATING           => \%rating,
		ROBOTS           => \@robots,
	);

	my $cfglocalfile = "./_config_local.pl";
	if (-r $cfglocalfile) {
		require $cfglocalfile;
		&SWLocalConfig::GetLocalBaseDirConfig(\%cfg);
	}

	$cfg{'DIR_LIB'}        = "$cfg{'BASEDIR_CGI'}/lib";
	$cfg{'DIR_HTML'}       = "$cfg{'BASEDIR_CGI'}/html";
	$cfg{'DIR_RS'}         = "$cfg{'BASEDIR_CGI'}/rs";
	$cfg{'DIR_USER'}       = "$cfg{'BASEDIR_DAT'}/user";
	$cfg{'DIR_VIL'}        = "$cfg{'BASEDIR_DAT'}/vil";
	$cfg{'DIR_LOG'}        = "$cfg{'BASEDIR_DAT'}/log";
	$cfg{'DIR_IMG'}        = "$cfg{'BASEDIR_DOC'}/img";
	$cfg{'FILE_LOCK'}      = "$cfg{'BASEDIR_DAT'}/lock";
	$cfg{'FILE_JCODE'}     = "$cfg{'DIR_LIB'}/jcode.pl";
	$cfg{'FILE_SOWGROBAL'} = "$cfg{'BASEDIR_DAT'}/sowgrobal.cgi";
	$cfg{'FILE_VINDEX'}    = "$cfg{'BASEDIR_DAT'}/vindex.cgi";
	$cfg{'FILE_APLOG'}     = "$cfg{'DIR_LOG'}/aplog.cgi";
	$cfg{'FILE_ERRLOG'}    = "$cfg{'DIR_LOG'}/errlog.cgi";

	if (-r $cfglocalfile) {
		require $cfglocalfile;
		&SWLocalConfig::GetLocalConfig(\%cfg);
	}

	return \%cfg;
}

1;
