public void Initialize() { PhotonPlayerHandler.OnLeftAsObservable() .Where(_ => !MainStateEntity.Check(MainState.Wait, MainState.Result)) .Where(_ => PhotonNetwork.IsMasterClient) .Subscribe(_ => ChangeStateError()) .AddTo(Disposable); MainStateEntity.OnChangeStateAsObservable(MainState.Error) .Subscribe(_ => Disconnect()) .AddTo(Disposable); }
public void Initialize() { // 入力 KeyboardKeyHandlerList.Select(x => x.OnDownAsObservable()) .Merge() .Subscribe(Set) .AddTo(Disposable); // 送信 KeyboardSendButtonHandler.OnDownAsObservable() .Where(_ => !KeyboardEntity.IsEmpty()) .Subscribe(_ => { switch (MainStateEntity.State) { case MainState.Wait: Comment(); break; case MainState.StagePlay: SendChat(); break; } }) .AddTo(Disposable); // 削除 KeyboardDeleteButtonHandler.OnDownAsObservable() .Subscribe(_ => Delete()) .AddTo(Disposable); // Owenrの場合、徐々に文字が増えていく TimerEntity.OnUpdateTimerAsObservable() .Where(_ => PlayerEntity.IsOwner(PhotonNetwork.LocalPlayer)) .Where(_ => MainStateEntity.Check(MainState.StagePlay)) .Subscribe(time => { var unlockKey = UnlockKeyList.List.ElementAtOrDefault(KeyboardEntity.UnlockKeyIndex); if (unlockKey != null && time >= unlockKey.ThresholdTime) { foreach (var i in KeyboardEntity.EnableOwner(unlockKey.Count)) { KeyboardKeyRendererList[i].Enable(); } KeyboardEntity.IncreaseUnlockKeyIndex(); KeyboardListRenderer.PlayEnableSound(); InfoEntity.Set($"新しく {unlockKey.Count}文字 追加されました"); } }) .AddTo(Disposable); }
public void Initialize() { AudioPlayer.Play(AudioType.Main1); WaitLeaveRoomButtonHandler.OnDownAsObservable() .Where(_ => MainStateEntity.Check(MainState.Wait)) .Subscribe(_ => LeaveRoom()) .AddTo(Disposable); PhotonPlayerHandler.OnEnterAsObservable() .Where(_ => MainStateEntity.Check(MainState.Wait)) .Subscribe(player => SetInfo($"{player.NickName} さんがルームに参加しました")) .AddTo(Disposable); // 待機中にプレイヤーの情報に変更があれば描画する Observable.Merge( PhotonPlayerHandler.OnEnterAsObservable().AsUnitObservable(), PhotonPlayerHandler.OnLeftAsObservable().AsUnitObservable(), PhotonPlayerHandler.OnUpdateCustomPropertyAsObservable().AsUnitObservable() ) .Where(_ => MainStateEntity.Check(MainState.Wait)) .Subscribe(_ => { OnUpdatedPlayerList(); PlaySE(); }) .AddTo(Disposable); // 人数が上限に達したらホストが状態変更のリクエストを投げる PhotonPlayerHandler.OnEnterAsObservable() .Where(_ => PhotonNetwork.CurrentRoom.PlayerCount == PhotonNetwork.CurrentRoom.MaxPlayers) .Where(_ => PhotonNetwork.MasterClient.UserId != null) .Where(_ => PhotonNetwork.IsMasterClient) .Subscribe(_ => ChangeReadyStateRequest()) .AddTo(Disposable); PhotonPlayerHandler.OnLeftAsObservable() .Where(_ => MainStateEntity.Check(MainState.Wait)) .Subscribe(player => SetInfo($"{player.NickName} さんがルームから退出しました")) .AddTo(Disposable); OnUpdatedPlayerList(); SetInfo("3人揃うまでお待ちください コメントを変更することができます"); }