示例#1
0
 /**
  * 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;
 }
示例#2
0
 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');
 }