summaryrefslogtreecommitdiff
path: root/src/http
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2025-03-24 13:28:57 +0100
committerDaniel Weipert <git@mail.dweipert.de>2025-03-24 13:28:57 +0100
commita21b030abd4d5cd88f914f79574e425c7908553a (patch)
treec4eca5ff8e3dd5b12c4a151045ebb0991b211a9b /src/http
parentd58f61770463aab2c71464c11f902f0074b49b62 (diff)
various changesHEADmain
Diffstat (limited to 'src/http')
-rw-r--r--src/http/Controller/Building.php10
-rw-r--r--src/http/Controller/Login.php49
-rw-r--r--src/http/Controller/Map.php6
-rw-r--r--src/http/Controller/User.php1
-rw-r--r--src/http/Controller/Village.php33
-rw-r--r--src/http/Router.php1
6 files changed, 82 insertions, 18 deletions
diff --git a/src/http/Controller/Building.php b/src/http/Controller/Building.php
index 4a59f0e..d434fe8 100644
--- a/src/http/Controller/Building.php
+++ b/src/http/Controller/Building.php
@@ -21,10 +21,7 @@ class Building
$building = Model::getByVillage($village->id, $request->get('type')) ?? Model::getEmpty($village->id, $request->get('type'));
// resources
- foreach ($building->getResourceRequirements() as $resourceType => $resourceValue) {
- $village->{$resourceType} -= $resourceValue;
- }
- $village->updateResources();
+ $resourceRequirements = $building->getResourceRequirements();
// event
$event = new Event();
@@ -35,7 +32,10 @@ class Building
$upgradeBuildingEvent = new UpgradeBuilding();
$upgradeBuildingEvent->event = $event;
$upgradeBuildingEvent->type = $building->type;
- $upgradeBuildingEvent->dbInsert();
+ $upgradeBuildingEvent->wood = $resourceRequirements['wood'];
+ $upgradeBuildingEvent->clay = $resourceRequirements['clay'];
+ $upgradeBuildingEvent->iron = $resourceRequirements['iron'];
+ $upgradeBuildingEvent->create();
return new RedirectResponse(
Router::generate(
diff --git a/src/http/Controller/Login.php b/src/http/Controller/Login.php
index 8c04d85..37680a7 100644
--- a/src/http/Controller/Login.php
+++ b/src/http/Controller/Login.php
@@ -3,6 +3,7 @@
namespace App\http\Controller;
use App\DB;
+use App\Model\Building\Farm;
use App\View;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
@@ -26,15 +27,59 @@ class Login
if (empty($user)) {
$password = password_hash($request->get('password'), PASSWORD_DEFAULT);
DB::query('insert into users (username, password, email) values (:username, :password, :email)', ['username' => $email, 'password' => $password, 'email' => $email]);
+
+ $userId = DB::$connection->lastInsertId();
- // TODO: also insert new village at random free coordinates
+ // insert new village at random free coordinates
+ # TODO: check if coords are free
+ DB::query(
+ 'insert into villages (name, x, y, wood, clay, iron, food, satisfaction) values (:name, :x, :y, 100, 100, 100, 100, 100)',
+ [
+ 'name' => $email,
+ 'x' => random_int(-10, 10),
+ 'y' => random_int(-10, 10),
+ ]
+ );
+ $villageId = DB::$connection->lastInsertId();
+
+ DB::query('insert into user_villages (user_id, village_id) values (:user_id, :village_id)', [
+ 'user_id' => $userId,
+ 'village_id' => $villageId,
+ ]);
+
+ DB::query('insert into village_storage_config (wood, clay, iron, food, village_id) values (:wood, :clay, :iron, :food, :village_id)', [
+ 'wood' => 25,
+ 'clay' => 25,
+ 'iron' => 25,
+ 'food' => 25,
+ 'village_id' => $village->id,
+ ]);
+
+ $initialBuildings = ['TownHall', 'Storage', 'WoodCutter', 'ClayPit', 'IronMine', 'Farm'];
+ foreach ($initialBuildings as $buildingType) {
+ DB::query('insert into village_buildings (level, type, village_id) values (:level, :type, :village_id)', [
+ 'level' => 1,
+ 'type' => $buildingType,
+ 'village_id' => $villageId,
+ ]);
+ }
+
+ $initialUnits = ['WoodCutter', 'PitWorker', 'Miner', 'Farmer'];
+ foreach ($initialUnits as $unitType) {
+ DB::query('insert into village_units (amount, type, home_village_id, residence_village_id) values (:amount, :type, :village_id, :village_id)', [
+ 'amount' => 1,
+ 'type' => $unitType,
+ 'village_id' => $villageId,
+ ]);
+ }
} else {
$password = $user['password'];
+ $userId = $user['id'];
}
if (password_verify($request->get('password'), $password)) {
$_SESSION['user'] = [
- 'id' => $user['id'],
+ 'id' => $userId,
'username' => $user['username'],
];
diff --git a/src/http/Controller/Map.php b/src/http/Controller/Map.php
index 69d23e1..3b0773f 100644
--- a/src/http/Controller/Map.php
+++ b/src/http/Controller/Map.php
@@ -10,13 +10,17 @@ use Symfony\Component\Routing\Annotation\Route;
class Map
{
- #[Route(path: '/map/{x}/{y}/{range}', defaults: ['range' => 1], methods: ['GET'])]
+ #[Route(path: '/map/{x}/{y}/{range}', defaults: ['range' => 0], methods: ['GET'])]
public function region(Request $request): Response
{
$x = $request->get('x');
$y = $request->get('y');
$range = $request->get('range');
+ if ($range <= 0) {
+ $range = $_ENV['MAP_DEFAULT_RANGE'];
+ }
+
$statement = DB::query(
'select * from villages where x>=:x1 and x<=:x2 and y>=:y1 and y<=:y2',
[
diff --git a/src/http/Controller/User.php b/src/http/Controller/User.php
index c47e32e..e38780f 100644
--- a/src/http/Controller/User.php
+++ b/src/http/Controller/User.php
@@ -21,6 +21,7 @@ class User
'user' => $user,
]));
}
+
#[Route(path: '/account', methods: ['POST'])]
public function accountSave(Request $request): Response
{
diff --git a/src/http/Controller/Village.php b/src/http/Controller/Village.php
index 2d6aa39..22713b1 100644
--- a/src/http/Controller/Village.php
+++ b/src/http/Controller/Village.php
@@ -57,26 +57,32 @@ class Village
)->fetchAll();
foreach ($eventsBuilding as $row) {
- $events['UpgradeBuilding'][$row['type']][] = DB::convertToModel(UpgradeBuilding::class, $row);
+ $model = DB::convertToModel(UpgradeBuilding::class, $row);
+ $model->populateEvent();
+
+ $events['UpgradeBuilding'][$row['type']][] = $model;
}
$eventsUnits = DB::query(
<<<SQL
select * from events_train_units as event
left join events on event.event_id = events.id
- where village_id=:id
+ where events.village_id=:id
SQL, ['id' => $village->id]
)->fetchAll();
foreach ($eventsUnits as $row) {
- $events['TrainUnits'][] = DB::convertToModel(TrainUnits::class, $row);
+ $model = DB::convertToModel(TrainUnits::class, $row);
+ $model->populateEvent();
+
+ $events['TrainUnits'][] = $model;
}
$eventsUnitsSendOwn = DB::query(
<<<SQL
select * from events_send_units as event
left join events on event.event_id = events.id
- where village_id=:id
+ where events.village_id=:id
SQL, ['id' => $village->id]
)->fetchAll();
@@ -89,14 +95,17 @@ class Village
)->fetchAll();
foreach ([...$eventsUnitsSendOwn, ...$eventsUnitsSendOther] as $row) {
- $events['SendUnits'][] = DB::convertToModel(SendUnits::class, $row);;
+ $model = DB::convertToModel(SendUnits::class, $row);
+ $model->populateEvent();
+
+ $events['SendUnits'][] = DB::convertToModel(SendUnits::class, $row);
}
$eventsResourcesSendOwn = DB::query(
<<<SQL
select * from events_send_resources as event
left join events on event.event_id = events.id
- where village_id=:id
+ where events.village_id=:id
SQL, ['id' => $village->id]
)->fetchAll();
@@ -109,14 +118,17 @@ class Village
)->fetchAll();
foreach ([...$eventsResourcesSendOwn, ...$eventsResourcesSendOther] as $row) {
- $events['SendResources'][] = DB::convertToModel(SendResources::class, $row);;
+ $model = DB::convertToModel(SendResources::class, $row);
+ $model->populateEvent();
+
+ $events['SendResources'][] = DB::convertToModel(SendResources::class, $row);
}
$eventsResourcesCarriersSendOwn = DB::query(
<<<SQL
select * from events_send_resources_carriers as event
left join events on event.event_id = events.id
- where village_id=:id
+ where events.village_id=:id
SQL, ['id' => $village->id]
)->fetchAll();
@@ -129,7 +141,10 @@ class Village
)->fetchAll();
foreach ([...$eventsResourcesCarriersSendOwn, ...$eventsResourcesCarriersSendOther] as $row) {
- $events['SendResourcesCarriers'][] = DB::convertToModel(SendResourcesCarriers::class, $row);;
+ $model = DB::convertToModel(SendResourcesCarriers::class, $row);
+ $model->populateEvent();
+
+ $events['SendResourcesCarriers'][] = $model;
}
$buildings = [];
diff --git a/src/http/Router.php b/src/http/Router.php
index 62f0514..f279109 100644
--- a/src/http/Router.php
+++ b/src/http/Router.php
@@ -9,7 +9,6 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Routing\Generator\UrlGenerator;
-use Symfony\Component\Routing\Loader\AnnotationFileLoader;
use Symfony\Component\Routing\Loader\AttributeFileLoader;
use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\Routing\RequestContext;