Skip to content
This repository has been archived by the owner on Jul 7, 2020. It is now read-only.

Commit

Permalink
Avoid player forms collision v1.1.6 (#39)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
Infernus101 committed Dec 4, 2017
1 parent 09103fc commit 806325c
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 34 deletions.
2 changes: 1 addition & 1 deletion plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 name>
kit.command:
description: kit command!
Expand Down
1 change: 1 addition & 0 deletions src/Infernus101/KitUI/Kit.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions src/Infernus101/KitUI/PlayerEvents.php
Original file line number Diff line number Diff line change
Expand Up @@ -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){
Expand Down
21 changes: 3 additions & 18 deletions src/Infernus101/KitUI/UI/Window.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,16 @@ abstract class Window {

protected $pl;
protected $player;
public static $kit;
public static $error;
public static $id = array();

protected $data = [];

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();
}

Expand All @@ -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;

Expand Down
10 changes: 8 additions & 2 deletions src/Infernus101/KitUI/UI/windows/KitError.php
Original file line number Diff line number Diff line change
Expand Up @@ -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"
];
Expand All @@ -37,4 +43,4 @@ public function handle(ModalFormResponsePacket $packet): bool {
$this->select($index);
return true;
}
}
}
35 changes: 25 additions & 10 deletions src/Infernus101/KitUI/UI/windows/KitInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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);
Expand Down
6 changes: 3 additions & 3 deletions src/Infernus101/KitUI/UI/windows/KitMainMenu.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

0 comments on commit 806325c

Please sign in to comment.