Example #1
0
 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();
 }
Example #3
0
 /**
  * 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]);
 }
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 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);
 }
Example #6
0
 /**
  * @param App\GameModule\DTO\Village $village
  * @return \Dibi\Row|FALSE
  */
 public function getUnits($village)
 {
     $unitData = $this->unitsModel->get($village->getId());
     return $unitData;
 }