public function actionDefault($id, $building, $field) { if ($building == 0) { $this->redirect('chooseBuilding', [$id, $field]); } $village = $this->villageService->getVillage($id); $current = $this->buildingService->getBuilding($building, $village->getFData()['f' . $field], $village); $this->template->current = $current; $queue = $this->BDataModel->getBuildingQueue($village->getId()); $nextLevel = $village->getFData()['f' . $field] + 1; foreach ($queue as $single) { if ($single->type == $current->getBuilding() && $single->field == $field) { $nextLevel = $single->level; $nextLevel++; } } if ($nextLevel == 0) { $nextLevel++; } $next = $this->buildingService->getBuilding($building, $nextLevel, $village); $this->template->village = $village; $this->template->field = $field; $this->template->next = $next; $this->template->canBuild = $next ? $this->buildingService->canBuild($next, $field, $village) : FALSE; $this->template->busyWorkers = $next ? $this->buildingService->busyWorkers($next, $village) : FALSE; $this->template->storage = $next ? $this->buildingService->isStorageBigEnough($next, $village) : FALSE; $this->template->granary = $next ? $this->buildingService->isGranaryBigEnough($next, $village) : FALSE; $this->template->resources = $next ? $this->buildingService->isThereEnoughResources($next, $village) : FALSE; $this->template->buldingStatus = $this->buildingService->canBuildLevel($next, $field, $village); }
public function render() { $id = $this->presenter->getParameter('id'); if (!$id) { /** @var \stdClass $field */ $field = $this->VDataModel->getByUser($this->presenter->user->getId()); $id = $field->wref; } $this->template->buildings = $this->BDataModel->getBuildingQueue($id); $this->template->village = $this->villageService->getVillage($id); $this->template->names = $this->buildingModel->getAll(); $this->template->setFile(__DIR__ . '/BuildingControl.latte'); $this->template->render(); }
/** * @param App\GameModule\DTO\Building $building * @param int $field * @param App\GameModule\DTO\Village $village * @return bool */ public function canBuildLevel($building, $field, $village) { if (!$building) { return 'Building is at maximum level'; } $current = $this->getBuilding($village->getFData()['f' . $field . 't'], $village->getFData()['f' . $field], $village); if ($current) { if ($current->getLevel() === $building->getLevel()) { return 'Building is at same level.'; } /** @var \stdClass $maxLevel */ $maxLevel = $this->buildingModel->getBuildingMaxLevel($building->getBuilding()); if ($current->getLevel() === $maxLevel->level) { return 'Building is at maximum level'; } $queue = $this->BDataModel->getBuildingQueue($village->getId()); foreach ($queue as $single) { if ($single->level === $building->getLevel() && $single->type === $building->getBuilding() && $single->field == $field) { return 'Building is already being build.'; } if ($maxLevel->level === $single->level && $single->type === $building->getBuilding() && $single->field == $field) { return 'Building max level under construction'; } } } return TRUE; }