diff options
Diffstat (limited to 'src/Controller/Unit.php')
-rw-r--r-- | src/Controller/Unit.php | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/src/Controller/Unit.php b/src/Controller/Unit.php deleted file mode 100644 index 0508249..0000000 --- a/src/Controller/Unit.php +++ /dev/null @@ -1,242 +0,0 @@ -<?php - -namespace App\Controller; - -use App\DB; -use App\Model\Event\SendUnits; -use App\Model\Event\TrainUnits; -use App\Model\Unit as Model; -use App\Model\Event; -use App\Model\Village; -use App\Router; -use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Routing\Annotation\Route; - -class Unit -{ - #[Route(path: '/village/{x}/{y}/unit/{type}/create', methods: ['POST'])] - public function train(Request $request): Response - { - $village = Village::getByCoordinates($request->get('x'), $request->get('y')); - - /**@var Model $unit*/ - $unit = new (Model::resolveType($request->get('type')))(); - $unit->type = $request->get('type'); - $unit->homeVillageId = $village->id; - - $amount = intval($request->get('amount')); - - if (! Village::canTrain($village, $unit, $amount)) { - return new RedirectResponse( - Router::generate( - 'village.show', - ['x' => $request->get('x'), 'y' => $request->get('y')] - ) - ); - } - - // resources - foreach (Model::getResourceRequirements($unit, $amount) as $resourceType => $resourceValue) { - $village->{$resourceType} -= $resourceValue; - } - $village->updateResources(); - - // event - $event = new Event(); - $event->time = (new \DateTime())->add(\DateInterval::createFromDateString($unit->getBuildTime($amount) . ' seconds')); - $event->villageId = $village->id; - $trainUnitsEvent = new TrainUnits(); - $trainUnitsEvent->event = $event; - $trainUnitsEvent->type = $request->get('type'); - $trainUnitsEvent->amount = $amount; - $trainUnitsEvent->dbInsert(); - - return new RedirectResponse( - Router::generate( - 'village.show', - ['x' => $request->get('x'), 'y' => $request->get('y')] - ) - ); - } - - #[Route(path: '/village/{x}/{y}/unit/{type}/location/{lx}/{ly}/recall', methods: ['POST'])] - public function recall(Request $request): Response - { - $village = Village::getByCoordinates($request->get('x'), $request->get('y')); - $location = Village::getByCoordinates($request->get('lx'), $request->get('ly')); - - /**@var Model $unit*/ - $unit = new (Model::resolveType($request->get('type')))(); - - $amount = intval($request->get('amount')); - $amountUnits = DB::query( - 'select amount from village_units where home_village_id=:home and residence_village_id=:residence and type=:type', - ['home' => $village->id, 'residence' => $location->id, 'type' => $request->get('type')] - )->fetchColumn(); - - if ($amountUnits - $amount > 0) { - $statement = DB::query( - <<<SQL - update village_units set amount=:amount where home_village_id=:home and residence_village_id=:residence and type=:type - SQL, - ['amount' => $amountUnits - $amount, 'home' => $village->id, 'residence' => $location->id, 'type' => $request->get('type')] - ); - } else if ($amountUnits - $amount === 0) { - DB::query( - <<<SQL - delete from village_units where home_village_id=:home and residence_village_id=:residence and type=:type - SQL, - ['home' => $village->id, 'residence' => $location->id, 'type' => $request->get('type')] - ); - } - - // event - $event = new Event(); - $event->time = (new \DateTime())->add( - \DateInterval::createFromDateString( - Model::getTravelTime($unit, Village::getDistance($village->x, $village->y, $location->x, $location->y)) - . ' seconds' - ) - ); - $event->villageId = $village->id; - $sendUnitsEvent = new SendUnits(); - $sendUnitsEvent->event = $event; - $sendUnitsEvent->type = 'Recall'; - $sendUnitsEvent->unit = $request->get('type'); - $sendUnitsEvent->amount = $amount; - $sendUnitsEvent->source = $location->id; - $sendUnitsEvent->destination = $village->id; - $sendUnitsEvent->dbInsert(); - - - return new RedirectResponse( - Router::generate( - 'village.show', - ['x' => $request->get('x'), 'y' => $request->get('y')] - ) - ); - } - - #[Route(path: '/village/{x}/{y}/unit/{type}/location/{lx}/{ly}/send-back', methods: ['POST'])] - public function sendBack(Request $request): Response - { - $village = Village::getByCoordinates($request->get('x'), $request->get('y')); - $location = Village::getByCoordinates($request->get('lx'), $request->get('ly')); - - /**@var Model $unit*/ - $unit = new (Model::resolveType($request->get('type')))(); - - $amount = intval($request->get('amount')); - $amountUnits = DB::query( - 'select amount from village_units where home_village_id=:home and residence_village_id=:residence and type=:type', - ['home' => $location->id, 'residence' => $village->id, 'type' => $request->get('type')] - )->fetchColumn(); - - if ($amountUnits - $amount > 0) { - $statement = DB::query( - <<<SQL - update village_units set amount=:amount where home_village_id=:home and residence_village_id=:residence and type=:type - SQL, - ['amount' => $amountUnits - $amount, 'home' => $location->id, 'residence' => $village->id, 'type' => $request->get('type')] - ); - } else if ($amountUnits - $amount === 0) { - DB::query( - <<<SQL - delete from village_units where home_village_id=:home and residence_village_id=:residence and type=:type - SQL, - ['home' => $location->id, 'residence' => $village->id, 'type' => $request->get('type')] - ); - } - - // event - $event = new Event(); - $event->time = (new \DateTime())->add( - \DateInterval::createFromDateString( - Model::getTravelTime($unit, Village::getDistance($village->x, $village->y, $location->x, $location->y)) - . ' seconds' - ) - ); - $event->villageId = $village->id; - $sendUnitsEvent = new SendUnits(); - $sendUnitsEvent->event = $event; - $sendUnitsEvent->type = 'SendBack'; - $sendUnitsEvent->unit = $request->get('type'); - $sendUnitsEvent->amount = $amount; - $sendUnitsEvent->source = $village->id; - $sendUnitsEvent->destination = $location->id; - $sendUnitsEvent->dbInsert(); - - - return new RedirectResponse( - Router::generate( - 'village.show', - ['x' => $request->get('x'), 'y' => $request->get('y')] - ) - ); - } - - #[Route(path: '/village/{x}/{y}/send-units', methods: ['POST'])] - public function sendUnits(Request $request): Response - { - $village = Village::getByCoordinates($request->get('x'), $request->get('y')); - $destination = Village::get($request->get('village')); - - /**@var Model $unit*/ - $unit = new (Model::resolveType($request->get('unit')))(); - - $amount = intval($request->get('amount')); - $amountUnits = DB::query( - 'select amount from village_units where home_village_id=:home and residence_village_id=:home and type=:type', - ['home' => $village->id, 'type' => $request->get('unit')] - )->fetchColumn(); - - if ($amountUnits - $amount > 0) { - $statement = DB::query( - <<<SQL - update village_units set amount=:amount where home_village_id=:home and residence_village_id=:home and type=:type - SQL, - ['amount' => $amountUnits - $amount, 'home' => $village->id, 'type' => $request->get('unit')] - ); - } else if ($amountUnits - $amount === 0) { - DB::query( - <<<SQL - delete from village_units where home_village_id=:home and residence_village_id=:home and type=:type - SQL, - ['home' => $village->id, 'type' => $request->get('unit')] - ); - } - - DB::query( - 'insert into village_units (amount, type, home_village_id, residence_village_id, is_traveling) values (:amount, :type, :home, :home, true)', - ['amount' => $amount, 'type' => $request->get('unit'), 'home' => $village->id] - ); - - // event - $event = new Event(); - $event->time = (new \DateTime())->add( - \DateInterval::createFromDateString( - Model::getTravelTime($unit, Village::getDistance($village->x, $village->y, $destination->x, $destination->y)) - . ' seconds' - ) - ); - $event->villageId = $village->id; - $sendUnitsEvent = new SendUnits(); - $sendUnitsEvent->event = $event; - $sendUnitsEvent->type = $request->get('type'); - $sendUnitsEvent->unit = $request->get('unit'); - $sendUnitsEvent->amount = $amount; - $sendUnitsEvent->source = $village->id; - $sendUnitsEvent->destination = $destination->id; - $sendUnitsEvent->dbInsert(); - - - return new RedirectResponse( - Router::generate( - 'village.show', - ['x' => $request->get('x'), 'y' => $request->get('y')] - ) - ); - } -} |