void Start()
 {
     Saving = new DataSaving();
     save   = Saving.Load();
     score  = 0;
     StartCoroutine(pauseStart());
 }
Example #2
0
 public void Stop()
 {
     _guardDataSaver.Stop();
     _tokenSource.Cancel();
     _taskForGuardDataSaver.Wait();
     if (_report.Count != 0)
     {
         DataSaving?.Invoke();
     }
 }
Example #3
0
    void Start()
    {
        cutSceneAnimator = GetComponent <Animator>();
        cutSceneSource   = GetComponent <AudioSource>();

        Saving = new DataSaving();
        save   = Saving.Load();

        scoreText.text = "Total Score\n------------\n" + Math.Round(save.OceanScore + save.SkyScore + save.SpaceScore);
    }
Example #4
0
        public void Start()
        {
            _tokenSource = new CancellationTokenSource();
            var cancellation = _tokenSource.Token;

            _taskForGuardDataSaver = new Task((token) =>
            {
                CancellationToken t = (CancellationToken)token;
                _guardDataSaver     = new Guard(
                    actionToDoEveryTick: () => DataSaving?.Invoke(),
                    secondsToCountdown: _dataSavingIntervalSec
                    );
                _guardDataSaver.Start();
            }, cancellation);
            _taskForGuardDataSaver.Start();
        }
Example #5
0
 public void ThreadLoop()
 {
     DataSaving.saveSimulatorData(sim_, follow_);
 }
Example #6
0
    //Writing out pseudo in meantime
    //trialInfo[i] has: [w,color,responseTime, correct, noResponse, isCongruent]

    //Congruent_correct   = [isCongruent=true, correct true]
    //Congruent_errors    = [isCongruent=true, correct false]
    //Congruent_accuracy  = Congruent_correct / trialInfo.Length
    //Congruent_RT        = SUM[isCongruent=true,responseTime] / trialInfo.Length

    //Just a thought,split trialInfo into chunks of congruent and incongruent for storing this data.

    //Incongruent_correct = [isCongruent=false, correct true]
    //Incongruent_errors  = [isCongruent=false, correct false]
    //Incongruent_accuracy= Congruent_false / trialInfo.Length
    //Incongruent_RT      = SUM[isCongruent=true,responseTime] / trialInfo.Length

    // Save the averaged data over ALL trials and ALL blocks of this test
    public void saveFullTest()
    {
        // Save the full test data
        track preOrPost = S.banana[(int)main.track.Pretest] == true ? track.Pretest : track.PostTest;

        //Data to collect throughout running of algorithm
        int c_c  = 0;
        int c_e  = 0;
        int ic_c = 0;
        int ic_e = 0;

        float cRT_total = 0f;
        float iRT_total = 0f;

        //5*48 (160 congruent, 80 incongruent)
        int n_c_trials = 160;
        int n_i_trials = 80;

        foreach (trialInfo[] t in S.blocks)
        {
            foreach (trialInfo i in t)
            {
                //Add up correct/incorrect answers. Sum total response times
                if (i.isCongruent)
                {
                    if (i.correct)
                    {
                        c_c++;
                    }
                    else
                    {
                        c_e++;
                    }

                    cRT_total += i.responseTime;
                }
                else
                {
                    if (i.correct)
                    {
                        ic_c++;
                    }
                    else
                    {
                        ic_e++;
                    }

                    iRT_total += i.responseTime;
                }
            }
        }
        float Congruent_Accuracy   = c_c / n_c_trials;
        float Incongruent_Accuracy = ic_c / n_i_trials;
        float CongruentRT          = cRT_total / n_c_trials;
        float InCongruentRT        = iRT_total / n_i_trials;

        string[] info =
        {
            c_c.ToString(),        c_e.ToString(),  Congruent_Accuracy.ToString(),   CongruentRT.ToString(),
            ic_c.ToString(),       ic_e.ToString(), Incongruent_Accuracy.ToString(), InCongruentRT.ToString(),
            n_c_trials.ToString(), n_i_trials.ToString()
        };
        // System.DateTime.Today.ToString(),
        // etc.
        DateTime timeStart, timeStop = DateTime.Today;



        // Initialize data headers
        var no_commas           = S.questions.questions.Select(s => String.Concat("MIND_", String.Concat(s.Where <char>(c => c != ','))));
        var media_no_commas     = S.MediaQuestions.questions.Select(s => String.Concat("MediaUse_", String.Concat(s.Where <char>(c => c != ',')))); //new
        var attention_no_commas = S.AttentionQuestions.questions.Select(s => String.Concat("AT_", String.Concat(s.Where <char>(c => c != ','))));   //new
        var paces_no_commas     = S.PacesQuestions.questions.Select(s => String.Concat("PACES_", String.Concat(s.Where <char>(c => c != ','))));    //new

        var oldPreHeader = DataSaving.StoopHeaderPre;

        DataSaving.StoopHeaderPre = media_no_commas.Concat(paces_no_commas).Concat(no_commas).Concat(oldPreHeader).Concat(attention_no_commas).ToArray();

        var oldPostHeader = DataSaving.StoopHeaderPost;

        DataSaving.StoopHeaderPost = oldPostHeader.Concat(attention_no_commas).Concat(paces_no_commas).Concat(no_commas).ToArray();


        // Save diff data for pre or post
        if (preOrPost == track.Pretest)
        {
            // media exposure, paces, mindfulness, stroop, attention
            DataSaving.computerDistance = S.inputSend.happy[(int)HeaderType.Computer_Distance];

            S.inputSend.happy[(int)HeaderType.DOT] = DateTime.Now.ToString();
            var BetterHappy = S.inputSend.happy.Take(DataSaving.InfoHeaderPre.Length).ToArray();

            //Reorganize Media question results
            var t            = S.MediaData.happy;
            var media        = new string[] { t[2], t[3], t[4], t[5], t[0], t[1] };
            var playedBefore = new string[] { t[t.Length - 1] };

            DataSaving.CurrentTrialType = TrialType.Pretest;
            DataSaving.SaveData(S.inputSend.happy[(int)HeaderType.ID], BetterHappy, media.Concat(S.PacesData.happy).Concat(S.NotAdrians.happy).Concat(playedBefore).Concat(info).Concat(S.AttentionData.happy).ToArray());
        }
        else if (preOrPost == track.PostTest)
        {
            // stroop, attention, paces, mindfulness, demographics

            // Demographics data?
            DataSaving.sex              = S.inputSend.happy[(int)HeaderType.Sex];
            DataSaving.version          = "n/a";
            DataSaving.birthdate        = S.inputSend.happy[(int)HeaderType.DOB];
            DataSaving.computerDistance = S.inputSend.happy[(int)HeaderType.Computer_Distance];

            // Calculate Age
            DateTime result;
            if (DateTime.TryParse(DataSaving.birthdate, out result))
            {
                // Compute age
                DateTime today   = DateTime.Today;
                TimeSpan dayDiff = today.Subtract(result);
                double   years   = dayDiff.TotalDays / 365.25;
                S.inputSend.happy[(int)HeaderType.Age] = years.ToString("##.###");
            }
            else
            {
                S.inputSend.happy[(int)HeaderType.Age] = "";
            }

            var BetterHappy = CalculateTime(S.inputSend.happy, track.PostTest);

            // Remove pre-headers from demographics
            var newHappy = BetterHappy.Skip(DataSaving.InfoHeaderPre.Length).ToArray();

            DataSaving.CurrentTrialType = TrialType.Posttest;
            DataSaving.SaveData(S.inputSend.happy[(int)HeaderType.ID], newHappy, info.Concat(S.AttentionData.happy).Concat(S.PacesData.happy).Concat(S.NotAdrians.happy).ToArray());
        }


        // Also save single trial data
        DataSaving.SaveLearningCurveData(S.inputSend.happy[(int)HeaderType.ID],
                                         S.learningCurveDataString);
        learningCurveDataString = "";
    }