Example #1
0
 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);
 }