1: <?php
2:
3:
4:
5: namespace aliuly\common;
6: use pocketmine\event\Listener;
7: use pocketmine\event\player\PlayerQuitEvent;
8: use pocketmine\plugin\PluginBase;
9:
10: use aliuly\common\MPMU;
11:
12: 13: 14:
15: class Session implements Listener {
16: protected $plugin;
17: protected $state;
18: 19: 20:
21: public function __construct(PluginBase $owner) {
22: $this->plugin = $owner;
23: $this->plugin->getServer()->getPluginManager()->registerEvents($this,$this->plugin);
24: $this->state = [];
25: }
26: 27: 28: 29: 30: 31:
32: public function onPlayerQuit(PlayerQuitEvent $ev) {
33:
34: $n = MPMU::iName($ev->getPlayer());
35: if (isset($this->state[$n])) unset($this->state[$n]);
36:
37: }
38: 39: 40: 41: 42: 43: 44: 45:
46: public function getState($label,$player,$default) {
47: $player = MPMU::iName($player);
48: if (!isset($this->state[$player])) return $default;
49: if (!isset($this->state[$player][$label])) return $default;
50: return $this->state[$player][$label];
51: }
52: 53: 54: 55: 56: 57: 58: 59:
60: public function setState($label,$player,$val) {
61: $player = MPMU::iName($player);
62: if (!isset($this->state[$player])) $this->state[$player] = [];
63: $this->state[$player][$label] = $val;
64: return $val;
65: }
66: 67: 68: 69: 70: 71:
72: public function unsetState($label,$player) {
73: $player = MPMU::iName($player);
74: if (!isset($this->state[$player])) return;
75: if (!isset($this->state[$player][$label])) return;
76: unset($this->state[$player][$label]);
77: }
78:
79: }
80: