Beispiel #1
0
        public async Task Initialize(MatchInitializationSettings settings)
        {
            SetupMatchRules();
            SetupStage(settings);

            EntityManager.CreateEntity(ComponentType.ReadOnly <MatchState>());
            Simulation.SetSingleton(Config.CreateInitialState());

            await SpawnPlayers(settings);
        }
Beispiel #2
0
        void SetupStage(MatchInitializationSettings settings)
        {
            var system = World.GetExistingSystem <PlayerRespawnSystem>();

            system.Reset();
            foreach (var point in settings.RespawnPoints)
            {
                system.AddRespawnPoint(point.position);
            }
        }
Beispiel #3
0
        async Task SpawnPlayers(MatchInitializationSettings settings)
        {
            await DataLoader.WaitUntilLoaded();

            var spawnPoints = settings.SpawnPoints;
            var tasks       = new Task <GameObject> [Config.PlayerCount];

            for (var i = 0; i < Config.PlayerCount; i++)
            {
                Transform spawnPoint = spawnPoints[i % spawnPoints.Length];
                tasks[i] = LoadPlayerGameObject(Config[i], spawnPoint);
            }
            var playerGos = await Task.WhenAll(tasks);

            for (var i = 0; i < playerGos.Length; i++)
            {
                ToPlayerEntity(Config[i], playerGos[i]);
            }
            Debug.Log("Players spawned!");
        }