first commit

This commit is contained in:
Doar Mihai
2026-06-27 14:38:18 +03:00
commit 96d317480b
165 changed files with 20061 additions and 0 deletions
+45
View File
@@ -0,0 +1,45 @@
<?php
namespace App\Http\Middleware\Game;
use App\Services\Game\EnergyService;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckEnergy
{
protected EnergyService $energyService;
public function __construct(EnergyService $energyService)
{
$this->energyService = $energyService;
}
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next, string $action = 'default'): Response
{
$character = $request->user()->character;
// Check if character can act
if (!$character->canAct()) {
return redirect()->route('game.dashboard')
->with('error', 'You cannot perform actions right now.');
}
// Get energy cost for this action type
$cost = $this->energyService->getCostFor($action);
// Check if character has enough energy
if (!$character->hasEnergy($cost)) {
return redirect()->route('game.dashboard')
->with('error', "You don't have enough energy ({$cost} required) for this action.");
}
return $next($request);
}
}
@@ -0,0 +1,30 @@
<?php
namespace App\Http\Middleware\Game;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckInHospital
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$character = $request->user()->character;
if ($character->isInHospital() || $character->isDead()) {
$releaseTime = $character->in_hospital_until ? $character->in_hospital_until->diffForHumans() : 'unknown';
$reviveCost = config('game.health.hospital_cost', 1000);
return redirect()->route('game.hospital')
->with('error', "You are in hospital and cannot perform actions. You will be released {$releaseTime} or can revive for \${$reviveCost}.");
}
return $next($request);
}
}
+29
View File
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Middleware\Game;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class CheckInJail
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$character = $request->user()->character;
if ($character->isInJail()) {
$releaseTime = $character->in_jail_until ? $character->in_jail_until->diffForHumans() : 'unknown';
return redirect()->route('game.jail')
->with('error', "You are in jail and cannot perform actions. You will be released {$releaseTime}.");
}
return $next($request);
}
}
@@ -0,0 +1,34 @@
<?php
namespace App\Http\Middleware\Game;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class VerifyCharacter
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
// Check if user is authenticated
if (!$request->user()) {
return redirect()->route('login');
}
// Check if user has a character
$character = $request->user()->character;
if (!$character) {
// No character exists, redirect to character creation
return redirect()->route('game.character.create');
}
// Character exists, proceed with request
return $next($request);
}
}