public ActivityMetrics()
        {
            number_of_tries_to_solve = 0;
            limits_to_number_of_tries_to_solve = new List<int>();
            compared_limits_to_number_of_tries_to_solve = new List<bool>();

            time_on_activity = new Stopwatch();
            list_of_times_on_activity = new List<TimeSpan>();

            time_on_activity_thresholds = new List<TimeSpan>();
            time_on_activity_threshold_compared = new List<bool>();

            default_time_on_activity_thresholds = new List<TimeSpan>();
            default_time_on_activity_threshold_compared = new List<bool>();

            current_task_time_limit_index=0;
            //time_on_activity_threshold_compared = new List<bool>();

            EncouteredErrorsList = new Dictionary<string, ErrorMetrics>();
            givenHintsList = new Dictionary<string, HintMetrics>();

            activity_completed = false;

            //initialize the hardcoded errors and their names/IDs
            ErrorMetrics errorInRecognizing = new ErrorMetrics();
            errorRecognizeName = "errorInRecognizing";
            ErrorMetrics errorInRecalling = new ErrorMetrics();
            errorRecallName = "errorInRecalling";
            ErrorMetrics errorInClassifying = new ErrorMetrics();
            errorClassifyName="errorInClassifying";
            ErrorMetrics errorInImplementing = new ErrorMetrics();
            errorImplementName="errorInImplementing";

            EncouteredErrorsList.Add(errorRecognizeName,errorInRecognizing);
            EncouteredErrorsList.Add(errorRecallName,errorInRecalling);
            EncouteredErrorsList.Add(errorClassifyName, errorInClassifying);
            EncouteredErrorsList.Add(errorImplementName, errorInImplementing);
        }
        public string TrackAndStoreErrorForThisActivity(string current_activity_ID, string error_ID)
        {
            ActivityMetrics current_activity     = null;
            ErrorMetrics    temp_error_for_first = null;
            string          would_be_hint        = "";

            gameActivitiesList.TryGetValue(current_activity_ID, out current_activity);

            current_activity.EncouteredErrorsList
            .TryGetValue(error_ID, out temp_error_for_first);
            temp_error_for_first.ErrorMade(current_activity.time_on_activity.Elapsed);

            string errorInfo = error_ID + " timestamps: "
                               + temp_error_for_first.error_time_stamps.Count + "#  ";

            for (int i = 0; i < temp_error_for_first.error_time_stamps.Count; i++)
            {
                errorInfo += temp_error_for_first.error_time_stamps[i] + "  ";
            }

            //rulesObject.CheckRulesForErrors(ref current_activity, ref would_be_hint);

            return("Hint: " + would_be_hint + " info for errors " + errorInfo);
        }