|
|
|
@ -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<Player> _players;
|
|
|
|
|
|
|
|
|
|
public ObservableCollection<Player> Players
|
|
|
|
|
{
|
|
|
|
|
get => _players;
|
|
|
|
@ -40,7 +40,6 @@ namespace Models.Game
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<Game> _games;
|
|
|
|
|
|
|
|
|
|
public ObservableCollection<Game> Games
|
|
|
|
|
{
|
|
|
|
|
get => _games;
|
|
|
|
@ -52,7 +51,6 @@ namespace Models.Game
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<Map> _maps;
|
|
|
|
|
|
|
|
|
|
public ObservableCollection<Map> Maps
|
|
|
|
|
{
|
|
|
|
|
get => _maps;
|
|
|
|
@ -64,7 +62,6 @@ namespace Models.Game
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ObservableCollection<BestScore> _bestScores;
|
|
|
|
|
|
|
|
|
|
public ObservableCollection<BestScore> BestScores
|
|
|
|
|
{
|
|
|
|
|
get => _bestScores;
|
|
|
|
@ -74,7 +71,7 @@ namespace Models.Game
|
|
|
|
|
OnPropertyChanged(nameof(BestScores));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private bool _isRunning;
|
|
|
|
|
[DataMember]
|
|
|
|
|
public bool IsRunning
|
|
|
|
@ -131,9 +128,20 @@ namespace Models.Game
|
|
|
|
|
Maps.Add(map);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void AddBestScore(BestScore bestScore)
|
|
|
|
|
public void AddBestScore(int finalScore)
|
|
|
|
|
{
|
|
|
|
|
BestScores.Add(bestScore);
|
|
|
|
|
BestScore bs = new BestScore(UsedMap.Name, CurrentPlayer, 1, finalScore);
|
|
|
|
|
foreach (var score in BestScores)
|
|
|
|
|
{
|
|
|
|
|
if (!bs.Equals(score)) continue;
|
|
|
|
|
|
|
|
|
|
score.IncrGamesPlayed();
|
|
|
|
|
score.UpdateScore(finalScore);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BestScores.Add(bs);
|
|
|
|
|
BestScores.OrderByDescending(p => p.Score);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool RemovePlayer(string playerName)
|
|
|
|
@ -144,6 +152,7 @@ namespace Models.Game
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
Players.Remove(player);
|
|
|
|
|
CheckAndRemoveBestScoresDependencies(player.Pseudo);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -153,6 +162,7 @@ namespace Models.Game
|
|
|
|
|
{
|
|
|
|
|
if (index.Pseudo == pseudo)
|
|
|
|
|
{
|
|
|
|
|
CheckAndChangeBestScoresDependencies(index.Pseudo, newpseudo);
|
|
|
|
|
index.Pseudo = newpseudo;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
@ -161,6 +171,32 @@ namespace Models.Game
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void CheckAndRemoveBestScoresDependencies(string playerName)
|
|
|
|
|
{
|
|
|
|
|
List<BestScore> bs = new List<BestScore>();
|
|
|
|
|
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();
|
|
|
|
|