Exemple #1
0
        private void stageChanged(Stage oldValue, Stage newValue)
        {
            var args = new StageChangedEventArgs {
                OldStage = oldValue, NewStage = newValue
            };

            StageChanged?.Invoke(this, args);
        }
 private void StageChanged(object sender, StageChangedEventArgs e)
 {
     _stage = e.Stage;
     if (_stage != null)
     {
         Name  = _stage.Name;
         Track = (uint)_stage.MusicTrack;
     }
 }
Exemple #3
0
        private void StageSelected(object sender, StageChangedEventArgs e)
        {
            if (e.Stage != null)
            {
                ribbonStage.IsSelected = true;
            }

            this.editorPane.IsActive = true;
        }
Exemple #4
0
 private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
 {
     /* Get next stage, exit on null (END REACHED) */
     if (e.IsEndReached)
     {
         this.DispatcherInvoke(() => Stop());
         return;
     }
     this.DispatcherInvoke(() => CueText.Text = e.Stage.Cue);
 }
 private void StageChanged(object sender, StageChangedEventArgs e)
 {
     if (e.Stage != null)
     {
         SetStage(e.Stage);
     }
     else
     {
         UnsetStage();
     }
 }
Exemple #6
0
 private void StageChanged(object sender, StageChangedEventArgs e)
 {
     if (e.Stage != null)
     {
         SetTileset(e.Stage.Tileset.Tileset);
     }
     else
     {
         SetTileset(null);
     }
 }
        private void AddStageToProject(TilesetDocument tileset)
        {
            var stage = _project.AddStage(Name);

            stage.ChangeTileset(tileset);
            _dataService.SaveProject(_project);

            var args = new StageChangedEventArgs(stage);

            ViewModelMediator.Current.GetEvent <StageChangedEventArgs>().Raise(this, args);
        }
Exemple #8
0
        private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
        {
            /* Get next stage, exit on null (END REACHED) */
            if (e.IsEndReached)
            {
                this.ControlInvoke(self => Stop());
                return;
            }

            var stage = e.Stage;

            _displayText = stage.Cue;

            if (stage.Marker != null)
            {
                var marker = stage.Marker.Value;
                /* Record marker */
                _markable?.Mark(marker);

                switch (marker)
                {
                case MarkerDefinitions.ExperimentStartMarker:
                    _experimentStarted = true;
                    break;

                case MarkerDefinitions.ExperimentEndMarker:
                    _experimentStarted = false;
                    break;

                case MarkerDefinitions.TrialStartMarker:
                    _trialStarted = true;
                    break;

                case MarkerDefinitions.TrialEndMarker:
                    _trialStarted = false;
                    break;

                case MavepExperiment.StimClearMarker:
                    _stimPos = 0;
                    break;

                case MavepExperiment.LeftStimMarker:
                    _stimPos = -1;
                    GenerateStimuli();
                    break;

                case MavepExperiment.RightStimMarker:
                    _stimPos = +1;
                    GenerateStimuli();
                    break;
                }
            }
        }
Exemple #9
0
 private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
 {
     /* Get next stage, exit on null (END REACHED) */
     if (!e.TryGetStage(out var stage))
     {
         this.DispatcherInvoke(() => Stop());
         return;
     }
     if (stage.Marker != null)
     {
         _markable?.Mark(stage.Marker.Value);
     }
     this.DispatcherInvoke(() => CueText.Text = stage.Cue);
 }
        private void StageChanged(object sender, StageChangedEventArgs e)
        {
            if (e.Stage != null)
            {
                if (_history != null)
                {
                    _history.Updated -= UpdateActions;
                }

                _history = e.Stage.History;
                OnPropertyChanged("Items");

                _history.Updated += UpdateActions;
            }
        }
        private void StageChanged(object sender, StageChangedEventArgs e)
        {
            _currentStage = e.Stage;

            if (_currentStage != null)
            {
                var player = _currentStage.Project.EntityByName("Player");
                if (player != null)
                {
                    _playerSprite = SpriteModel.ForEntity(player, _currentStage.Project);
                }
            }

            OnPropertyChanged("HasStage");
        }
        private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
        {
            /* Get next stage, exit on null (END REACHED) */
            if (e.IsEndReached)
            {
                this.DispatcherInvoke(() => Stop());
                return;
            }
            var stage = e.Stage;

            /* Record marker */
            if (stage.Marker != null)
            {
                _markable?.Mark(stage.Marker.Value);
            }

            this.DispatcherInvoke(() =>
            {
                /* Update text */
                CueTextBlock.Text = stage.Cue;

                /* Update stage */
                if (stage is CptStage cptStage)
                {
                    var now   = CurrentTime;
                    var trial = new CptExperiment.CptTrial
                    {
                        Target       = cptStage.IsTarget,
                        Timestamp    = now,
                        Replied      = false,
                        ReactionTime = -1
                    };
                    _currentStage = new ActivedStage(now, cptStage, trial);
                    _trials.AddLast(trial);
                }
                else
                {
                    _currentStage = null;
                }

                /* Set focus */
                if (!IsFocused)
                {
                    Focus();
                }
            });
        }
Exemple #13
0
 private void StageChanged(object sender, StageChangedEventArgs e)
 {
     //Console.WriteLine($"Stage changed from {e.OldStage} to {e.NewStage}");
     updateTabVisibilities(e.NewStage);
     SelectedTab = stageToTabIndex(e.NewStage);
     if (e.NewStage == Stage.Final)
     {
         Analyzer.SetFingerprint(Preprocesor.CurrentImage);
         CurrentImage = Analyzer.FingerprintImage;
     }
     else
     {
         CurrentImage = Preprocesor.CurrentImage;
     }
     if (e.OldStage == Stage.Final)
     {
         Analyzer.Clear();
     }
 }
Exemple #14
0
        private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
        {
            /* Get next stage, exit on null (END REACHED) */
            if (e.IsEndReached)
            {
                this.ControlInvoke(self => Stop());
                return;
            }

            _stageUpdatedAt = CurrentTime;
            var stage = e.Stage;

            _displayText = stage.Cue?.Trim2Null();

            if (stage.Marker != null)
            {
                var marker = stage.Marker.Value;
                /* Record marker */
                _markable?.Mark(marker);

                switch (marker)
                {
                case MarkerDefinitions.ParadigmStartMarker:
                    _paradigmStarted = true;
                    break;

                case MarkerDefinitions.ParadigmEndMarker:
                    _paradigmStarted = false;
                    break;

                case MarkerDefinitions.TrialStartMarker:
                    _trialStarted = true;
                    break;

                case MarkerDefinitions.TrialEndMarker:
                    _trialStarted = false;
                    break;
                }
            }
        }
Exemple #15
0
 protected abstract void OnNextStage(StageChangedEventArgs e);
Exemple #16
0
        protected override void OnNextStage(StageChangedEventArgs e)
        {
            var stage = e.Stage;

            DisplayText  = stage.Cue?.Trim();
            SubtitleText = stage.Subtitle?.Trim();

            if (stage.Marker != null)
            {
                /* Record marker */
                Markable?.Mark(stage.Marker.Value);

                var sessionTime = Session.SessionTime;

                /* Handle events */
                switch (stage.Marker)
                {
                case MarkerDefinitions.BaselineStartMarker:
                    if (_hybridSsvepIdentifier != null)
                    {
                        _initializer = _hybridSsvepIdentifier?.CreateInitializer();
                        _biosignalStreamer.AttachConsumer(_initializer);
                    }
                    break;

                case MarkerDefinitions.BaselineEndMarker:
                    if (_initializer != null)
                    {
                        _biosignalStreamer.DetachConsumer(_initializer);
                        _initializer.Initialize();
                        _initializer = null;
                    }
                    SpellerController.CalibrationComplete();
                    break;

                case MarkerDefinitions.ParadigmStartMarker:
                    Result.ParadigmStartTime = sessionTime;
                    ParadigmStarted          = true;
                    SpellerController.Start();
                    HintButton();
                    break;

                case MarkerDefinitions.ParadigmEndMarker:
                    Result.ParadigmEndTime = sessionTime;
                    break;

                case MarkerDefinitions.TrialStartMarker:
                {
                    var trial = new SsvepTrial {
                        TargetFrequencyIndex = HintedButton?.State
                    };
                    var activedButtons = _activedButtons = UpdateCursor(GazePointHandler.CurrentPosition);
                    if (activedButtons != null)
                    {
                        var buttons = new LinkedList <SpellerParadigm.Result.Button>();
                        foreach (var activedButton in activedButtons)
                        {
                            if (activedButton != null)
                            {
                                buttons.AddLast(new SsvepButton(activedButton.Key, activedButton.State));
                            }
                        }
                        trial.ActivedButtons = buttons;
                    }
                    trial.StartTime = CurrentTime;
                    _trial          = trial;
                    if (_hybridSsvepIdentifier != null)
                    {
                        _hybridSsvepIdentifier.IsActive = true;
                    }
                    SelectedButton = null;
                    DisplayText    = null;
                    TrialCancelled = false;
                    break;
                }

                case MarkerDefinitions.TrialEndMarker:
                {
                    var hintButton = HintedButton;
                    if (Paradigm.Config.Test.AlwaysCorrectFeedback)
                    {
                        SelectedButton           = hintButton;
                        SelectionFeedbackCorrect = true;
                    }
                    HintButton(TrialCancelled ? 1 : 2);
                    var trial = _trial;
                    _trial          = null;
                    trial.Cancelled = TrialCancelled;
                    trial.EndTime   = CurrentTime;
                    if (_hybridSsvepIdentifier != null)
                    {
                        _hybridSsvepIdentifier.IsActive = false;
                    }
                    if (!trial.Cancelled && ComputeTrialResult(_activedButtons,
                                                               _hybridSsvepIdentifier == null ? null : (Func <IdentificationResult>)_hybridSsvepIdentifier.Identify,
                                                               hintButton, out var button, out var correct))
                    {
                        trial.Correct = correct;
                        if (button != null)
                        {
                            trial.SelectedFrequencyIndex = button.State;
                            trial.SelectedButton         = new SsvepButton(button.Key, button.State);
                        }
                        else if (!Paradigm.Config.Test.AlwaysCorrectFeedback)
                        {
                            SystemSounds.Exclamation.Play();
                        }
                    }
                    CheckStop();
                    Result.Trials.Add(trial);
                    TrialTrigger?.Reset();
                    break;
                }
                }
            }
        }
Exemple #17
0
        private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
        {
            /* Get next stage, exit on null (END REACHED) */
            if (!e.TryGetStage(out var stage))
            {
                this.DispatcherInvoke(() => Stop());
                return;
            }

            /* Record marker */
            if (stage.Marker != null)
            {
                _markable?.Mark(stage.Marker.Value);
            }

            this.DispatcherInvoke(() =>
            {
                /* Update text */
                CueTextBlock.Text = stage.Cue;

                /* Experiment start */
                if (stage.Marker == MarkerDefinitions.ExperimentStartMarker)
                {
                    Container.Visibility = Visibility.Visible;
                }

                /* Update stage */
                if (stage is MrcpStage mrcpStage)
                {
                    if (mrcpStage.IsInitialStage)
                    {
                        CueImage.Source = _relaxCueImage;

                        _lineGroups.Clear();
                        var stepX   = PathCanvas.ActualWidth / mrcpStage.TotalTicks;
                        var middleY = PathCanvas.ActualHeight / 2;
                        for (var i = 0; i < mrcpStage.TotalTicks; i++)
                        {
                            _lineGroups.Add(new[] { new Line {
                                                        X1 = stepX * i, Y1 = middleY, X2 = stepX * (i + 1), Y2 = middleY, Style = _defaultLineStyle
                                                    } });
                        }
                        var liftYOffset = -PathCanvas.ActualHeight / 6;
                        var liftY       = middleY + liftYOffset;
                        var lineIdx     = _liftAtIndex = mrcpStage.LiftAt ?? 0;

                        /* Lifting */
                        for (var i = 0; i < 4; i++)
                        {
                            var line = _lineGroups[lineIdx++][0];
                            line.Y1 += i / 4.0 * liftYOffset;
                            line.Y2 += (i + 1) / 4.0 * liftYOffset;
                        }

                        for (var i = 0; i < 3; i++)
                        {
                            var line = _lineGroups[lineIdx++][0];
                            line.Y1  = line.Y2 = liftY;
                        }

                        /* Insert vertical line */
                        _putDownAtIndex  = lineIdx;
                        var verticalLine = new Line {
                            Y1 = liftY, Y2 = middleY, Style = _defaultLineStyle
                        };
                        verticalLine.X1 = verticalLine.X2 = _lineGroups[_putDownAtIndex][0].X1;
                        _lineGroups[_putDownAtIndex] = new[] { _lineGroups[_putDownAtIndex][0], verticalLine };

                        /* Add lines to canvas */
                        PathCanvas.Children.Clear();
                        foreach (var lineGroup in _lineGroups)
                        {
                            foreach (var line in lineGroup)
                            {
                                PathCanvas.Children.Add(line);
                            }
                        }
                    }
                    foreach (var line in _lineGroups[mrcpStage.CurrentTick])
                    {
                        line.Style = _highlightedLineStyle;
                    }
                    if (mrcpStage.CurrentTick == _liftAtIndex)
                    {
                        CueImage.Source = _liftCueImage;
                    }
                    else if (mrcpStage.CurrentTick == _putDownAtIndex)
                    {
                        CueImage.Source = _relaxCueImage;
                    }
                }

                /* Set focus */
                if (!IsFocused)
                {
                    Focus();
                }
            });
        }
Exemple #18
0
        protected override void OnNextStage(StageChangedEventArgs e)
        {
            var stage = e.Stage;

            if (TrialCancelled && stage.Marker != null && stage.Marker == SpellerMarkerDefinitions.SubTrialMarker)
            {
                e.Action = StageAction.Skip;
                return;
            }

            DisplayText  = stage.Cue?.Trim();
            SubtitleText = stage.Subtitle?.Trim();

            if (stage.Marker != null)
            {
                /* Record marker */
                Markable?.Mark(stage.Marker.Value);

                var sessionTime = Session.SessionTime;

                /* Handle events */
                switch (stage.Marker)
                {
                case MarkerDefinitions.ExperimentStartMarker:
                    Result.ExperimentStartTime = sessionTime;
                    ExperimentStarted          = true;
                    SpellerController.Start();
                    HintButton();
                    break;

                case MarkerDefinitions.ExperimentEndMarker:
                    Result.ExperimentEndTime = sessionTime;
                    break;

                case MarkerDefinitions.TrialStartMarker:
                {
                    var trial = new P300Trial {
                        SubTrials = new List <P300Trial.SubTrial>((int)(Experiment.Config.Test.SubTrialCount + 1))
                    };
                    UpdateCursor(GazePointHandler.CurrentPosition);
                    var activedButtons = _activedButtons;
                    if (activedButtons != null)
                    {
                        var buttons = new LinkedList <SpellerExperiment.Result.Button>();
                        foreach (var activedButton in activedButtons)
                        {
                            if (activedButton != null)
                            {
                                buttons.AddLast(new SpellerExperiment.Result.Button(activedButton.Key));
                            }
                        }
                        trial.ActivedButtons = buttons;
                    }
                    trial.StartTime = CurrentTime;
                    _trial          = trial;
                    if (_p300Detector != null)
                    {
                        _p300Detector.Actived = true;
                    }
                    SelectedButton = null;
                    DisplayText    = null;
                    TrialCancelled = false;
                    break;
                }

                case MarkerDefinitions.TrialEndMarker:
                {
                    var hintButton = HintedButton;
                    HintButton(TrialCancelled ? 1 : 2);
                    var trial = _trial;
                    _trial          = null;
                    trial.Cancelled = TrialCancelled;
                    trial.EndTime   = CurrentTime;
                    if (_p300Detector != null)
                    {
                        _p300Detector.Actived = false;
                    }
                    if (!trial.Cancelled && ComputeTrialResult(_activedButtons,
                                                               _p300Detector == null ? null : (Func <int>)_p300Detector.Compute,
                                                               hintButton, out var button, out var correct))
                    {
                        trial.Correct = correct;
                        if (button == null)
                        {
                            SystemSounds.Exclamation.Play();
                        }
                        else
                        {
                            trial.SelectedButton = new SpellerExperiment.Result.Button(button.Key);
                        }
                    }
                    CheckStop();
                    Result.Trials.Add(trial);
                    TrialTrigger?.Reset();
                    break;
                }

                case SpellerMarkerDefinitions.SubTrialMarker:
                {
                    var activedButtons      = _activedButtons;
                    var randomBoolSequences = _randomBoolSequences;
                    if (activedButtons != null)
                    {
                        var flags = new bool[activedButtons.Length];
                        for (var i = 0; i < activedButtons.Length; i++)
                        {
                            var button = activedButtons[i];
                            if (button != null)
                            {
                                button.State = (flags[i] = randomBoolSequences[i].Next()) ? 1 : 0;
                            }
                        }
                        _trial.SubTrials.Add(new P300Trial.SubTrial {
                                Timestamp = CurrentTime, Flags = flags
                            });
                    }
                    break;
                }
                }
            }
        }
Exemple #19
0
        private void StageProgram_StageChanged(object sender, StageChangedEventArgs e)
        {
            /* Get next stage, exit on null (END REACHED) */
            if (e.IsEndReached)
            {
                this.ControlInvoke(self => Stop());
                return;
            }

            var stage = e.Stage;

            if (stage.Marker != null)
            {
                _markable?.Mark(stage.Marker.Value);

                switch (e.Stage.Marker)
                {
                case MarkerDefinitions.ParadigmStartMarker:
                    _paradigmStarted = true;
                    break;

                case MarkerDefinitions.ParadigmEndMarker:
                    _paradigmStarted = false;
                    break;

                case MarkerDefinitions.TrialStartMarker:
                {
                    var trial = new P300Paradigm.Result.Trial();
                    _result.Trials.Add(trial);
                    trial.SubTrials = new List <P300Paradigm.Result.Trial.SubTrial>((int)(_paradigm.Config.Test.SubTrialCount + 1));
                    trial.Timestamp = CurrentTime;
                    _trial          = trial;
                    _displayText    = null;
                    break;
                }

                case MarkerDefinitions.TrialEndMarker:
                    _trial = null;
                    break;

                case P300Paradigm.SubTrialMarker:
                    var targetActived = false;
                    var flags         = new bool[_blocks.Length];
                    for (var i = 0; i < _blocks.Length; i++)
                    {
                        var block = _blocks[i];
                        var flag  = flags[i] = block.Random.Next();
                        block.Actived = flag;
                        if (flag && block.Target)
                        {
                            targetActived = true;
                        }
                    }
                    if (targetActived)
                    {
                        _markable?.Mark(P300Paradigm.OddBallEventMarker);
                    }
                    _trial.SubTrials.Add(new P300Paradigm.Result.Trial.SubTrial {
                        Timestamp = CurrentTime, Flags = flags
                    });
                    break;
                }
            }

            _displayText = stage.Cue;
        }
        private void StageChanged(object sender, StageChangedEventArgs e)
        {
            _currentStage = e.Stage;

            OnPropertyChanged("HasStage");
        }
        protected override void OnNextStage(StageChangedEventArgs e)
        {
            var stage = e.Stage;

            DisplayText  = stage.Cue?.Trim();
            SubtitleText = stage.Subtitle?.Trim();

            if (stage.Marker != null)
            {
                /* Record marker */
                Markable?.Mark(stage.Marker.Value);

                var sessionTime = Session.SessionTime;

                /* Handle events */
                switch (stage.Marker)
                {
                case MarkerDefinitions.ParadigmStartMarker:
                    Result.ParadigmStartTime = sessionTime;
                    ParadigmStarted          = true;
                    SpellerController.Start();
                    HintButton();
                    break;

                case MarkerDefinitions.ParadigmEndMarker:
                    Result.ParadigmEndTime = sessionTime;
                    break;

                case MarkerDefinitions.TrialStartMarker:
                {
                    var trial         = new SpellerParadigm.Result.Trial();
                    var activedButton = _activatedButton = UpdateCursor(GazePointHandler.CurrentPosition);
                    if (activedButton != null)
                    {
                        trial.ActivedButtons = new SpellerParadigm.Result.Button(activedButton.Key).SingletonArray();
                    }
                    trial.StartTime = CurrentTime;
                    _trial          = trial;
                    SelectedButton  = null;
                    DisplayText     = null;
                    TrialCancelled  = false;
                    if (activedButton != null)
                    {
                        _detector.Active(activedButton.BorderRect);
                    }
                    break;
                }

                case MarkerDefinitions.TrialEndMarker:
                {
                    var hintButton = HintedButton;
                    HintButton(TrialCancelled ? 1 : 2);
                    var trial          = _trial;
                    var detectorResult = _detector.GetResult(Buttons);
                    _detector.Reset();
                    _trial          = null;
                    trial.Cancelled = TrialCancelled;
                    trial.EndTime   = CurrentTime;
                    if (!trial.Cancelled && ComputeTrialResult(Buttons, Functions.Constant(detectorResult), hintButton,
                                                               out var button, out var correct))
                    {
                        trial.Correct = correct;
                        if (button != null)
                        {
                            trial.SelectedButton = new SpellerParadigm.Result.Button(button.Key);
                        }
                        else if (!Paradigm.Config.Test.AlwaysCorrectFeedback)
                        {
                            SystemSounds.Exclamation.Play();
                        }
                    }
                    CheckStop();
                    Result.Trials.Add(trial);
                    TrialTrigger?.Reset();
                    break;
                }
                }
            }
        }