From 806325c89e7224090b7f11a4b1131dc6b5914c0b Mon Sep 17 00:00:00 2001 From: Infernus Date: Tue, 5 Dec 2017 01:45:40 +0530 Subject: [PATCH] Avoid player forms collision v1.1.6 (#39) * Declare global array $id * Fill array offset with player's name * Store kit in the array * Fetch kit from the array * Fetch error info from array * Update function name * Remove unused functions * Unset array on player quit * Update version --- plugin.yml | 2 +- src/Infernus101/KitUI/Kit.php | 1 + src/Infernus101/KitUI/PlayerEvents.php | 1 + src/Infernus101/KitUI/UI/Window.php | 21 ++--------- src/Infernus101/KitUI/UI/windows/KitError.php | 10 ++++-- src/Infernus101/KitUI/UI/windows/KitInfo.php | 35 +++++++++++++------ .../KitUI/UI/windows/KitMainMenu.php | 6 ++-- 7 files changed, 42 insertions(+), 34 deletions(-) diff --git a/plugin.yml b/plugin.yml index aa58f75..3b68ad3 100644 --- a/plugin.yml +++ b/plugin.yml @@ -2,7 +2,7 @@ name: KitUI author: Infernus101 api: [3.0.0-ALPHA1, 3.0.0-ALPHA2, 3.0.0-ALPHA3, 3.0.0-ALPHA4, 3.0.0-ALPHA5, 3.0.0-ALPHA6, 3.0.0-ALPHA7, 3.0.0-ALPHA8, 3.0.0-ALPHA9] main: Infernus101\KitUI\Main -version: 1.1.5 +version: 1.1.6 permission: # kit permissions - kit. kit.command: description: kit command! diff --git a/src/Infernus101/KitUI/Kit.php b/src/Infernus101/KitUI/Kit.php index e07bf0b..46c3b87 100644 --- a/src/Infernus101/KitUI/Kit.php +++ b/src/Infernus101/KitUI/Kit.php @@ -20,6 +20,7 @@ class Kit{ public $cost = 0; public $timer; public $timers = []; + public $id = []; public function __construct(Main $pl, array $data, string $name){ $this->pl = $pl; diff --git a/src/Infernus101/KitUI/PlayerEvents.php b/src/Infernus101/KitUI/PlayerEvents.php index dbf448e..3e46a72 100644 --- a/src/Infernus101/KitUI/PlayerEvents.php +++ b/src/Infernus101/KitUI/PlayerEvents.php @@ -59,6 +59,7 @@ public function onLogOut(PlayerQuitEvent $event){ if($this->pl->config->get("reset-on-logout") and isset($this->pl->kitused[strtolower($event->getPlayer()->getName())])){ unset($this->pl->kitused[strtolower($event->getPlayer()->getName())]); } + if(isset($this->pl->id[strtolower($event->getPlayer()->getName())])) unset($this->pl->id[strtolower($event->getPlayer()->getName())]); } public function onDataPacket(DataPacketReceiveEvent $event){ diff --git a/src/Infernus101/KitUI/UI/Window.php b/src/Infernus101/KitUI/UI/Window.php index 6c48743..47a1d4c 100644 --- a/src/Infernus101/KitUI/UI/Window.php +++ b/src/Infernus101/KitUI/UI/Window.php @@ -11,8 +11,6 @@ abstract class Window { protected $pl; protected $player; - public static $kit; - public static $error; public static $id = array(); protected $data = []; @@ -20,6 +18,9 @@ abstract class Window { public function __construct(Main $pl, Player $player) { $this->pl = $pl; $this->player = $player; + if(!isset($pl->id[strtolower($player->getName())])){ + $pl->id[strtolower($player->getName())] = []; + } $this->process(); } @@ -41,22 +42,6 @@ public function navigate(int $menu, Player $player, Handler $windowHandler): voi $packet->formData = $windowHandler->getWindowJson($menu, $this->pl, $player); $player->dataPacket($packet); } - - public function navigateKit(int $menu, Player $player, Handler $windowHandler, $kit): void { - self::$kit = $kit; - $packet = new ModalFormRequestPacket(); - $packet->formId = $windowHandler->getWindowIdFor($menu); - $packet->formData = $windowHandler->getWindowJson($menu, $this->pl, $player); - $player->dataPacket($packet); - } - - public function navigateError(int $menu, Player $player, Handler $windowHandler, $error): void { - self::$error = $error; - $packet = new ModalFormRequestPacket(); - $packet->formId = $windowHandler->getWindowIdFor($menu); - $packet->formData = $windowHandler->getWindowJson($menu, $this->pl, $player); - $player->dataPacket($packet); - } protected abstract function process(): void; diff --git a/src/Infernus101/KitUI/UI/windows/KitError.php b/src/Infernus101/KitUI/UI/windows/KitError.php index c6cfa58..1f05c6f 100644 --- a/src/Infernus101/KitUI/UI/windows/KitError.php +++ b/src/Infernus101/KitUI/UI/windows/KitError.php @@ -12,11 +12,17 @@ class KitError extends Window { public function process(): void { + if(isset($this->pl->id[strtolower($this->player->getName())]["error"])){ + $error = $this->pl->id[strtolower($this->player->getName())]["error"]; + } + else{ + return; + } $title = $this->pl->language->getTranslation("error-title"); $this->data = [ "type" => "modal", "title" => $title, - "content" => parent::$error, + "content" => $error, "button1" => "Go Back", "button2" => "Exit" ]; @@ -37,4 +43,4 @@ public function handle(ModalFormResponsePacket $packet): bool { $this->select($index); return true; } -} \ No newline at end of file +} diff --git a/src/Infernus101/KitUI/UI/windows/KitInfo.php b/src/Infernus101/KitUI/UI/windows/KitInfo.php index 8a88fc4..a9a08c3 100644 --- a/src/Infernus101/KitUI/UI/windows/KitInfo.php +++ b/src/Infernus101/KitUI/UI/windows/KitInfo.php @@ -14,8 +14,14 @@ class KitInfo extends Window { public function process(): void { $info = ""; - if(parent::$kit != null){ - $kits = $this->pl->getKit(parent::$kit); + if(isset($this->pl->id[strtolower($this->player->getName())]["kit"])){ + $kit = $this->pl->id[strtolower($this->player->getName())]["kit"]; + } + else{ + return; + } + if($kit != null){ + $kits = $this->pl->getKit($kit); if(isset($kits->data["info"])) $info = $kits->data["info"]; } $title = $this->pl->language->getTranslation("select-option"); @@ -32,41 +38,50 @@ private function select($index){ $windowHandler = new Handler(); switch($index){ case "true\n": - if(parent::$kit == null){ + if(isset($this->pl->id[strtolower($this->player->getName())]["kit"])){ + $kit = $this->pl->id[strtolower($this->player->getName())]["kit"]; + } + if($kit == null){ $error = "Wrong Session! Try again!"; - $this->navigateError(Handler::KIT_ERROR, $this->player, $windowHandler, $error); + $this->pl->id[strtolower($this->player->getName())]["error"] = $error; + $this->navigate(Handler::KIT_ERROR, $this->player, $windowHandler); break; } - $kits = $this->pl->getKit(parent::$kit); + $kits = $this->pl->getKit($kit); if($kits != null){ $name = $kits->getName(); }else{ $error = "Kit not found! Try again!"; - $this->navigateError(Handler::KIT_ERROR, $this->player, $windowHandler, $error); + $this->pl->id[strtolower($this->player->getName())]["error"] = $error; + $this->navigate(Handler::KIT_ERROR, $this->player, $windowHandler); break; } if(!$kits->testPermission($this->player)){ $error = $this->pl->language->getTranslation("noperm", $name); - $this->navigateError(Handler::KIT_ERROR, $this->player, $windowHandler, $error); + $this->pl->id[strtolower($this->player->getName())]["error"] = $error; + $this->navigate(Handler::KIT_ERROR, $this->player, $windowHandler); break; } if(isset($kits->timers[strtolower($this->player->getName())])){ $left = $kits->getTimerLeft($this->player); $error = $this->pl->language->getTranslation("timer1", $name) . "\n" . $this->pl->language->getTranslation("timer2", $left); - $this->navigateError(Handler::KIT_ERROR, $this->player, $windowHandler, $error); + $this->pl->id[strtolower($this->player->getName())]["error"] = $error; + $this->navigate(Handler::KIT_ERROR, $this->player, $windowHandler); break; } if(isset($kits->data["money"])){ $money = $kits->data["money"]; if(EconomyAPI::getInstance()->reduceMoney($this->player, $money) === EconomyAPI::RET_INVALID){ $error = $this->pl->language->getTranslation("cant-afford", $name, $money); - $this->navigateError(Handler::KIT_ERROR, $this->player, $windowHandler, $error); + $this->pl->id[strtolower($this->player->getName())]["error"] = $error; + $this->navigate(Handler::KIT_ERROR, $this->player, $windowHandler); break; } } if(($this->pl->config->get("one-kit-per-life")) and (isset($kits->pl->kitused[strtolower($this->player->getName())]))){ $error = $this->pl->language->getTranslation("one-per-life"); - $this->navigateError(Handler::KIT_ERROR, $this->player, $windowHandler, $error); + $this->pl->id[strtolower($this->player->getName())]["error"] = $error; + $this->navigate(Handler::KIT_ERROR, $this->player, $windowHandler); break; } $kits->add($this->player); diff --git a/src/Infernus101/KitUI/UI/windows/KitMainMenu.php b/src/Infernus101/KitUI/UI/windows/KitMainMenu.php index c67ffca..15f8211 100644 --- a/src/Infernus101/KitUI/UI/windows/KitMainMenu.php +++ b/src/Infernus101/KitUI/UI/windows/KitMainMenu.php @@ -38,9 +38,9 @@ public function process(): void { public function handle(ModalFormResponsePacket $packet): bool { $index = (int) $packet->formData; $windowHandler = new Handler(); - if(isset(parent::$id[$index])) $kit = parent::$id[$index]; - else $kit = null; - $this->navigateKit(Handler::KIT_INFO, $this->player, $windowHandler, $kit); + if(isset(parent::$id[$index])) $this->pl->id[strtolower($this->player->getName())]["kit"] = parent::$id[$index]; + else $this->pl->id[strtolower($this->player->getName())]["kit"] = null; + $this->navigate(Handler::KIT_INFO, $this->player, $windowHandler); return true; } }