public function process($time) { $trainData = $this->trainingModel->getProcessData($time); foreach ($trainData as $single) { if ($single->timestamp2 < $time + $single->eachtime) { $diff = $time - $single->timestamp2; $amount = floor($diff / $single->eachtime); if ($amount > $single->amt) { $amount = $single->amt; } $remaining = $single->amt - $amount; if ($remaining < 1) { $this->trainingModel->delete($single->id); } else { $this->trainingModel->update($single->id, ['amt' => $remaining, 'timestamp2' => $single->timestamp2 + $single->eachtime * $amount]); } /** @var \stdClass $units */ $units = $this->unitsModel->get($single->vref); $unitName = 'u' . $single->unit; if ($units) { $unitAmount = $units['u' . $single->unit] + $amount; $this->unitsModel->update($units['vref'], [$unitName => $unitAmount]); } else { $this->unitsModel->add([$unitName => $amount]); } } } }
public function actionDefault($id) { if (!$id) { /** @var \stdClass $field */ $field = $this->VDataModel->getByUser($this->presenter->user->getId()); $id = $field->wref; } $this->template->village = $this->villageService->getVillage($id); $this->template->units = $this->unitsModel->get($id); $this->template->unitNames = $this->unitService->getNames(); }
/** * 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]); }
/** * @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 int $id * @param int $oasisType */ public function saveOasisUnits($id, $oasisType) { $unitsData = ['vref' => $id]; switch ($oasisType) { case 1: case 2: //+25% lumber oasis $unitsData['u35'] = rand(5, 10); $unitsData['u36'] = rand(0, 5); $unitsData['u37'] = rand(0, 5); break; case 3: //+25% lumber and +25% crop oasis $unitsData['u35'] = rand(5, 15); $unitsData['u36'] = rand(0, 5); $unitsData['u37'] = rand(0, 5); break; case 4: case 5: //+25% clay oasis $unitsData['u31'] = rand(10, 15); $unitsData['u32'] = rand(5, 15); $unitsData['u35'] = rand(0, 10); break; case 6: //+25% clay and +25% crop oasis $unitsData['u31'] = rand(15, 20); $unitsData['u32'] = rand(10, 15); $unitsData['u35'] = rand(0, 10); break; case 7: case 8: //+25% iron oasis $unitsData['u31'] = rand(10, 15); $unitsData['u32'] = rand(5, 15); $unitsData['u34'] = rand(0, 10); break; case 9: //+25% iron and +25% crop oasis $unitsData['u31'] = rand(15, 20); $unitsData['u32'] = rand(10, 15); $unitsData['u34'] = rand(0, 10); break; case 10: case 11: //+25% crop oasis $unitsData['u31'] = rand(5, 15); $unitsData['u33'] = rand(5, 10); $unitsData['u37'] = rand(0, 10); $unitsData['u39'] = rand(0, 5); break; case 12: //+50% crop oasis $unitsData['u31'] = rand(10, 15); $unitsData['u33'] = rand(5, 10); $unitsData['u38'] = rand(0, 10); $unitsData['u39'] = rand(0, 5); break; } $this->unitsModel->add($unitsData); }
/** * @param App\GameModule\DTO\Village $village * @return \Dibi\Row|FALSE */ public function getUnits($village) { $unitData = $this->unitsModel->get($village->getId()); return $unitData; }