/// <summary> /// 当玩家退出游戏时,调用此方法 /// </summary> /// <param name="player">退出游戏的玩家</param> public override void OnPlayerQuitted(GamePlayerBase player) { lock ( SyncRoot ) { if (GameState == GameState.NotInitialized) { throw new InvalidOperationException(); } if (!PlayerCollection.Contains(player)) //如果不存在这个玩家,则忽略。 { return; } AnnounceSystemMessage("玩家 {0} 退出了游戏", player.PlayerName); PlayerCollection.Remove(player); lock ( SyncRoot ) { if (!Players.Any()) //若已经没有玩家了,释放游戏资源 { ReleaseGame(); } if (GameState == GameState.Running) //如果游戏正在进行,则强行终止游戏。 { Abort(); } } } }