/** * Level up a dragon (or set it as in training, as appropriate) * @param MyDragon $myDragon */ public function levelUp($myDragon) { if ($myDragon->training) { $myDragon->training = false; $myDragon->level++; } elseif ($myDragon->getPresenter()->thisLevel->level_up_fish || $myDragon->level == 0) { // Always level up hatching dragons $myDragon->level++; } elseif ($myDragon->getPresenter()->thisLevel->level_up_time) { $myDragon->training = true; } $myDragon->save(); }
public function levelUp($id) { /** @var MyDragon $myDragon */ $myDragon = MyDragon::find($id); $this->authorize('owner', $myDragon); $this->myDragonService->levelUp($myDragon); if ($myDragon->training) { Notification::add('success', $myDragon->getPresenter()->fullName . ' set as in training'); return Redirect::to(Session::get('table', 'my-dragon')); } else { if (!$this->dragonLevelService->isComplete($myDragon->dragon_id, $myDragon->level)) { Notification::add('info', $myDragon->getPresenter()->fullName . ' levelled up - but there is missing information for level ' . $myDragon->level); return Redirect::route('dragon.level.edit', ['id' => $myDragon->dragon->id, 'level' => $myDragon->level]); } elseif (!$this->dragonLevelService->isUpToDate($myDragon->dragon_id, $myDragon->level)) { Notification::add('warning', $myDragon->getPresenter()->fullName . ' levelled up - but the data for level ' . $myDragon->level . ' may be out of date. Please verify it is correct:'); return Redirect::route('dragon.level.edit', ['id' => $myDragon->dragon->id, 'level' => $myDragon->level]); } else { Notification::add('success', $myDragon->getPresenter()->fullName . ' levelled up'); return Redirect::to(Session::get('table', 'my-dragon')); } } }