/** * @param City $city * @param $thing * @param array $price * @param $time * @return $this|bool */ public function levelUp($city, Model $thing, array $price, $time) { $lack_resource = $city->hasEnoughResources($price); if (empty($lack_resource)) { $thing->level += 1; $thing->finished_at = Carbon::now()->addSeconds($time); $city->resources->subtract($price); $thing->save(); } $messages = []; $resources = ['stone' => 'kő', 'lumber' => 'fa', 'food' => 'élelmiszer', 'iron' => 'vas']; foreach ($lack_resource as $key => $value) { $messages["not_enough_{$key}"] = "Még {$value} {$resources[$key]} hiányzik"; } return redirect()->back()->withErrors($messages); }
/** * Creates a new building * * @param $type @int The type of the building. * @param City $city @int The id of the city in which the building is built. * @param $slot_num @int The number of the slot on which the building going to be built. * @param BuildingSlot $slot @int The id of the slot on which the building is built. * @return $this */ private function createBuilding($type, City $city, $slot_num) { $price = Building::$building_prices[$city->nation][$type]; $lack_resource = $city->hasEnoughResources($price); if (empty($lack_resource)) { $finished = Carbon::now()->addSeconds(Building::$building_times[$city->nation][$type]); $slot = $city->building_slot; $building = Building::create(['type' => $type, 'city_id' => $city->id, 'slot' => $slot->id, 'nation' => $city->nation, 'finished_at' => $finished]); $slot->update(["slot{$slot_num}" => $building->id]); $city->resources->subtract($price); } else { $messages = []; $resources = ['stone' => 'kő', 'lumber' => 'fa', 'food' => 'élelmiszer', 'iron' => 'vas']; foreach ($lack_resource as $key => $value) { $messages["not_enough_{$key}"] = "Még {$value} {$resources[$key]} hiányzik"; } return redirect("city/{$city->id}")->withErrors($messages); } }