コード例 #1
0
        public void Initialize()
        {
            // Timerの管理はそれぞれで行ってみる
            // 何か不都合あれば、Masterクライアントから送るようにする
            MainStateEntity.OnChangeStateAsObservable(MainState.StagePlay)
            .Subscribe(_ => StartTimer())
            .AddTo(Disposable);

            // 時間を描画する
            TimerEntity.OnUpdateTimerAsObservable()
            .Subscribe(RenderTime)
            .AddTo(Disposable);

            // 時間が上限まで達していたら、強制的に終了する
            TimerEntity.OnUpdateTimerAsObservable()
            .Where(_ => PhotonNetwork.IsMasterClient)
            .Where(time => time >= Setting.TimeoutSeconds)
            .Subscribe(_ => Timeout())
            .AddTo(Disposable);

            // 正解時の挙動
            ChatHandler.OnChatAsObservable()
            .Where(_ => MainStateEntity.Check(MainState.StagePlay))
            .Where(_ => PhotonNetwork.IsMasterClient)
            .Where(tuple => !PlayerEntity.IsOwner(tuple.Item1))
            .Where(tuple => tuple.Item2 == StageEntity.Answer)
            .Subscribe(tuple => Correct(tuple.Item1))
            .AddTo(Disposable);
        }