summaryrefslogtreecommitdiff
path: root/src/Controller/Unit.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controller/Unit.php')
-rw-r--r--src/Controller/Unit.php242
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')]
- )
- );
- }
-}