From f84a303c769cc4726d3f53fdd31cf027d5d7ce59 Mon Sep 17 00:00:00 2001 From: Doar Mihai Date: Sun, 28 Jun 2026 22:49:59 +0300 Subject: [PATCH] feat: add JailController and bust-out route Co-Authored-By: Claude Sonnet 4.6 --- app/Http/Controllers/Game/JailController.php | 40 ++++++++++++++++++++ routes/game.php | 10 ++++- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/Game/JailController.php diff --git a/app/Http/Controllers/Game/JailController.php b/app/Http/Controllers/Game/JailController.php new file mode 100644 index 0000000..e2594f3 --- /dev/null +++ b/app/Http/Controllers/Game/JailController.php @@ -0,0 +1,40 @@ +jailService = new JailService(); + } + + /** + * Attempt to bust out of jail. + */ + public function bustOut(Request $request): RedirectResponse + { + $character = $request->user()->character; + + if (!$character || !$character->isInJail()) { + return redirect()->route('game.dashboard'); + } + + $result = $this->jailService->bustOut($character); + + if ($result['success']) { + return redirect()->route('game.dashboard') + ->with('success', $result['message']); + } + + return redirect()->route('game.jail') + ->with('error', $result['message']); + } +} \ No newline at end of file diff --git a/routes/game.php b/routes/game.php index 4d2f673..9a240ff 100644 --- a/routes/game.php +++ b/routes/game.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Game\CrimeController; use App\Http\Controllers\Game\DashboardController; use App\Http\Controllers\Game\GymController; use App\Http\Controllers\Game\InventoryController; +use App\Http\Controllers\Game\JailController; use Illuminate\Support\Facades\Route; /* @@ -85,7 +86,12 @@ Route::middleware(['auth'])->group(function () { if (!$character || !$character->isInJail()) { return redirect()->route('game.dashboard'); } - $releaseTime = $character->in_jail_until ? $character->in_jail_until->diffForHumans() : 'unknown'; - return view('game.jail', compact('character', 'releaseTime')); + $releaseTime = $character->in_jail_until ? $character->in_jail_until->diffForHumans() : 'unknown'; + $bustOutChance = (int) round((new \App\Services\Game\JailService())->calculateBustOutChance($character) * 100); + $bustOutCost = config('game.jail.breakout_cost', 1000); + return view('game.jail', compact('character', 'releaseTime', 'bustOutChance', 'bustOutCost')); })->name('game.jail'); + + Route::post('/game/jail/bust-out', [JailController::class, 'bustOut']) + ->name('game.jail.bust-out'); });