Example #1
0
    public void ChangeReminder(int mod) // change the reminder period by a step size of "mod", allowing for a time period of Never, Hours, and Days
    {
        Deck_Handler.Deck currentDeck = deck_handler.dataList[deck_handler.selection];

        if (currentDeck.reminder.period.Days + mod >= 0)
        {
            currentDeck.reminder.period += new TimeSpan(mod, 0, 0, 0);

            periodText.text = currentDeck.reminder.period.Days + " Day";

            if (currentDeck.reminder.period.Days > 1) // Plural
            {
                periodText.text += "s";
            }
            else if (currentDeck.reminder.period.Days == 0) // None
            {
                periodText.text = "Never";
            }
        }

        if (currentDeck.reminder != null)                // If a reminder is assigned, remove it
        {
            int ID = currentDeck.reminder.ID ?? default; // Parsing nullable int into an int. Taken from:https://stackoverflow.com/questions/5995317/how-to-convert-c-sharp-nullable-int-to-int/5995418
            AndroidNotificationCenter.CancelNotification(ID);
        }

        if (currentDeck.reminder.period > TimeSpan.Zero) // if a period is assigned schedule a notification
        {
            currentDeck.reminder.ID = SendRepeatNotification("Practice Reminder", "Don't forget to practice the " + currentDeck.title + " deck!", currentDeck.reminder.period);
        }
    }
Example #2
0
    /* Goals:
     * Get number of data points
     * evenly space verteices for each along the x axis !INSIDE THE RECT!
     * Get marks for each data point
     * Create a second set of vertecies with the same x, and a y of 0 to 1 depending on percentage
     * Create two triangles for each interval following vertex scheme:
     * 1 3
     * 0 2
     * Render graph with current light colour
     */

    static public bool GenerateGraph(Deck_Handler.Deck deck, Rect container, MeshFilter graph)
    {
        int count = deck.practiceSessions.Count;

        if (count > 1)
        {
            float offsetX = -container.width / 2;
            float offsetY = -container.height / 2;

            Mesh           mesh      = new Mesh();
            List <Vector3> vertecies = new List <Vector3>();
            List <int>     triangles = new List <int>();

            float interval = container.width / (count - 1);
            for (int i = 0; i < count; i++)
            {
                // Assign the vertecies for that mark
                vertecies.Add(new Vector3(offsetX + (i * interval), offsetY, 0));
                vertecies.Add(new Vector3(offsetX + (i * interval), offsetY + (container.height * deck.practiceSessions[i].grade), 0));

                // if a triangle can be created, do so.
                if (i < count - 1)
                {
                    /* vertex scheme:
                     * 1 3
                     * 0 2
                     *
                     * connections:
                     * 0, 3, 2 & 0, 1, 3
                     */

                    int index = i * 2;
                    triangles.Add(index);
                    triangles.Add(index + 3);
                    triangles.Add(index + 2);

                    triangles.Add(index);
                    triangles.Add(index + 1);
                    triangles.Add(index + 3);
                }
            }

            mesh.vertices  = vertecies.ToArray();
            mesh.triangles = triangles.ToArray();

            graph.mesh = mesh;
            return(true);
        }
        else
        {
            return(false);
        }
    }
Example #3
0
    // Functions
    public void UpdateContent() // assign all visual values to the parameters in the selected deck
    {
        currentDeck        = deck_handler.dataList[deck_handler.selection];
        practiceCount.text = currentDeck.practiceSessions.Count.ToString();                                          // # of practices
        recentScore.text   = ParseGrade(currentDeck.practiceSessions[currentDeck.practiceSessions.Count - 1].grade); // most recent score

        float avgScoreTotal = 0f;

        for (int i = 0; i < currentDeck.practiceSessions.Count; i++)
        {
            avgScoreTotal += currentDeck.practiceSessions[i].grade;
        }
        averageScore.text = ParseGrade(avgScoreTotal / currentDeck.practiceSessions.Count); // average score for 3 most recent

        float recentAvgScoreTotal = 0f;
        int   count = 0;

        for (int i = 3; i > 0; i--)
        {
            if (currentDeck.practiceSessions.Count >= i)
            {
                recentAvgScoreTotal += currentDeck.practiceSessions[currentDeck.practiceSessions.Count - i].grade;
                count++;
            }
        }
        recentAverageScore.text = ParseGrade(recentAvgScoreTotal / count); // average score for 3 most recent

        if (Graph_Renderer.GenerateGraph(currentDeck, container.rect, graph))
        {
            graphError.SetActive(false);
            graphPointer.SetActive(true);
        }
        else
        {
            graphError.SetActive(true);
            graphPointer.SetActive(false);
        }

        sessionInput.text = "1";
        SelectSession(0);
    }