/** * @param int $id * @return App\GameModule\DTO\Village */ public function getVillage($id) { /** @var \stdClass $VData */ $VData = $this->VDataModel->getByWId($id); $village = new App\GameModule\DTO\Village(); $village->setId($id); if ($VData) { /** @var \stdClass $owner */ $owner = $this->userModel->get($VData->owner); $village->setOwner($owner); $village->setActualWood($VData->wood); $village->setActualClay($VData->clay); $village->setActualIron($VData->iron); $village->setActualCrop($VData->crop); $village->setStorage($VData->maxstore); $village->setGranary($VData->maxcrop); $upkeep = $VData->pop + $this->upkeepService->getUpkeep($id); $village->setUpkeep($upkeep); $village->setName($VData->name); $village->setLoyalty($VData->loyalty); $village->setCapital($VData->capital); $village->setType($VData->type); $village->setNatar($VData->natar); $village->setCulturePoints($VData->cp); $village->setPopulation($VData->pop); $FData = $this->FDataModel->getByVref($village->getId())->toArray(); $village->setFData($FData); $village->setProductionWood($this->productionService->getProductionWood($village)); $village->setProductionClay($this->productionService->getProductionClay($village)); $village->setProductionIron($this->productionService->getProductionIron($village)); $village->setProductionCrop($this->productionService->getProductionCrop($village)); $village->setMaxUpkeep($this->productionService->getBaseProductionCrop($village)); } return $village; }
/** * Handle all related to create new user. * * @param \stdClass $data */ public function createUser($data) { $user = $this->registerUser($data); /** @var \stdClass $field */ $field = $this->WDataModel->getRandom($data->position); $this->WDataModel->setFieldTaken($field->id); $villageName = $this->villageService->getNewVillageName($user); $vid = $this->VDataModel->addVillageForUser($user, $field, $villageName); $this->FDataModel->addResourceFields($field->fieldtype, $vid); $this->unitsModel->add(['vref' => $vid]); $this->TDataModel->add(['vref' => $vid]); $this->ABDataModel->add(['vref' => $vid]); }
public function processBuildings($time) { $buildings = $this->BDataModel->getBuilt($time); foreach ($buildings as $building) { $data = []; $village = $this->villageService->getVillage($building->wid); $buildingStats = $this->getBuilding($building->type, $building->level, $village); $this->FDataModel->update($building->wid, ['f' . $building->field => $building->level, 'f' . $building->field . 't' => $building->type]); $data['pop'] = $village->getPopulation() + $buildingStats->getUpkeep(); $data['cp'] = $village->getCulturePoints() + $buildingStats->getCulturePoints(); switch ($buildingStats->getBuilding()) { case BuildingModel::WAREHOUSE: $data['maxstore'] = $this->storageMultiplier * $buildingStats->getParameter(); break; case BuildingModel::GRANARY: $data['maxcrop'] = $this->storageMultiplier * $buildingStats->getParameter(); break; } $this->VDataModel->update($village->getId(), $data); $this->BDataModel->delete($building->id); } }