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; } }
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); }
/// <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; }