server empty callback
This commit is contained in:
		| @@ -25,6 +25,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	const CB_PLAYERCONNECT            = 'PlayerManagerCallback.PlayerConnect'; | ||||
| 	const CB_PLAYERDISCONNECT         = 'PlayerManagerCallback.PlayerDisconnect'; | ||||
| 	const CB_PLAYERINFOCHANGED        = 'PlayerManagerCallback.PlayerInfoChanged'; | ||||
| 	const CB_SERVER_EMPTY             = 'PlayerManagerCallback.ServerEmpty'; | ||||
| 	const TABLE_PLAYERS               = 'mc_players'; | ||||
| 	const SETTING_JOIN_LEAVE_MESSAGES = 'Enable Join & Leave Messages'; | ||||
| 	const STAT_JOIN_COUNT             = 'Joins'; | ||||
| @@ -48,7 +49,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	/** | ||||
| 	 * Construct a new Player Manager | ||||
| 	 * | ||||
| 	 * @param \ManiaControl\ManiaControl $maniaControl | ||||
| 	 * @param ManiaControl $maniaControl | ||||
| 	 */ | ||||
| 	public function __construct(ManiaControl $maniaControl) { | ||||
| 		$this->maniaControl = $maniaControl; | ||||
| @@ -76,7 +77,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Initialize necessary database tables | ||||
| 	 * Initialize necessary Database Tables | ||||
| 	 * | ||||
| 	 * @return bool | ||||
| 	 */ | ||||
| @@ -100,6 +101,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 		$playerTableStatement->execute(); | ||||
| 		if ($playerTableStatement->error) { | ||||
| 			trigger_error($playerTableStatement->error, E_USER_ERROR); | ||||
| 			$playerTableStatement->close(); | ||||
| 			return false; | ||||
| 		} | ||||
| 		$playerTableStatement->close(); | ||||
| @@ -212,7 +214,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle playerConnect callback | ||||
| 	 * Handle PlayerConnect Callback | ||||
| 	 * | ||||
| 	 * @param array $callback | ||||
| 	 */ | ||||
| @@ -228,7 +230,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Handle playerDisconnect callback | ||||
| 	 * Handle PlayerDisconnect callback | ||||
| 	 * | ||||
| 	 * @param array $callback | ||||
| 	 */ | ||||
| @@ -239,8 +241,11 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		// Trigger own callback | ||||
| 		// Trigger own callbacks | ||||
| 		$this->maniaControl->callbackManager->triggerCallback(self::CB_PLAYERDISCONNECT, $player); | ||||
| 		if ($this->getPlayerCount(false) <= 0) { | ||||
| 			$this->maniaControl->callbackManager->triggerCallback(self::CB_SERVER_EMPTY); | ||||
| 		} | ||||
|  | ||||
| 		if ($player->isFakePlayer()) { | ||||
| 			return; | ||||
| @@ -292,6 +297,23 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 		return $this->maniaControl->statisticManager->insertStat(self::STAT_SERVERTIME, $player, $this->maniaControl->server->index, $playedTime); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get the Count of all Player | ||||
| 	 * | ||||
| 	 * @param bool $withoutSpectators | ||||
| 	 * @return int | ||||
| 	 */ | ||||
| 	public function getPlayerCount($withoutSpectators = true) { | ||||
| 		$count = 0; | ||||
| 		foreach ($this->players as $player) { | ||||
| 			/** @var Player $player */ | ||||
| 			if (!$player->isSpectator || !$withoutSpectators) { | ||||
| 				$count++; | ||||
| 			} | ||||
| 		} | ||||
| 		return $count; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Update PlayerInfo | ||||
| 	 * | ||||
| @@ -401,22 +423,6 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 		return $this->players; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Gets the Count of all Player | ||||
| 	 * | ||||
| 	 * @return int | ||||
| 	 */ | ||||
| 	public function getPlayerCount() { | ||||
| 		$count = 0; | ||||
| 		foreach ($this->players as $player) { | ||||
| 			/** @var Player $player */ | ||||
| 			if (!$player->isSpectator) { | ||||
| 				$count++; | ||||
| 			} | ||||
| 		} | ||||
| 		return $count; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Gets the Count of all Spectators | ||||
| 	 * | ||||
| @@ -436,7 +442,7 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	/** | ||||
| 	 * Gets a Player by his index | ||||
| 	 * | ||||
| 	 * @param      $index | ||||
| 	 * @param int  $index | ||||
| 	 * @param bool $connectedPlayersOnly | ||||
| 	 * @return Player|null | ||||
| 	 */ | ||||
| @@ -456,9 +462,9 @@ class PlayerManager implements CallbackListener, TimerListener { | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get's a Player out of the database | ||||
| 	 * Get a Player out of the database | ||||
| 	 * | ||||
| 	 * @param $playerIndex | ||||
| 	 * @param int $playerIndex | ||||
| 	 * @return Player $player | ||||
| 	 */ | ||||
| 	private function getPlayerFromDatabaseByIndex($playerIndex) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user