Ejemplo n.º 1
0
 public void Visit(EndStream endStream, byte data)
 {
     for (int i = 0; i < endStream.Length; i++)
     {
         currentChange.ChangeData(buffer, endStream.Source + i, 0xFF);
     }
 }
Ejemplo n.º 2
0
        //Запуск декодирования
        public async Task Start()
        {
            if (IsStart)
            {
                return;
            }
            IsStart = true;
            await Task.Run(() =>
            {
                while (IsStart)
                {
                    Result r = ReadPackage();
                    switch (r)
                    {
                    case Result.Error:
                        PackageError?.Invoke(this, new EventArgs());
                        break;

                    case Result.Ok:
                        PackageReceived?.Invoke(this, Package);
                        break;

                    case Result.End:
                        EndStream?.Invoke(this, new EventArgs());
                        Stop();
                        return;
                    }
                }
            });
        }
Ejemplo n.º 3
0
        public void Visit(EndStream endStream, byte data)
        {
            // the only valid edit for an EndStream is to extend the stream.
            Result = true;
            var run    = (TableStreamRun)Model.GetNextRun(memoryLocation);
            var newRun = run.Append(CurrentChange, 1);

            if (newRun.Start != run.Start)
            {
                MessageText  = $"Stream was automatically moved to {newRun.Start:X6}. Pointers were updated.";
                NewDataIndex = memoryLocation + newRun.Start - run.Start;
                DataMoved    = true;
            }
            Model.ObserveRunWritten(CurrentChange, newRun);
        }
Ejemplo n.º 4
0
    private void Start()
    {
        // 待機アニメーションを再生する
        BeginStream.Subscribe(_ => _animator.Play("Idle"));

        // チュートリアルの文言を変更する
        BeginStream.Subscribe(_ => _tutorialText.text = "左クリックで走行ステートに遷移します");


        float counter = 0f;

        // n秒経過したらアピールステートに遷移する
        UpdateStream.Do(_ => counter += Time.deltaTime)
        .Where(count => counter > TRANSITION_TO_APPEAL_DURATION)
        .Subscribe(_ => Transition <AppealState>());

        // 左クリックされたら走行ステートに遷移する
        UpdateStream.Where(_ => Input.GetMouseButtonDown(0))
        .Subscribe(_ => Transition <RunState>());

        // ステート遷移を行うときカウンタをリセットする
        EndStream.Subscribe(_ => counter = 0f);
    }
Ejemplo n.º 5
0
    private void Start()
    {
        // Play idle animation
        BeginStream.Subscribe(_ => _animator.Play("Idle"));

        // Change the language of the tutorial
        BeginStream.Subscribe(_ => _tutorialText.text = "Transit to driving state with left click");


        float counter = 0f;

        // Transit to appeal state after n seconds
        UpdateStream.Do(_ => counter += Time.deltaTime)
        .Where(count => counter > TRANSITION_TO_APPEAL_DURATION)
        .Subscribe(_ => Transition <AppealState>());

        // Transit to driving state when left-clicked
        UpdateStream.Where(_ => Input.GetMouseButtonDown(0))
        .Subscribe(_ => Transition <RunState>());

        // Reset counter when performing state transition
        EndStream.Subscribe(_ => counter = 0f);
    }
 public void Visit(EndStream stream, byte data)
 {
 }
Ejemplo n.º 7
0
 public void Visit(EndStream endStream, byte data) => Result = new string(new[] { ArrayRun.ArrayStart, ArrayRun.ArrayEnd });