/** * @param App\GameModule\DTO\Village $village * @param int $field * @return array */ public function getAvailable($village, $field) { $available = []; if ($field == 40) { if ($village->getOwner()->tribe === 1) { $available[] = $this->buildingService->getBuilding(BuildingModel::CITY_WALL, 1, $village); return $available; } elseif ($village->getOwner()->tribe === 2) { $available[] = $this->buildingService->getBuilding(BuildingModel::EARTH_WALL, 1, $village); return $available; } elseif ($village->getOwner()->tribe === 3) { $available[] = $this->buildingService->getBuilding(BuildingModel::PALISADE, 1, $village); return $available; } } if ($field == 39) { $available[] = $this->buildingService->getBuilding(BuildingModel::RALLY_POINT, 1, $village); return $available; } $buildings = $this->buildingModel->getAll(); foreach ($buildings as $building => $name) { if ($building < 5) { continue; } if ($this->buildingService->isBuilt($village, $building)) { continue; } if (in_array($building, [BuildingModel::CITY_WALL, BuildingModel::EARTH_WALL, BuildingModel::PALISADE, BuildingModel::RALLY_POINT])) { continue; } if ($village->getNatar() === 0 && $building === BuildingModel::WORLD_WONDER) { continue; } $requirements = $this->buildingModel->getRequirements($building); $passed = FALSE; foreach ($requirements as $requirement) { $built = $this->buildingService->isBuilt($village, $requirement->require_building); if ($built && $requirement->exclude_building === $built->getBuilding()) { $passed = FALSE; break; } if ($built && $built->getLevel() >= $requirement->require_level) { $passed = TRUE; } else { $passed = FALSE; break; } } if (!$requirements || $passed) { $available[] = $this->buildingService->getBuilding($building, 1, $village); } } return $available; }
/** * @param int $id * @param int $wid */ public function actionDetail($id, $wid) { $this->template->id = $id; $village = $this->villageService->getVillage($id); /** @var \stdClass $wdata */ $this->template->wdata = $wdata = $this->WDataModel->get($wid); $this->template->reports = $this->reportService->getLastReportsForUser($wid, $this->user->getId()); $this->template->rallyPoint = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::RALLY_POINT); if ($wdata->occupied === 1) { $this->template->village = $this->villageService->getVillage($wid); } else { $this->template->village = FALSE; } if ($wdata->oasistype != 0 && $wdata->occupied == 0) { $this->template->units = $this->unitsModel->get($wid); $this->template->unitNames = $this->unitService->getNames(); } else { $this->template->units = []; } }
/** * @param App\GameModule\DTO\Village $village * @param int $building * @return array */ public function getAvailableUnits($village, $building) { $units = []; if ($village->getOwner()->tribe === App\FrontModule\Model\User\UserService::TRIBE_ROMANS) { switch ($building) { case App\GameModule\Model\Building\BuildingModel::BARRACKS: $barracks = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::BARRACKS); $units[] = $this->unitFactory->getUnit(self::LEGIONNAIRE, $barracks); // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::STABLE: // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::WORKSHOP: // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::RESIDENCE: $residence = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::RESIDENCE); $units[] = $this->unitFactory->getUnit(self::SETTLER, $residence); break; case App\GameModule\Model\Building\BuildingModel::PALACE: $palace = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::PALACE); $units[] = $this->unitFactory->getUnit(self::SETTLER, $palace); break; } } elseif ($village->getOwner()->tribe === App\FrontModule\Model\User\UserService::TRIBE_TEUTONS) { switch ($building) { case App\GameModule\Model\Building\BuildingModel::BARRACKS: $barracks = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::BARRACKS); $units[] = $this->unitFactory->getUnit(self::MACEMAN, $barracks); // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::STABLE: // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::WORKSHOP: // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::RESIDENCE: $residence = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::RESIDENCE); $units[] = $this->unitFactory->getUnit(self::SETTLER_TEUTON, $residence); break; case App\GameModule\Model\Building\BuildingModel::PALACE: $palace = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::PALACE); $units[] = $this->unitFactory->getUnit(self::SETTLER_TEUTON, $palace); break; } } elseif ($village->getOwner()->tribe === App\FrontModule\Model\User\UserService::TRIBE_GAULS) { switch ($building) { case App\GameModule\Model\Building\BuildingModel::BARRACKS: $barracks = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::BARRACKS); $units[] = $this->unitFactory->getUnit(self::PHALANX, $barracks); // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::STABLE: // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::WORKSHOP: // TODO RESEARCH break; case App\GameModule\Model\Building\BuildingModel::RESIDENCE: $residence = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::RESIDENCE); $units[] = $this->unitFactory->getUnit(self::SETTLER_GAUL, $residence); break; case App\GameModule\Model\Building\BuildingModel::PALACE: $palace = $this->buildingService->isBuilt($village, App\GameModule\Model\Building\BuildingModel::PALACE); $units[] = $this->unitFactory->getUnit(self::SETTLER_GAUL, $palace); break; } } return $units; }