Пример #1
0
 /**
  * @param int $id
  * @param App\GameModule\DTO\Building|bool $building
  * @return App\GameModule\DTO\Unit
  */
 public function getUnit($id, $building = FALSE)
 {
     /** @var \stdClass $unitData */
     $unitData = $this->unitModel->get($id);
     $unit = new App\GameModule\DTO\Unit();
     $unit->setId($unitData->id);
     $unit->setName($unitData->name);
     $unit->setAttack($unitData->attack);
     $unit->setDefenceInfantry($unitData->defence_infantry);
     $unit->setDefenceCalvary($unitData->defence_calvary);
     $unit->setWood($unitData->wood);
     $unit->setClay($unitData->clay);
     $unit->setIron($unitData->iron);
     $unit->setCrop($unitData->crop);
     $unit->setUpkeep($unitData->pop);
     $unit->setSpeed($unitData->speed);
     $time = $unitData->time / $this->speed;
     if ($building) {
         $time = $time * ($building->getParameter() / 100);
     }
     $unit->setTime(round($time));
     $unit->setCapacity($unitData->capacity);
     $unit->setType($unitData->type);
     $unit->setTribe($unitData->tribe);
     return $unit;
 }
Пример #2
0
 /**
  * @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;
 }