/** * This will create one instance of the window for * each player. If you dont want to use this feature * you can deactivate it by setting singleton to false. * @param Group|string|null $recipient * @param bool $singleton * @return Window */ static function Create($recipient = self::RECIPIENT_ALL, $singleton = true) { if ($recipient === self::RECIPIENT_ALL) { $recipient = Group::Get('all'); } else { if ($recipient === self::RECIPIENT_PLAYERS) { $recipient = Group::Get('players'); } else { if ($recipient === self::RECIPIENT_SPECTATORS) { $recipient = Group::Get('spectators'); } } } $className = get_called_class(); $args = array_slice(func_get_args(), 2); $login = strval($recipient); if (!isset(self::$instancesByClass[$className])) { self::$instancesByClass[$className] = array(); } if (!isset(self::$instancesByLoginAndClass[$login])) { self::$instancesByLoginAndClass[$login] = array($className => array()); } else { if (!isset(self::$instancesByLoginAndClass[$login][$className])) { self::$instancesByLoginAndClass[$login][$className] = array(); } } if (!$singleton) { $instance = new static($recipient, $args); } else { if (isset(self::$singletons[$login])) { if (isset(self::$singletons[$login][$className])) { return self::$singletons[$login][$className]; } else { $instance = new static($recipient, $args); self::$singletons[$login][$className] = $instance; } } else { $instance = new static($recipient, $args); self::$singletons[$login] = array($className => $instance); } } self::$instancesByClass[$className][$instance->id] = $instance; self::$instancesByLoginAndClass[$login][$className][$instance->id] = $instance; return $instance; }
function onInit() { if (Storage::getInstance()->serverStatus->code > Status::LAUNCHING) { $this->connection->sendHideManialinkPage(); } $this->groupAll = Group::Create('all'); $this->groupPlayers = Group::Create('players'); $this->groupSpectators = Group::Create('spectators'); }