feat: add JailController and bust-out route
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
799f46a5f2
commit
f84a303c76
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Game;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Services\Game\JailService;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class JailController extends Controller
|
||||||
|
{
|
||||||
|
protected JailService $jailService;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->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']);
|
||||||
|
}
|
||||||
|
}
|
||||||
+7
-1
@@ -5,6 +5,7 @@ use App\Http\Controllers\Game\CrimeController;
|
|||||||
use App\Http\Controllers\Game\DashboardController;
|
use App\Http\Controllers\Game\DashboardController;
|
||||||
use App\Http\Controllers\Game\GymController;
|
use App\Http\Controllers\Game\GymController;
|
||||||
use App\Http\Controllers\Game\InventoryController;
|
use App\Http\Controllers\Game\InventoryController;
|
||||||
|
use App\Http\Controllers\Game\JailController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -86,6 +87,11 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
return redirect()->route('game.dashboard');
|
return redirect()->route('game.dashboard');
|
||||||
}
|
}
|
||||||
$releaseTime = $character->in_jail_until ? $character->in_jail_until->diffForHumans() : 'unknown';
|
$releaseTime = $character->in_jail_until ? $character->in_jail_until->diffForHumans() : 'unknown';
|
||||||
return view('game.jail', compact('character', 'releaseTime'));
|
$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');
|
})->name('game.jail');
|
||||||
|
|
||||||
|
Route::post('/game/jail/bust-out', [JailController::class, 'bustOut'])
|
||||||
|
->name('game.jail.bust-out');
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user