public WorkoutResultVO(IExerciseResultVO exerciseResult, ISessionWorkoutVO workout)
        {
            Accuracy             = exerciseResult.Accuracy;
            BadRuns              = exerciseResult.BadRuns;
            BonusScore           = exerciseResult.BonusScore;
            CurrentDifficulty    = exerciseResult.CurrentDifficulty;
            FinishedTimestamp    = exerciseResult.FinishedTimestamp;
            FirstErrorDifficulty = exerciseResult.FirstErrorDifficulty;

            var rawData = exerciseResult.RawData as System.Collections.Generic.IList <ExerciseEngine.Model.ValueObjects.FullRoundVO>;

            _history    = rawData;
            GameHistory = exerciseResult.GameHistory;

            GoodRuns                   = exerciseResult.GoodRuns;
            MaxDifficulty              = exerciseResult.MaxDifficulty;
            MeanDifficulty             = exerciseResult.MeanDifficulty;
            MinDifficulty              = exerciseResult.MinDifficulty;
            ReactionTimeAverage        = exerciseResult.ReactionTimeAverage;
            ReactionTimeBadRunAverage  = exerciseResult.ReactionTimeBadRunAverage;
            ReactionTimeGoodRunAverage = exerciseResult.ReactionTimeGoodRunAverage;
            Score           = exerciseResult.Score;
            StartDifficulty = exerciseResult.StartDifficulty;

            CycleId       = workout.CycleId;
            WorkoutId     = workout.WorkoutId;
            SessionId     = workout.SessionId;
            TrainingId    = workout.TrainingId;
            Variant       = workout.WorkoutConfiguration.Variant;
            ConfigVersion = workout.WorkoutConfiguration.ConfigVersion;

            OnlineTimestamp = 0;

            // Update Result base on goal type
            switch (workout.WorkoutConfiguration.GoalType)
            {
            case GoalType.Score:
                Result = exerciseResult.FinalScore;
                break;

            case GoalType.GoodRuns:
                Result = exerciseResult.GoodRuns;
                break;
            }
        }
Esempio n. 2
0
        public virtual IExerciseResult Execute(IExerciseResultVO vo)
        {
            var stats = new ExerciseStats
            {
                Score           = vo.Score,
                Accuracy        = vo.Accuracy,
                StartDifficulty = vo.StartDifficulty,
                EndDifficulty   = vo.CurrentDifficulty,
                MaxDifficulty   = vo.MaxDifficulty,
                MinDifficulty   = vo.MinDifficulty,
                MeanDifficulty  = vo.MeanDifficulty
            };

            var result = new ExerciseResult
            {
                Stats    = stats,
                ExitCode = state.Result.ToString()
            };

            var history = vo.RawData as IList <FullRoundVO>;
            var index   = 0;

            foreach (var fullRoundVo in history)
            {
                var actions = new List <PlayerAction>();

                foreach (var roundResult in fullRoundVo.RoundResult)
                {
                    var action = new PlayerAction
                    {
                        UnixTimeStamp = (long)roundResult.TimeStampUTC.SinceDateZero().TotalMilliseconds,
                        DeltaTime     = (int)roundResult.ReactionTime.TotalMilliseconds,
                        Answer        = CalcAnswer(roundResult, index),
                    };

                    actions.Add(action);
                }

                result.Trials.Add(actions);

                index++;
            }

            return(result);
        }
Esempio n. 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:ExerciseEngine.Controller.ValueObjects.FinishExerciseVO"/> class.
 /// Ends the exercise.
 /// </summary>
 /// <param name="exerciseResultVO">Exercise result VO.</param>
 public FinishExerciseVO(IExerciseResultVO exerciseResultVO, bool finished)
 {
     ExerciseResultVO = exerciseResultVO;
     this.Finished    = finished;
 }