diff options
Diffstat (limited to 'src/Model')
-rw-r--r-- | src/Model/Event/BaseEvent.php | 7 | ||||
-rw-r--r-- | src/Model/Event/SendResources.php | 2 | ||||
-rw-r--r-- | src/Model/Event/SendUnits.php | 2 | ||||
-rw-r--r-- | src/Model/Event/TrainUnits.php | 2 | ||||
-rw-r--r-- | src/Model/Event/UpgradeBuilding.php | 52 | ||||
-rw-r--r-- | src/Model/Village.php | 2 |
6 files changed, 56 insertions, 11 deletions
diff --git a/src/Model/Event/BaseEvent.php b/src/Model/Event/BaseEvent.php index 2e2564b..0d50458 100644 --- a/src/Model/Event/BaseEvent.php +++ b/src/Model/Event/BaseEvent.php @@ -15,16 +15,15 @@ abstract class BaseEvent public Event $event; + abstract function create(): void; + abstract function cancel(): void; abstract function dbInsert(): void; abstract function dbDelete(): void; - abstract function cancel(): void; - public function getEvent(): Event + public function populateEvent(): void { if (! isset($this->event)) { $this->event = DB::fetch(Event::class, 'select * from events where id=:id', ['id' => $this->eventId])[0]; } - - return $this->event; } } diff --git a/src/Model/Event/SendResources.php b/src/Model/Event/SendResources.php index ea9361c..d8e4f85 100644 --- a/src/Model/Event/SendResources.php +++ b/src/Model/Event/SendResources.php @@ -94,7 +94,7 @@ class SendResources extends BaseEvent public function cancel(): void { - $this->event = $this->getEvent(); + $this->populateEvent(); $cancelTimeDiff = $this->event->createdAt->diff(new \DateTime()); $cancelTime = (new \DateTime())->add($cancelTimeDiff); diff --git a/src/Model/Event/SendUnits.php b/src/Model/Event/SendUnits.php index c9afd6e..1b04333 100644 --- a/src/Model/Event/SendUnits.php +++ b/src/Model/Event/SendUnits.php @@ -104,7 +104,7 @@ class SendUnits extends BaseEvent public function cancel(): void { - $this->event = $this->getEvent(); + $this->populateEvent(); $cancelTimeDiff = $this->event->createdAt->diff(new \DateTime()); $cancelTime = (new \DateTime())->add($cancelTimeDiff); diff --git a/src/Model/Event/TrainUnits.php b/src/Model/Event/TrainUnits.php index 59b169f..a94a5a8 100644 --- a/src/Model/Event/TrainUnits.php +++ b/src/Model/Event/TrainUnits.php @@ -14,7 +14,7 @@ class TrainUnits extends BaseEvent */ public function __invoke(): void { - $this->getEvent(); + $this->populateEvent(); DB::query( <<<SQL diff --git a/src/Model/Event/UpgradeBuilding.php b/src/Model/Event/UpgradeBuilding.php index a3f3984..5993105 100644 --- a/src/Model/Event/UpgradeBuilding.php +++ b/src/Model/Event/UpgradeBuilding.php @@ -3,17 +3,21 @@ namespace App\Model\Event; use App\DB; +use App\Model\Village; class UpgradeBuilding extends BaseEvent { public string $type; + public int $wood; + public int $clay; + public int $iron; /** * @return void */ public function __invoke(): void { - $this->getEvent(); + $this->populateEvent(); DB::query( <<<SQL @@ -26,8 +30,44 @@ class UpgradeBuilding extends BaseEvent ); } + /*public function populateEvent(): void + { + parent::populateEvent(); + + $event = DB::fetch(UpgradeBuilding::class, 'select * from events_upgrade_building where id=:id', ['id' => $this->id])[0]; + $this->type = $event->type; + $this->wood = $event->wood; + $this->clay = $event->clay; + $this->iron = $event->iron; + }*/ + + public function create(): void + { + $this->populateEvent(); + + // remove resources + $village = Village::get($this->event->villageId); + $village->wood -= $this->wood; + $village->clay -= $this->clay; + $village->iron -= $this->iron; + $village->updateResources(); + + // add to db + $this->dbInsert(); + } + public function cancel(): void { + $this->populateEvent(); + + // add resources + $village = Village::get($this->event->villageId); + $village->wood += $this->wood; + $village->clay += $this->clay; + $village->iron += $this->iron; + $village->updateResources(); + + // remove from db $this->dbDelete(); } @@ -39,8 +79,14 @@ class UpgradeBuilding extends BaseEvent ); DB::query( - 'insert into events_upgrade_building (event_id, type) VALUES (:event_id, :type)', - ['event_id' => DB::$connection->lastInsertId(), 'type' => $this->type] + 'insert into events_upgrade_building (event_id, type, wood, clay, iron) VALUES (:event_id, :type, :wood, :clay, :iron)', + [ + 'event_id' => DB::$connection->lastInsertId(), + 'type' => $this->type, + 'wood' => $this->wood, + 'clay' => $this->clay, + 'iron' => $this->iron, + ] ); } diff --git a/src/Model/Village.php b/src/Model/Village.php index ff0b7e8..8ecee2a 100644 --- a/src/Model/Village.php +++ b/src/Model/Village.php @@ -184,7 +184,7 @@ class Village * * @return array<int, Unit> */ - public static function getUnits(int $villageId, int $fetchFlag = Village::FETCH_UNIT_ALL, int $returnFlag = Village::RETURN_UNIT_EXISTING): array + public static function getUnits(int $villageId, int $fetchFlag = Village::FETCH_UNIT_RESIDENCE, int $returnFlag = Village::RETURN_UNIT_EXISTING): array { if ($fetchFlag == Village::FETCH_UNIT_HOME_AT_HOME) { $units = DB::fetch(Unit::class, 'select * from village_units where home_village_id=:id and residence_village_id=:id', ['id' => $villageId]); |