Untitled

mail@pastecode.io avatar
unknown
csharp
2 years ago
2.8 kB
2
Indexable
Never
public void EndGame()
{     
    StartService(true);
    if (int.Parse(tvTimer.Text) > spData.GetIntValue(General.KEY_BEST_TIME, 0))
        spData.PutIntValue(General.KEY_BEST_TIME, int.Parse(tvTimer.Text));
    tskGetScores = fbData.GetDocument("LeaderBoard", "Records");
    tskGetScores.AddOnCompleteListener(this);
    Intent intent = new Intent(this, typeof(GameEndActivity));
    StartActivity(intent);
    Finish();
    game.TRunGame.Suspend();
    game.TManageObstacle.Suspend();
}
/// <summary>
/// הפעולה בודקת אם הניקוד שהשחקן עשה אמור להיכנס לטבלת השיאים
/// </summary>
/// <param name="currentScore">הציון שהמשתמש עשה במשחק האחרון</param>
/// <param name="scores">רשימת הציונים </param>
/// <returns>הפעולה מחזירה את המקום של השחקן בטבלת השיאים אם הוא נכנס אליה </returns>
private int CheckIfHighScore(int currentScore, JavaList scores)
{
    for (int i = 0; i < scores.Count; i++)
    {
        JavaDictionary score = (JavaDictionary)scores[i];
        int scoreVal = int.Parse(score["score"].ToString());
        if (currentScore > scoreVal)
            return i;
    }
    if (scores.Count < 10)
        return scores.Count;
    return -1;
}
/// <summary>
/// הפעולה מעדכנת בטבלת השיאים את הרשימה שהתקבלה
/// </summary>
/// <param name="scores">רשימת הציונים שמתעדכנת בטבלת השיאים</param>
private void UpdateLeaderboard(JavaList scores)
{
    string[] segments = { "Records" };
    FieldPath fp = FieldPath.Of(segments);
    fbData.UpdateDocumentData(General.FB_COLLECTION_NAME, General.FB_DOCUMENT_NAME, fp, scores);
}
/// <summary>
/// מעדכן את הטבלת שיאים
/// </summary>
public void OnComplete(Task task)
{
    if (task.IsSuccessful)
    {
        if (task == tskGetScores)
        {
            DocumentSnapshot ds = (DocumentSnapshot)task.Result;
            JavaList scores = (JavaList)ds.Get(General.FB_DOCUMENT_NAME);
            int lastScore = int.Parse(tvTimer.Text);
            int scoreIndex = CheckIfHighScore(lastScore, scores);
            if (scoreIndex != -1)
            {
                JavaDictionary ourScore = new JavaDictionary();
                string username = spData.GetStringValue(General.KEY_NAME, "guest");
                ourScore.Add("username", username);
                ourScore.Add("score", lastScore);
                scores.Insert(scoreIndex, ourScore);
                if (scores.Count > 10)
                    scores.RemoveAt(scores.Count - 1);
                UpdateLeaderboard(scores);
            }
        }
    }
}