diff --git a/source/Trek-12/DataContractPersistence/DataContractJson.cs b/source/Trek-12/DataContractPersistence/DataContractJson.cs
index 2307f82..d53d6fb 100644
--- a/source/Trek-12/DataContractPersistence/DataContractJson.cs
+++ b/source/Trek-12/DataContractPersistence/DataContractJson.cs
@@ -31,7 +31,7 @@ namespace DataContractPersistence
///
/// Load all the data from JSON file
///
- /// A tuple with the lists of players, games, maps and best scores
+ /// A tuple with the lists of players, games, maps and bestScores
public (ObservableCollection, ObservableCollection, ObservableCollection, ObservableCollection) LoadData()
{
var JsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist));
diff --git a/source/Trek-12/DataContractPersistence/DataContractXml.cs b/source/Trek-12/DataContractPersistence/DataContractXml.cs
index 8255ecc..9ffa396 100644
--- a/source/Trek-12/DataContractPersistence/DataContractXml.cs
+++ b/source/Trek-12/DataContractPersistence/DataContractXml.cs
@@ -29,7 +29,7 @@ namespace DataContractPersistence
///
/// Load all the data from XML file
///
- /// A tuple with the lists of players, games, maps and best scores
+ /// A tuple with the lists of players, games, maps and bestScores
public (ObservableCollection, ObservableCollection, ObservableCollection, ObservableCollection) LoadData()
{
var serializer = new DataContractSerializer(typeof(DataToPersist));
diff --git a/source/Trek-12/DataContractPersistence/DataToPersist.cs b/source/Trek-12/DataContractPersistence/DataToPersist.cs
index b78b204..9c72c68 100644
--- a/source/Trek-12/DataContractPersistence/DataToPersist.cs
+++ b/source/Trek-12/DataContractPersistence/DataToPersist.cs
@@ -19,7 +19,7 @@ namespace DataContractPersistence
/// List of maps with their boards
///
public ObservableCollection Maps { get; set; }
-
+
///
/// List of best scores
///
diff --git a/source/Trek-12/Models/Game/BestScore.cs b/source/Trek-12/Models/Game/BestScore.cs
index cbe2923..44a0ad5 100644
--- a/source/Trek-12/Models/Game/BestScore.cs
+++ b/source/Trek-12/Models/Game/BestScore.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
+using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
@@ -10,12 +11,23 @@ namespace Models.Game
///
/// This class represents the best score of a player.
///
+ [DataContract]
public class BestScore
{
+ ///
+ /// Name of the map.
+ ///
+ [DataMember]
+ public string MapName { get; private set; }
+
+ [DataMember]
+ public Player ThePlayer { get; private set; }
+
///
/// Number of games played by the user (on a specific map).
///
private int _gamesPlayed;
+ [DataMember]
public int GamesPlayed
{
get => _gamesPlayed;
@@ -31,6 +43,7 @@ namespace Models.Game
/// Best score of the player (on a specific map).
///
private int _score;
+ [DataMember]
public int Score
{
get => _score;
@@ -47,8 +60,11 @@ namespace Models.Game
///
/// Number of games played by the new user
/// Best score
- public BestScore(int gamesPlayed, int score)
+ /// The name of the map
+ public BestScore(string map, Player player, int gamesPlayed, int score)
{
+ MapName = map;
+ ThePlayer = player;
GamesPlayed = gamesPlayed;
Score = score;
}
@@ -69,5 +85,29 @@ namespace Models.Game
{
Score = newScore;
}
+
+ ///
+ /// Redefine the equal operation between BestScore.
+ ///
+ /// The object to compare with the current BestScore.
+ /// true if the specified object is equal to the current BestScore; otherwise, false.
+ public override bool Equals(object? obj)
+ {
+ if (obj == null || GetType() != obj.GetType())
+ {
+ return false;
+ }
+ BestScore c = (BestScore)obj;
+ return (MapName == c.MapName && ThePlayer == c.ThePlayer);
+ }
+
+ ///
+ /// Returns the hash code for the current BestScore, in order for the Equals operation to work
+ ///
+ /// The hash code for the current BestScore.
+ public override int GetHashCode()
+ {
+ return MapName.GetHashCode() ^ ThePlayer.GetHashCode();
+ }
}
}
diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs
index e0f1059..c5e30c5 100644
--- a/source/Trek-12/Models/Game/Game.cs
+++ b/source/Trek-12/Models/Game/Game.cs
@@ -3,6 +3,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
+using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
@@ -23,12 +24,11 @@ namespace Models.Game
[DataContract]
public class Game : INotifyPropertyChanged
{
- /* Persistence */
+ /* Persistence Interface */
public IPersistence PersistenceManager { get; set; }
/* List for the game and persistence */
private ObservableCollection _players;
-
public ObservableCollection Players
{
get => _players;
@@ -40,7 +40,6 @@ namespace Models.Game
}
private ObservableCollection _games;
-
public ObservableCollection Games
{
get => _games;
@@ -52,7 +51,6 @@ namespace Models.Game
}
private ObservableCollection _maps;
-
public ObservableCollection Maps
{
get => _maps;
@@ -64,7 +62,6 @@ namespace Models.Game
}
private ObservableCollection _bestScores;
-
public ObservableCollection BestScores
{
get => _bestScores;
@@ -74,7 +71,7 @@ namespace Models.Game
OnPropertyChanged(nameof(BestScores));
}
}
-
+
private bool _isRunning;
[DataMember]
public bool IsRunning
@@ -134,6 +131,7 @@ namespace Models.Game
public void AddBestScore(BestScore bestScore)
{
BestScores.Add(bestScore);
+ BestScores.OrderByDescending(p => p.Score);
}
public bool RemovePlayer(string playerName)
@@ -144,6 +142,7 @@ namespace Models.Game
return false;
}
Players.Remove(player);
+ CheckAndRemoveBestScoresDependencies(player.Pseudo);
return true;
}
@@ -153,6 +152,7 @@ namespace Models.Game
{
if (index.Pseudo == pseudo)
{
+ CheckAndChangeBestScoresDependencies(index.Pseudo, newpseudo);
index.Pseudo = newpseudo;
return true;
}
@@ -161,6 +161,32 @@ namespace Models.Game
return false;
}
+ public void CheckAndRemoveBestScoresDependencies(string playerName)
+ {
+ List bs = new List();
+ foreach (var bestScore in BestScores)
+ {
+ if (!bestScore.ThePlayer.Pseudo.Equals(playerName)) continue;
+
+ bs.Add(bestScore);
+ }
+
+ foreach (var score in bs)
+ {
+ BestScores.Remove(score);
+ }
+ }
+
+ public void CheckAndChangeBestScoresDependencies(string playerName, string newPlayerName)
+ {
+ foreach (var bestScore in BestScores)
+ {
+ if (!bestScore.ThePlayer.Pseudo.Equals(playerName)) continue;
+
+ bestScore.ThePlayer.Pseudo = newPlayerName;
+ }
+ }
+
public void LoadData()
{
var data = PersistenceManager.LoadData();
@@ -192,6 +218,12 @@ namespace Models.Game
Games = new ObservableCollection();
Maps = new ObservableCollection();
BestScores = new ObservableCollection();
+ var mp = new Player("ludfulot", "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");
+ Players.Add(mp);
+ AddBestScore(new BestScore("Dunai", mp, 1, 54));
+ var mp2 = new Player("reneveu", "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");
+ Players.Add(mp2);
+ AddBestScore(new BestScore("Dunai", mp2, 4, 39));
GameRules = new Rules.Rules();
diff --git a/source/Trek-12/Models/Game/Player.cs b/source/Trek-12/Models/Game/Player.cs
index 71bdc9f..0acad39 100644
--- a/source/Trek-12/Models/Game/Player.cs
+++ b/source/Trek-12/Models/Game/Player.cs
@@ -1,4 +1,5 @@
-using System.ComponentModel;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using Models.Interfaces;
@@ -17,12 +18,7 @@ namespace Models.Game
void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- ///
- /// The best score of the player on a specific map.
- ///
- [DataMember]
- public Dictionary BestScores { get; private set; }
-
+
///
/// It is he pseudo of the player.
///
@@ -68,7 +64,6 @@ namespace Models.Game
Pseudo = pseudo;
ProfilePicture = profilePicture;
CreationDate = DateTime.Now.ToString("dd/MM/yyyy");
- BestScores = new Dictionary();
}
///
@@ -102,13 +97,5 @@ namespace Models.Game
{
LastPlayed = DateTime.Now.ToString("dd/MM/yyyy");
}
-
- ///
- /// Add a new best score to the player.
- ///
- public void AddBestScore(Map map, BestScore bestScore)
- {
- BestScores.Add(map, bestScore);
- }
}
}
\ No newline at end of file
diff --git a/source/Trek-12/Tests/BestScoreTests.cs b/source/Trek-12/Tests/BestScoreTests.cs
index f860375..f52a4cd 100644
--- a/source/Trek-12/Tests/BestScoreTests.cs
+++ b/source/Trek-12/Tests/BestScoreTests.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;
using Models.Game;
@@ -12,7 +13,11 @@ namespace Tests
[Fact]
public void Constructor_WithNegativeInputs_SetsPropertiesToZero()
{
- var bestScore = new BestScore(-5, -10);
+ var myMap = new Map("Dunai", "Dunai.png");
+ var myPlayer = new Player("John", "pp.png");
+
+ var bestScore = new BestScore(myMap.Name, myPlayer, -5, -10);
+
Assert.Equal(0, bestScore.GamesPlayed);
Assert.Equal(0, bestScore.Score);
}
@@ -20,7 +25,11 @@ namespace Tests
[Fact]
public void Constructor_WithPositiveInputs_SetsPropertiesCorrectly()
{
- var bestScore = new BestScore(5, 10);
+ var myMap = new Map("Dunai", "Dunai.png");
+ var myPlayer = new Player("John", "pp.png");
+
+ var bestScore = new BestScore(myMap.Name, myPlayer, 5, 10);
+
Assert.Equal(5, bestScore.GamesPlayed);
Assert.Equal(10, bestScore.Score);
}
@@ -28,24 +37,36 @@ namespace Tests
[Fact]
public void IncrGamesPlayed_IncrementsGamesPlayed()
{
- var bestScore = new BestScore(0, 0);
+ var myMap = new Map("Dunai", "Dunai.png");
+ var myPlayer = new Player("John", "pp.png");
+
+ var bestScore = new BestScore(myMap.Name, myPlayer, 0, 0);
bestScore.IncrGamesPlayed();
+
Assert.Equal(1, bestScore.GamesPlayed);
}
[Fact]
public void ScoreSetter_WithLowerValue_DoesNotChangeScore()
{
- var bestScore = new BestScore(0, 10);
+ var myMap = new Map("Dunai", "Dunai.png");
+ var myPlayer = new Player("John", "pp.png");
+
+ var bestScore = new BestScore(myMap.Name, myPlayer, 0, 10);
bestScore.UpdateScore(5);
+
Assert.Equal(5, bestScore.Score);
}
[Fact]
public void ScoreSetter_WithHigherValue_ChangesScore()
{
- var bestScore = new BestScore(0, 5);
+ var myMap = new Map("Dunai", "Dunai.png");
+ var myPlayer = new Player("John", "pp.png");
+
+ var bestScore = new BestScore(myMap.Name, myPlayer, 0, 5);
bestScore.UpdateScore(10);
+
Assert.Equal(10, bestScore.Score);
}
}
diff --git a/source/Trek-12/Tests/GameTests.cs b/source/Trek-12/Tests/GameTests.cs
index 890890f..8dd3004 100644
--- a/source/Trek-12/Tests/GameTests.cs
+++ b/source/Trek-12/Tests/GameTests.cs
@@ -78,7 +78,7 @@ public class GameTests
[Fact]
public void AddBestScore_ShouldAddBestScoreToList()
{
- var bestScore = new BestScore(3, 125);
+ var bestScore = new BestScore("test", new Player("John", "Picture.png"), 3, 127);
_game.AddBestScore(bestScore);
@@ -88,10 +88,14 @@ public class GameTests
[Fact]
public void LoadData_ShouldLoadDataFromPersistence()
{
- var players = new ObservableCollection { new Player("test", "DefaultProfilePicture") };
- var games = new ObservableCollection { new Game(_mockPersistence.Object) };
- var maps = new ObservableCollection { new Map("test_name", "test_background.png") };
- var bestScores = new ObservableCollection { new BestScore(1, 26) };
+ var myGame = new Game(_mockPersistence.Object);
+ var myPlayer = new Player("test", "DefaultProfilePicture");
+ var myMap = new Map("test_name", "test_background.png");
+
+ var players = new ObservableCollection { myPlayer };
+ var games = new ObservableCollection { myGame };
+ var maps = new ObservableCollection { myMap };
+ var bestScores = new ObservableCollection { new BestScore(myMap.Name, myPlayer, 1, 45) };
_mockPersistence.Setup(p => p.LoadData()).Returns((players, games, maps, bestScores));
diff --git a/source/Trek-12/Trek-12/App.xaml.cs b/source/Trek-12/Trek-12/App.xaml.cs
index b906f7f..e640454 100644
--- a/source/Trek-12/Trek-12/App.xaml.cs
+++ b/source/Trek-12/Trek-12/App.xaml.cs
@@ -26,7 +26,7 @@ namespace Trek_12
Directory.CreateDirectory(FilePath);
}
- //File.Delete(Path.Combine(FilePath, FileName));
+ File.Delete(Path.Combine(FilePath, FileName));
string fullPath = Path.Combine(FilePath, FileName);
if (File.Exists(fullPath))
diff --git a/source/Trek-12/Trek-12/Views/Components/ContentLeaderBoard.xaml b/source/Trek-12/Trek-12/Views/Components/ContentLeaderBoard.xaml
index 639b6f3..3ec0052 100644
--- a/source/Trek-12/Trek-12/Views/Components/ContentLeaderBoard.xaml
+++ b/source/Trek-12/Trek-12/Views/Components/ContentLeaderBoard.xaml
@@ -1,7 +1,9 @@
+ x:Class="Trek_12.Views.Components.ContentLeaderBoard"
+ x:Name="this">
+
@@ -12,31 +14,31 @@
WidthRequest="60"
IsClippedToBounds="True"
HasShadow="True">
-
-
-
-
-
+
+
+
+
(string)GetValue(PseudoProperty);
+ set => SetValue(PseudoProperty, value);
+ }
+
+
+ public static readonly BindableProperty ProfilePictureProperty =
+ BindableProperty.Create("ProfilePicture", typeof(string), typeof(ContentLeaderBoard), "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");
+
+ public ImageSource ProfilePicture
+ {
+ get => converter.RetrieveImage((string)GetValue(ProfilePictureProperty));
+ set => SetValue(ProfilePictureProperty, value);
+ }
+
+
+ public static readonly BindableProperty NbGamesProperty =
+ BindableProperty.Create("NbGames", typeof(string), typeof(viewsProfils), string.Empty);
+
+ public string NbGames => (string)GetValue(NbGamesProperty);
+
+
+ public static readonly BindableProperty BestScoreProperty =
+ BindableProperty.Create("BestScore", typeof(string), typeof(viewsProfils), string.Empty);
+
+ public string BestScore => (string)GetValue(BestScoreProperty);
+
+
+ public static readonly BindableProperty MapProperty =
+ BindableProperty.Create("Map", typeof(string), typeof(viewsProfils), string.Empty);
+
+ public string Map => (string)GetValue(MapProperty);
}
\ No newline at end of file
diff --git a/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml b/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml
index f6598f3..848a0c6 100644
--- a/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml
+++ b/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml
@@ -4,45 +4,57 @@
xmlns:views="clr-namespace:Trek_12.Views.Components"
x:Class="Trek_12.Views.PageLeaderBoard"
Title="PageLeaderBoard">
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml.cs b/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml.cs
index 9ab1408..f11e8e7 100644
--- a/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml.cs
+++ b/source/Trek-12/Trek-12/Views/PageLeaderBoard.xaml.cs
@@ -1,10 +1,16 @@
+using Models.Game;
+using System.Diagnostics;
+
namespace Trek_12.Views;
public partial class PageLeaderBoard : ContentPage
{
+ public Game LeaderboardManager => (App.Current as App).Manager;
+
public PageLeaderBoard()
{
InitializeComponent();
+ BindingContext = LeaderboardManager;
}
private async void OnBackArrow_Tapped(object sender, EventArgs e)