Пример #1
0
        public void EndMatch()
        {
            Broadcast("match_end", new NullMessage());
            ManagerComponent.Get().StartCoroutine(Delete());
            var gameServerHandler = GameServerHandler.Get();

            gameServerHandler.SendMm("match_end", new MatchEndMessage(matchId));
        }
 public static GameServerHandler Get()
 {
     if (_instance == null)
     {
         _instance = new GameServerHandler();
     }
     return(_instance);
 }
Пример #3
0
        public Match(Func <Match, ServerGameMaster> createGameMaster, string createMatchMessage)
        {
            gameMaster = createGameMaster(this);
            gameMaster.CreateMatch(createMatchMessage);
            blobAssetStore = new BlobAssetStore();

            nbPlayers = gameMaster.nbPlayers;
            players   = new List <Player> ();
            handler   = GameServerHandler.Get();
            InitWorld(matchId.ToString());
            gameMaster.OnMatchReady();
        }
Пример #4
0
        public IEnumerator Delete()
        {
            var gameServerHandler = GameServerHandler.Get();

            foreach (var p in players)
            {
                gameServerHandler.clients.Remove(p.client.ep.ToString());
            }
            gameMaster.OnEveryPlayerLeaved();
            blobAssetStore.Dispose();
            world.QuitUpdate = true;
            ScriptBehaviourUpdateOrder.SetPlayerLoop(PlayerLoop.GetDefaultPlayerLoop());
            world.EntityManager.CompleteAllJobs();
            world.EntityManager.DestroyEntity(world.EntityManager.GetAllEntities());
            yield return(new WaitForEndOfFrame());

            world.Dispose();
            gameServerHandler.matches.Remove(matchId);
        }