public function process() { if (!$this->isLocked()) { $time = $this->dateTimeProvider->getDateTime()->format('U'); $ids = $this->VDataModel->getAllIds(); foreach ($ids as $id) { $village = $this->villageService->getVillage($id); $this->productionService->processProduction($village, $time); } $this->buildingService->processBuildings($time); $this->processTraining->process($time); $this->releaseLock(); } }
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')]); } }