Example #1
0
 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();
     }
 }
 /**
  * @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;
 }
Example #3
0
 public function renderChooseBuilding($id, $field)
 {
     $this->template->village = $village = $this->villageService->getVillage($id);
     $available = $this->buildingAvailability->getAvailable($village, $field);
     $availableData = [];
     foreach ($available as $building) {
         $availableData[] = ['building' => $building, 'canBuild' => $this->buildingService->canBuild($building, $field, $village), 'busyWorkers' => $this->buildingService->busyWorkers($building, $village), 'storage' => $this->buildingService->isStorageBigEnough($building, $village), 'granary' => $this->buildingService->isGranaryBigEnough($building, $village), 'resources' => $this->buildingService->isThereEnoughResources($building, $village), 'buldingStatus' => $this->buildingService->canBuildLevel($building, $field, $village)];
     }
     $this->template->available = $availableData;
     $this->template->field = $field;
 }
Example #4
0
 /**
  * @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 = [];
     }
 }
Example #5
0
 /**
  * @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;
 }