public void Start() { var players = _playerProvider.GetCurrentPlayers(); var notificators = GameObject.FindObjectsOfType <PlayerCountChanger>() .Select(x => x.GetComponent <IPlayerChangeNotificator>()); players.ForEach(CreatePlayer); notificators.Select(x => x.ChangePlayerCountAsObservable()) .Merge() .Subscribe(x => { if (x == 1) { _playerManager.AddPlayer(); } else { _playerManager.RemoveLastPlayer(); } }).AddTo(_disposable); _playerManager.AddPlayerAsObservable() .Subscribe(CreatePlayer) .AddTo(_disposable); _playerManager.RemovePlayerAsObservable() .Subscribe(RemovePlayer) .AddTo(_disposable); }
private async UniTaskVoid RoundStartTask(GamePlaySettingData gamePlaySettingData) { Debug.Log("なんかいっぱい準備する"); // なんかスタートする var players = _playerProvider.GetCurrentPlayers(); var spawnPoints = new Queue <Transform>(); _stageMapSetting.GetPlayerSpawnPoints().ForEach(x => spawnPoints.Enqueue(x)); players.ForEach(x => _stageScoreManager.AddPlayer(x)); players.ForEach(x => { var player = _playerFactory.Create(x); var spawnPoint = spawnPoints.Dequeue(); player.transform.position = spawnPoint.position; player.transform.rotation = spawnPoint.rotation; var basket = _basketFactory.Create(); player.SetBasket(basket); basket.transform.localPosition = Vector3.zero; }); // debug用 var gameObject = new GameObject(); var scoreView = gameObject.AddComponent <DebugPlayerScoreView>(); scoreView.Setup(_scoreManager); var correctedCount = 0; while (correctedCount < _currentGamePlaySetting.CorrectCount) { correctedCount++; // 次の便まで待つ await UniTask.Delay(TimeSpan.FromSeconds(_currentGamePlaySetting.CorrectInterval)); // 便がくる // 回収装置が満タンになるまで待つ // 回収装置が退場する // ポイントが精算される。 } if (_cancellationTokenSource.IsCancellationRequested) { return; } // 終了~~~~~ SceneManager.LoadScene("ResultScene"); }
public void Initialize() { Debug.Log("-ssssssss"); _playerProvider.GetCurrentPlayers().ForEach(x => { _playerScoreTable[x.ID] = 0; }); _fieldObjectStateNotificator.DestructionObjectAsObservable.Subscribe(x => { // ランダム _playerScoreTable[x.ID] += 10; Debug.Log(x.ID.ToString() + ": " + _playerScoreTable[x.ID]); }).AddTo(_disposable); }