Example #1
0
 public function build($id, $field, $building, $level)
 {
     $village = $this->villageService->getVillage($id);
     $next = $this->getBuilding($building, $level, $village);
     if ($this->isThereEnoughResources($next, $village)) {
         if ($village->getOwner()->tribe === 1) {
             if ($next->getBuilding() < 5) {
                 if ($time = $this->BDataModel->getLastOuterBuildTime($village->getId())) {
                     $time += $next->getTime();
                 } else {
                     /** @var int $now */
                     $now = $this->dateTimeProvider->getDateTime()->format('U');
                     $time = $next->getTime() + $now;
                 }
             } elseif ($next->getBuilding() > 4) {
                 if ($time = $this->BDataModel->getLastInnerBuildTime($village->getId())) {
                     $time += $next->getTime();
                 } else {
                     /** @var int $now */
                     $now = $this->dateTimeProvider->getDateTime()->format('U');
                     $time = $next->getTime() + $now;
                 }
             } else {
                 /** @var int $now */
                 $now = $this->dateTimeProvider->getDateTime()->format('U');
                 $time = $next->getTime() + $now;
             }
         } else {
             if ($time = $this->BDataModel->getLastBuildTime($village->getId())) {
                 $time += $next->getTime();
             } else {
                 /** @var int $now */
                 $now = $this->dateTimeProvider->getDateTime()->format('U');
                 $time = $next->getTime() + $now;
             }
         }
         $this->BDataModel->add(['wid' => $id, 'field' => $field, 'type' => $building, 'timestamp' => $time, 'level' => $level]);
         $this->VDataModel->update($id, ['wood' => $village->getActualWood() - $next->getWood(), 'clay' => $village->getActualClay() - $next->getClay(), 'iron' => $village->getActualIron() - $next->getIron(), 'crop' => $village->getActualCrop() - $next->getCrop(), 'lastupdate2' => $this->dateTimeProvider->getDateTime()->format('U')]);
     }
 }