Larakit\Boot::register_alias('HtmlTableRow', Larakit\Html\Facades\TableRow::class); Larakit\Boot::register_alias('HtmlTableRowCell', Larakit\Html\Facades\TableRowCell::class); Larakit\Boot::register_alias('HtmlLi', Larakit\Html\Facades\Li::class); Larakit\Boot::register_alias('HtmlLink', Larakit\Html\Facades\Link::class); Larakit\Boot::register_alias('HtmlUl', Larakit\Html\Facades\Ul::class); Larakit\Boot::register_alias('HtmlOl', Larakit\Html\Facades\Ol::class); Larakit\Boot::register_alias('HtmlVideo', Larakit\Html\Facades\Video::class); Larakit\Boot::register_alias('HtmlBase', Larakit\Html\Facades\Base::class); //###################################################################### // регистрируем функции //###################################################################### Larakit\Twig::register_function('html_progress', function () { return HtmlProgress::setContent(''); }); Larakit\Twig::register_function('html_map', function ($name, $id = null) { return \HtmlMap::setName($name)->setId($id ? $id : $name); }); Larakit\Twig::register_function('html_progress_bar', function () { return HtmlProgressBar::setContent(''); }); Larakit\Twig::register_function('html_a', function ($url) { return HtmlA::setHref($url)->setContent($url); }); Larakit\Twig::register_function('html_audio', function ($src) { return HtmlAudio::setSrc($src); }); Larakit\Twig::register_function('html_abbr', function ($abbr, $fulltext) { return HtmlAbbr::setContent($abbr)->setTitle($fulltext); }); Larakit\Twig::register_function('html_blockquote', function ($content, $author = null) { return HtmlBlockquote::setContent($content)->setAuthor($author);
function editMap($hako, $data) { global $init; // パスワード if (!Util::checkPassword("", $data['PASSWORD'])) { // password間違い HakoError::wrongPassword(); return; } $html = new HtmlMap(); $id = $data['ISLANDID']; $number = $hako->idToNumber[$id]; $island = $hako->islands[$number]; // 地形リストを生成 $landList = array("{$init->landSea}", "{$init->landSeaSide}", "{$init->landWaste}", "{$init->landPoll}", "{$init->landPlains}", "{$init->landForest}", "{$init->landTown}", "{$init->landProcity}", "{$init->landNewtown}", "{$init->landBigtown}", "{$init->landSeaCity}", "{$init->landFroCity}", "{$init->landPort}", "{$init->landShip}", "{$init->landRail}", "{$init->landStat}", "{$init->landTrain}", "{$init->landFusya}", "{$init->landSyoubou}", "{$init->landSsyoubou}", "{$init->landFarm}", "{$init->landSfarm}", "{$init->landNursery}", "{$init->landFactory}", "{$init->landCommerce}", "{$init->landMountain}", "{$init->landHatuden}", "{$init->landBase}", "{$init->landHaribote}", "{$init->landDefence}", "{$init->landSbase}", "{$init->landSdefence}", "{$init->landMyhome}", "{$init->landSoukoM}", "{$init->landSoukoF}", "{$init->landMonument}", "{$init->landSoccer}", "{$init->landPark}", "{$init->landSeaResort}", "{$init->landOil}", "{$init->landBank}", "{$init->landMonster}", "{$init->landSleeper}", "{$init->landZorasu}"); // 地形リスト名称を生成 $landName = array("海、浅瀬", "砂浜", "荒地", "汚染土壌", "平地", "森", "村、町、都市", "防災都市", "ニュータウン", "現代都市", "海底都市", "海上都市", "港", "船舶", "線路", "駅", "電車", "風車", "消防署", "海底消防署", "農場", "海底農場", "養殖場", "工場", "商業ビル", "山、採掘場", "発電所", "ミサイル基地", "ハリボテ", "防衛施設", "海底基地", "海底防衛施設", "マイホーム", "金庫", "食料庫", "記念碑", "スタジアム", "遊園地", "海の家", "海底油田", "銀行", "怪獣", "怪獣(睡眠中)", "ぞらす"); echo <<<END <script type="text/javascript"> function ps(x, y, ld, lv) { \tdocument.InputPlan.POINTX.options[x].selected = true; \tdocument.InputPlan.POINTY.options[y].selected = true; \tdocument.InputPlan.LAND.options[ld].selected = true; \tif(ld == {$init->landMonster} || ld == {$init->landSleeper}) { \t\tmn = Math.floor(lv / 10); \t\tlv = lv - mn * 10; \t\tdocument.InputPlan.MONSTER.options[mn].selected = true; \t\tdocument.InputPlan.LEVEL.options[lv].selected = true; \t} else { \t\tdocument.InputPlan.LEVEL.options[lv].selected = true; \t} \treturn true; } </script> <div class="text-center"> \t{$init->tagBig_}{$init->tagName_}{$island['name']}{$init->nameSuffix}{$init->_tagName} マップ・エディタ{$init->_tagBig}<br> </div> <form name="TOP" action="{$GLOBALS['THIS_FILE']}" method="post"> \t<input type="hidden" name="PASSWORD" value="{$data['PASSWORD']}"> \t<input type="hidden" name="mode" value="list"> </form> END; // 島の情報を表示 $html->islandInfo($island, $number, 1); // 説明文を表示 echo <<<END <div class="text-center"> <table class="table table-bordered"> <tr valign="top"> <td {$init->bgCommandCell}> \t<b>レベルについて</b> \t<ul> \t\t<li><b>海、浅瀬</b><br>レベル 0 のとき海<br>1 のとき浅瀬<br>それ以外 のとき財宝 \t\t<li><b>荒地</b><br>レベル 1 のとき着弾点 \t\t<li><b>村、町、都市</b><br>レベル 30 未満が村<br>レベル 100 未満が町<br>レベル 200 未満が都市 \t\t<li><b>ミサイル基地</b><br>経験値 \t\t<li><b>山、採掘場</b><br>レベル 1 以上のとき採掘場 \t\t<li><b>怪獣</b><br>各怪獣の最大レベルを超える<br>設定はできません \t\t<li><b>海底基地</b><br>経験値 \t</ul> </td> <td {$init->bgMapCell}> END; // 地形出力 $html->islandMap($hako, $island, 1); // エディタ領域の表示 echo <<<END </td> <td {$init->bgInputCell}> <div class="text-center"> \t<form action="{$GLOBALS['THIS_FILE']}" method="post" name="InputPlan"> \t\t<input type="hidden" name="mode" value="regist"> \t\t<input type="hidden" name="ISLANDID" value="{$island['id']}"> \t\t<input type="hidden" name="PASSWORD" value="{$data['PASSWORD']}"> \t\t<strong>マップ・エディタ</strong><br> \t\t<hr> \t\t<strong>座標(</strong> \t\t<select name="POINTX"> END; for ($i = 0; $i < $init->islandSize; $i++) { if ($i == $data['defaultX']) { echo "<option value=\"{$i}\" selected>{$i}</option>\n"; } else { echo "<option value=\"{$i}\">{$i}</option>\n"; } } echo "</select>, <select name=\"POINTY\">"; for ($i = 0; $i < $init->islandSize; $i++) { if ($i == $data['defaultY']) { echo "<option value=\"{$i}\" selected>{$i}</option>\n"; } else { echo "<option value=\"{$i}\">{$i}</option>\n"; } } echo <<<END \t\t</select><strong>)</strong> \t\t<hr> \t\t<strong>地形</strong> \t\t<select name="LAND"> END; for ($i = 0; $i < count($landList); $i++) { if ($landList[$i] == $data['defaultLAND']) { echo "<option value=\"{$landList[$i]}\" selected>{$landName[$i]}</option>\n"; } else { echo "<option value=\"{$landList[$i]}\">{$landName[$i]}</option>\n"; } } echo <<<END \t\t</select> \t\t<hr> \t\t<strong>怪獣の種類</strong> \t\t<select name="MONSTER"> END; for ($i = 0; $i < $init->monsterNumber; $i++) { if ($i == $data['defaultMONSTER']) { echo "<option value=\"{$i}\" selected>{$init->monsterName[$i]}</option>\n"; } else { echo "<option value=\"{$i}\">{$init->monsterName[$i]}</option>\n"; } } echo <<<END \t\t</select> \t\t<hr> \t\t<strong>船舶の種類</strong> \t\t<select name="SHIP"> END; for ($i = 0; $i < 15; $i++) { if ($init->shipName[$i] != "") { if ($i == $data['defaultSHIP']) { echo "<option value=\"{$i}\" selected>{$init->shipName[$i]}</option>\n"; } else { echo "<option value=\"{$i}\">{$init->shipName[$i]}</option>\n"; } } } echo <<<END \t\t</select> \t\t<hr> \t\t<strong>レベル</strong> \t\t<input type="number" min="0" max="1048575" size="8" maxlength="7" name="LEVEL" value="{$data['defaultLEVEL']}"> \t\t<hr> \t\t<input type="submit" value="登録"> \t</form> </div> <ul> \t<li>登録するときは十分注意願います。 \t<li>データを破壊する場合があります。 \t<li>バックアップを行ってから<br>行う様にしましょう。 \t<li>地形データを変更するのみで、<br>他のデータは変更されません。<br> \tターン更新で他のデータへ反映されます。 </ul> </td> </tr> </table> </div> END; }
function commandMain($hako, $data) { global $init; $id = $data['ISLANDID']; $num = $hako->idToNumber[$id]; $island = $hako->islands[$num]; $name = $island['name']; // パスワード if (!Util::checkPassword($island['password'], $data['PASSWORD'])) { // password間違い HakoError::wrongPassword(); return; } // モードで分岐 $command = $island['command']; if (strcmp($data['COMMANDMODE'], 'delete') == 0) { Util::slideFront($command, $data['NUMBER']); Success::commandDelete(); } else { if ($data['COMMAND'] == $init->comAutoPrepare || $data['COMMAND'] == $init->comAutoPrepare2) { // フル整地、フル地ならし // 座標配列を作る $r = Util::makeRandomPointArray(); $rpx = $r[0]; $rpy = $r[1]; $land = $island['land']; // コマンドの種類決定 switch ($data['COMMAND']) { case $init->comAutoPrepare: $kind = $init->comPrepare; break; case $init->comAutoPrepare2: $kind = $init->comPrepare2; break; } // $kind = $init->comPrepare; // if($data['COMMAND'] == $init->comAutoPrepare2) { // $kind = $init->comPrepare2; // } $i = $data['NUMBER']; $j = 0; while ($j < $init->pointNumber && $i < $init->commandMax) { $x = $rpx[$j]; $y = $rpy[$j]; if ($land[$x][$y] == $init->landWaste) { Util::slideBack($command, $i); $command[$i] = array('kind' => $kind, 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0); $i++; } $j++; } Success::commandAdd(); } else { if ($data['COMMAND'] == $init->comAutoReclaim) { $r = Util::makeRandomPointArray(); $rpx = $r[0]; $rpy = $r[1]; $land = $island['land']; $landValue = $island['landValue']; $i = $data['NUMBER']; $j = 0; while ($j < $init->pointNumber && $i < $init->commandMax) { $x = $rpx[$j]; $y = $rpy[$j]; $kind = $land[$x][$y]; $lv = $landValue[$x][$y]; if ($kind == $init->landSea && $lv == 1) { Util::slideBack($command, $i); $command[$i] = array('kind' => $init->comReclaim, 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0); $i++; } $j++; } /* } elsif($HcommandKind == $HcomAutoDestroy) { # 浅瀬掘削 makeRandomPointArray(); my($land) = $island->{'land'}; my($landValue) = $island->{'landValue'}; my($x, $y, $kind, $lv, $i, $n); $n = 0; for ($i = 0; ($i < $HpointNumber) && ($n < $HcommandMax); $i++) { $x = $Hrpx[$i]; $y = $Hrpy[$i]; $kind = $land->[$x][$y]; $lv = $landValue->[$x][$y]; if (($kind == $HlandSea) && ($lv == 1)) { # 浅瀬 slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomDestroy, # 掘削 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; $n++; } } tempCommandAdd(); } elsif($HcommandKind == $HcomAutoSellTree) { # 伐採 # (数量×200本より多い森だけが対象) makeRandomPointArray(); my($land) = $island->{'land'}; my($landValue) = $island->{'landValue'}; my($x, $y, $kind, $lv, $i, $n); $n = 0; for ($i = 0; ($i < $HpointNumber) && ($n < $HcommandMax - 1); $i++) { $x = $Hrpx[$i]; $y = $Hrpy[$i]; $kind = $land->[$x][$y]; $lv = $landValue->[$x][$y]; if (($kind == $HlandForest) && ($lv > $HcommandArg * 2)) { # 森 slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomSellTree, # 伐採 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; $n += 2; } } tempCommandAdd(); } elsif($HcommandKind == $HcomAutoForestry) { # 伐採と植林 # (数量×200本より多い森だけが対象) makeRandomPointArray(); my($land) = $island->{'land'}; my($landValue) = $island->{'landValue'}; my($x, $y, $kind, $lv, $i, $n); $n = 0; for ($i = 0; ($i < $HpointNumber) && ($n < $HcommandMax - 1); $i++) { $x = $Hrpx[$i]; $y = $Hrpy[$i]; $kind = $land->[$x][$y]; $lv = $landValue->[$x][$y]; if (($kind == $HlandForest) && ($lv > $HcommandArg * 2)) { # 森 slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomPlant, # 植林 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; slideBack($command, $HcommandPlanNumber); $command->[$HcommandPlanNumber] = { 'kind' => $HcomSellTree, # 伐採 'target' => 0, 'x' => $x, 'y' => $y, 'arg' => 0 }; $n += 2; } } tempCommandAdd(); */ } else { if ($data['COMMAND'] == $init->comAutoDelete) { // 全消し for ($i = 0; $i < $init->commandMax; $i++) { Util::slideFront($command, 0); } Success::commandDelete(); } else { if (strcmp($data['COMMANDMODE'], 'insert') == 0) { Util::slideBack($command, $data['NUMBER']); } Success::commandAdd(); // コマンドを登録 $command[$data['NUMBER']] = array('kind' => $data['COMMAND'], 'target' => $data['TARGETID'], 'x' => $data['POINTX'], 'y' => $data['POINTY'], 'arg' => $data['AMOUNT']); } } } } // データの書き出し $island['command'] = $command; $hako->islands[$num] = $island; $hako->writeIslandsFile($island['id']); // owner modeへ $html = new HtmlMap(); $html->owner($hako, $data); }