#---------------------------------------------------------------------- # 箱庭諸島 ver2.20 # 陣営画面作成モジュール(帝国の興亡オリジナル) # 使用条件、使用方法等は、hako-readme.txtファイルを参照 # # 箱庭諸島のページ: http://t.pos.to/hako/ #---------------------------------------------------------------------- # 「帝国の興亡」 ver1.0.0 by おじー http://t.pos.to/ozzy/ # 使用条件は箱庭諸島に準ずる.詳しくは付属のreadme.txtファイルを参照 #---------------------------------------------------------------------- package H2; #---------------------------------------------------------------------- # 陣営画面 #---------------------------------------------------------------------- # メイン sub campMain { # 開放 unlock (); $H2::currentCamp = $H2::camp[$H2::idToCampNumber{$H2::currentCampID}]; # パスワード if($H2::campPassward ne $H2::currentCamp->{'passward'}) { # password間違い tempWrongPassword(); return; } tempPrintCampHead (); # 作戦本部 campAllIslandsInfo(); # 陣営に属する諸島の情報 } #---------------------------------------------------------------------- # テンプレートその他 #---------------------------------------------------------------------- # ○○陣営 作戦本部 sub tempPrintCampHead { out(< ${H2::tagBig_}${H2::tagName_}「$H2::currentCamp->{'name'}」${H2::_tagName} 作戦本部${H2::_tagBig}
陣営パスワード:『$H2::currentCamp->{'passward'}』
$H2::tempBack
END } # 島のコマンド読み込み(陣営画面作成用) sub readCommands { my($id) = @_; my(@command); open(IIN, "${H2::dirName}/island.$id"); for($y = 0; $y < $H2::islandSize; $y++) { $line = ; # 捨てる } # コマンド($H2::unitCount分のみ表示) my($i); for($i = 0; $i < $H2::unitCount; $i++) { $line = ; $line =~ /^([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*)$/; $command[$i] = { 'kind' => int($1), 'target' => int($2), 'x' => int($3), 'y' => int($4), 'arg' => int($5) } } close(IIN); # コマンドのみ返す return \@command, } # 情報の表示 sub campAllIslandsInfo { # テーブルヘッダの書き出し campTableHeader(); # 陣営に属する島のコマンドのみ読み出し my($id); foreach $id (@{ $H2::campToIsland[$H2::currentCampID] }) { $H2::islands[$H2::idToNumber{$id}]->{'command'} = readCommands($id); } # 各島の情報書き出し my($i); for($i = 0; $i < $H2::islandNumber; $i++) { if ($H2::currentCampID == $H2::islands[$i]->{'score'}) { campIslandInfo($H2::islands[$i], $i+1); # 陣営に属する島のみ } } # テーブルフッタの書き出し campTableFooter(); } sub campIslandInfo { my($island, $rank) = @_; # 情報表示 my($id) = $island->{'id'}; my($name); my($farm) = $island->{'farm'}; my($factory) = $island->{'factory'}; my($mountain) = $island->{'mountain'}; my($contribution) = int($island->{'ext'}[1] / 10); # 貢献度 $farm = ($farm == 0) ? "保有せず" : "${farm}0$H2::unitPop"; $factory = ($factory == 0) ? "保有せず" : "${factory}0$H2::unitPop"; $mountain = ($mountain == 0) ? "保有せず" : "${mountain}0$H2::unitPop"; if($island->{'absent'} == 0) { $name = "${H2::tagName_}$island->{'name'}島${H2::_tagName}"; } else { $name = "${H2::tagName2_}$island->{'name'}島($island->{'absent'})${H2::_tagName2}"; } out(< ${H2::tagNumber_}$rank${H2::_tagNumber} $name $island->{'pop'}$H2::unitPop $contribution $island->{'money'}$H2::unitMoney $island->{'food'}$H2::unitFood $island->{'area'}$H2::unitArea ${farm} ${factory} ${mountain} END print "${H2::tagTH_}\n"; for($i = 0; $i < $H2::unitCount; $i++) { campCommand($i, $island->{'command'}->[$i]); } print "${H2::_tagTH}\n"; } sub campTableHeader { out(< END } sub campTableFooter { out(< END } # 入力済みコマンド表示(tempCommandを若干変更) sub campCommand { my($number, $command) = @_; my($kind, $target, $x, $y, $arg) = ( $command->{'kind'}, $command->{'target'}, $command->{'x'}, $command->{'y'}, $command->{'arg'} ); my($name) = "$H2::tagComName_${H2::comName[$kind]}$H2::_tagComName"; my($point) = "$H2::tagName_($x,$y)$H2::_tagName"; $target = $H2::idToName{$target}; if($target eq '') { $target = "無人"; } $target = "$H2::tagName_${target}島$H2::_tagName"; my($value) = $arg * $H2::comCost[$kind]; if($value == 0) { $value = $H2::comCost[$kind]; } if($value < 0) { $value = -$value; $value = "$value$H2::unitFood"; } else { $value = "$value$H2::unitMoney"; } $value = "$H2::tagName_$value$H2::_tagName"; my($j) = sprintf("%02d:", $number + 1); out("$H2::tagNumber_$j$H2::_tagNumber"); if(($kind == $H2::comDoNothing) || ($kind == $H2::comGiveup)) { out("$name"); } elsif(($kind == $H2::comMissileNM) || ($kind == $H2::comMissilePP) || ($kind == $H2::comMissileST) || ($kind == $H2::comMissileLD)) { # ミサイル系 my($n) = ($arg == 0 ? '無制限' : "${arg}発"); out("$target$pointへ$name($H2::tagName_$n$H2::_tagName)"); } elsif($kind == $H2::comSendMonster) { # 怪獣派遣 out("$targetへ$name"); } elsif($kind == $H2::comSell) { # 食料輸出 out("$name$value"); } elsif($kind == $H2::comPropaganda) { # 誘致活動 out("$name"); } elsif(($kind == $H2::comMoney) || ($kind == $H2::comFood)) { # 援助 out("$targetへ$name$value"); } elsif($kind == $H2::comDestroy) { # 掘削 if($arg != 0) { out("$pointで$name(予算${value})"); } else { out("$pointで$name"); } } else { # 座標付き out("$pointで$name"); } out("
"); } 1;
${H2::tagTH_}順位${H2::_tagTH} ${H2::tagTH_}島${H2::_tagTH} ${H2::tagTH_}人口${H2::_tagTH} ${H2::tagTH_}貢献${H2::_tagTH} ${H2::tagTH_}資金${H2::_tagTH} ${H2::tagTH_}食料${H2::_tagTH} ${H2::tagTH_}面積${H2::_tagTH} ${H2::tagTH_}農場規模${H2::_tagTH} ${H2::tagTH_}工場規模${H2::_tagTH} ${H2::tagTH_}採掘場規模${H2::_tagTH}