diff --git a/source/Trek-12/DataContractPersistence/DataContractJson.cs b/source/Trek-12/DataContractPersistence/DataContractJson.cs
index 83f745a..2307f82 100644
--- a/source/Trek-12/DataContractPersistence/DataContractJson.cs
+++ b/source/Trek-12/DataContractPersistence/DataContractJson.cs
@@ -26,13 +26,13 @@ namespace DataContractPersistence
///
/// Path (relative to the project)
///
- public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
+ public string FilePath { get; set; } = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Trek_12");
///
/// Load all the data from JSON file
///
/// A tuple with the lists of players, games, maps and best scores
- public (List, List, List, List) LoadData()
+ public (ObservableCollection, ObservableCollection, ObservableCollection, ObservableCollection) LoadData()
{
var JsonSerializer = new DataContractJsonSerializer(typeof(DataToPersist));
DataToPersist? data = new DataToPersist();
@@ -52,8 +52,9 @@ namespace DataContractPersistence
///
///
///
- public void SaveData(List players, List games, List maps, List bestScores)
+ public void SaveData(ObservableCollection players, ObservableCollection games, ObservableCollection maps, ObservableCollection bestScores)
{
+ Debug.WriteLine("Saving data at " + Path.Combine(FilePath, FileName));
if (!Directory.Exists(FilePath))
{
Debug.WriteLine("Directory created");
diff --git a/source/Trek-12/DataContractPersistence/DataContractXml.cs b/source/Trek-12/DataContractPersistence/DataContractXml.cs
index e09489d..8255ecc 100644
--- a/source/Trek-12/DataContractPersistence/DataContractXml.cs
+++ b/source/Trek-12/DataContractPersistence/DataContractXml.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
@@ -23,13 +24,13 @@ namespace DataContractPersistence
///
/// Path (relative to the project)
///
- public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
+ public string FilePath { get; set; } = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Trek_12");
///
/// Load all the data from XML file
///
/// A tuple with the lists of players, games, maps and best scores
- public (List, List, List, List) LoadData()
+ public (ObservableCollection, ObservableCollection, ObservableCollection, ObservableCollection) LoadData()
{
var serializer = new DataContractSerializer(typeof(DataToPersist));
DataToPersist? data = new DataToPersist();
@@ -49,7 +50,7 @@ namespace DataContractPersistence
///
///
///
- public void SaveData(List players, List games, List maps, List bestScores)
+ public void SaveData(ObservableCollection players, ObservableCollection games, ObservableCollection maps, ObservableCollection bestScores)
{
if(!Directory.Exists(FilePath))
{
diff --git a/source/Trek-12/DataContractPersistence/DataToPersist.cs b/source/Trek-12/DataContractPersistence/DataToPersist.cs
index 8aca714..b78b204 100644
--- a/source/Trek-12/DataContractPersistence/DataToPersist.cs
+++ b/source/Trek-12/DataContractPersistence/DataToPersist.cs
@@ -8,21 +8,21 @@ namespace DataContractPersistence
///
/// List of players
///
- public List Players { get; set; }
+ public ObservableCollection Players { get; set; }
///
/// List of games (with all the data in it to be able to recreate the game)
///
- public List Games { get; set; }
+ public ObservableCollection Games { get; set; }
///
/// List of maps with their boards
///
- public List Maps { get; set; }
+ public ObservableCollection Maps { get; set; }
///
/// List of best scores
///
- public List BestScores { get; set; }
+ public ObservableCollection BestScores { get; set; }
}
}
\ No newline at end of file
diff --git a/source/Trek-12/Models/Game/Base64Converter.cs b/source/Trek-12/Models/Game/Base64Converter.cs
index ea11bce..9d535d9 100644
--- a/source/Trek-12/Models/Game/Base64Converter.cs
+++ b/source/Trek-12/Models/Game/Base64Converter.cs
@@ -1,4 +1,5 @@
using System;
+using Microsoft.Maui.Controls;
using Models.Interfaces;
namespace Models.Game
@@ -25,5 +26,16 @@ namespace Models.Game
byte[] imageBytes = File.ReadAllBytes(imagePath);
return Convert.ToBase64String(imageBytes);
}
+
+ ///
+ /// Retrieve an image from a string encoded in base64
+ ///
+ ///
+ ///
+ public ImageSource RetrieveImage(string imageString)
+ {
+ byte[] imageBytes = Convert.FromBase64String(imageString);
+ return ImageSource.FromStream(() => new MemoryStream(imageBytes));
+ }
}
}
diff --git a/source/Trek-12/Models/Game/Game.cs b/source/Trek-12/Models/Game/Game.cs
index e80f6bc..9be37a2 100644
--- a/source/Trek-12/Models/Game/Game.cs
+++ b/source/Trek-12/Models/Game/Game.cs
@@ -1,7 +1,10 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.Linq;
+using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
@@ -16,16 +19,59 @@ namespace Models.Game
/// The Game class represents a game session in the application.
/// It contains all the necessary properties and methods to manage a game, including the game loop, dice rolling, and use of the game rules.
///
- public class Game
+ public class Game : INotifyPropertyChanged
{
/* Persistence */
public IPersistence PersistenceManager { get; set; }
/* List for the game and persistence */
- public List Players { get; set; }
- public List Games { get; set; }
- public List Maps { get; set; }
- public List BestScores { get; set; }
+ private ObservableCollection _players;
+
+ public ObservableCollection Players
+ {
+ get => _players;
+ set
+ {
+ _players = value;
+ OnPropertyChanged(nameof(Players));
+ }
+ }
+
+ private ObservableCollection _games;
+
+ public ObservableCollection Games
+ {
+ get => _games;
+ set
+ {
+ _games = value;
+ OnPropertyChanged(nameof(Games));
+ }
+ }
+
+ private ObservableCollection _maps;
+
+ public ObservableCollection Maps
+ {
+ get => _maps;
+ set
+ {
+ _maps = value;
+ OnPropertyChanged(nameof(Maps));
+ }
+ }
+
+ private ObservableCollection _bestScores;
+
+ public ObservableCollection BestScores
+ {
+ get => _bestScores;
+ set
+ {
+ _bestScores = value;
+ OnPropertyChanged(nameof(BestScores));
+ }
+ }
private bool _isRunning;
public bool IsRunning
@@ -74,6 +120,17 @@ namespace Models.Game
BestScores.Add(bestScore);
}
+ public bool RemovePlayer(string playerName)
+ {
+ Player player = Players.FirstOrDefault(p => p.Pseudo == playerName);
+ if (player == null)
+ {
+ return false;
+ }
+ Players.Remove(player);
+ return true;
+ }
+
public void LoadData()
{
var data = PersistenceManager.LoadData();
@@ -101,10 +158,10 @@ namespace Models.Game
{
PersistenceManager = persistenceManager;
- Players = new List();
- Games = new List();
- Maps = new List();
- BestScores = new List();
+ Players = new ObservableCollection();
+ Games = new ObservableCollection();
+ Maps = new ObservableCollection();
+ BestScores = new ObservableCollection();
GameRules = new Rules.Rules();
@@ -113,8 +170,10 @@ namespace Models.Game
public Game()
{
- UsedMap = new Map("Map1");
- BestScores = new List();
+ Players = new ObservableCollection();
+ Games = new ObservableCollection();
+ Maps = new ObservableCollection();
+ BestScores = new ObservableCollection();
GameRules = new Rules.Rules();
@@ -351,5 +410,19 @@ namespace Models.Game
return true;
//BoardUpdated?.Invoke(this, EventArgs.Empty);
}
+
+ ///
+ /// Event raised when a property is changed to notify the view.
+ ///
+ public event PropertyChangedEventHandler? PropertyChanged;
+
+ ///
+ /// Trigger the PropertyChanged event for a specific property.
+ ///
+ /// Name of the property that changed.
+ public virtual void OnPropertyChanged(string propertyName)
+ {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
}
}
diff --git a/source/Trek-12/Models/Game/OperationCell.cs b/source/Trek-12/Models/Game/OperationCell.cs
index 459f325..25ebbb1 100644
--- a/source/Trek-12/Models/Game/OperationCell.cs
+++ b/source/Trek-12/Models/Game/OperationCell.cs
@@ -7,20 +7,10 @@ namespace Models.Game
///
public class OperationCell : Position
{
-
- private bool isChecked;
///
/// It tells if the operation is checked or not in the operation grid of the game.
///
- public bool IsChecked
- {
- get => isChecked;
- private set
- {
- isChecked = value;
- OnPropertyChanged(nameof(IsChecked));
- }
- }
+ public bool IsChecked { get; private set; }
///
/// Constructor of the OperationCell class.
diff --git a/source/Trek-12/Models/Game/Player.cs b/source/Trek-12/Models/Game/Player.cs
index 97940d4..791a056 100644
--- a/source/Trek-12/Models/Game/Player.cs
+++ b/source/Trek-12/Models/Game/Player.cs
@@ -1,5 +1,6 @@
using System.ComponentModel;
using System.Runtime.CompilerServices;
+using System.Runtime.Serialization;
namespace Models.Game
{
@@ -7,19 +8,14 @@ namespace Models.Game
///
/// Represents a player in the game.
///
- public class Player : INotifyPropertyChanged
+ [DataContract]
+ public class Player
{
-
- public event PropertyChangedEventHandler? PropertyChanged;
-
- void OnPropertyChanged([CallerMemberName] string propertyName = null)
- => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
-
-
///
/// It is he pseudo of the player.
///
private string _pseudo;
+ [DataMember]
public string Pseudo
{
get => _pseudo;
@@ -28,24 +24,25 @@ namespace Models.Game
if (_pseudo == value)
return;
_pseudo = value;
- OnPropertyChanged();
}
}
- private int hairCount;
///
/// It is the profile picture of the player.
///
+ [DataMember]
public string ProfilePicture { get; private set; }
///
/// It is the creation date of the player.
///
+ [DataMember]
public string? CreationDate { get; private set; }
///
/// It tells when was the last time the player played.
///
+ [DataMember]
public string? LastPlayed { get; private set; }
///
@@ -54,7 +51,8 @@ namespace Models.Game
public Player()
{
Pseudo = "Player";
- ProfilePicture = "DefaultProfilePicture";
+ ProfilePicture = "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";
+ CreationDate = DateTime.Now.ToString("dd/MM/yyyy");
}
///
@@ -62,10 +60,11 @@ namespace Models.Game
///
/// The pseudo of the player.
/// The profile picture of the player.
- public Player(string pseudo, string profilePicture = "DefaultProfilePicture")
+ public Player(string pseudo, string profilePicture = "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")
{
Pseudo = pseudo;
ProfilePicture = profilePicture;
+ CreationDate = DateTime.Now.ToString("dd/MM/yyyy");
}
diff --git a/source/Trek-12/Models/Game/Position.cs b/source/Trek-12/Models/Game/Position.cs
index d34ece5..980e80c 100644
--- a/source/Trek-12/Models/Game/Position.cs
+++ b/source/Trek-12/Models/Game/Position.cs
@@ -7,7 +7,7 @@ namespace Models.Game
///
/// The Position (x,y) of a cell in the game.
///
- public class Position : INotifyPropertyChanged
+ public class Position
{
///
/// The X coordinate.
@@ -29,19 +29,5 @@ namespace Models.Game
X = x;
Y = y;
}
-
- ///
- /// Event raised when a property is changed to notify the view.
- ///
- public event PropertyChangedEventHandler PropertyChanged;
-
- ///
- /// Trigger the PropertyChanged event for a specific property.
- ///
- /// Name of the property that changed.
- protected virtual void OnPropertyChanged(string propertyName)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
}
}
\ No newline at end of file
diff --git a/source/Trek-12/Models/Interfaces/IImageConverter.cs b/source/Trek-12/Models/Interfaces/IImageConverter.cs
index ec5f783..8d02931 100644
--- a/source/Trek-12/Models/Interfaces/IImageConverter.cs
+++ b/source/Trek-12/Models/Interfaces/IImageConverter.cs
@@ -1,4 +1,6 @@
-namespace Models.Interfaces
+using Microsoft.Maui.Controls;
+
+namespace Models.Interfaces
{
///
/// Interface for image converters
@@ -11,5 +13,12 @@
///
///
string ConvertImage(string imagePath);
+
+ ///
+ /// Retrieve an image from a string encoded
+ ///
+ ///
+ ///
+ ImageSource RetrieveImage(string imageString);
}
}
diff --git a/source/Trek-12/Models/Interfaces/IPersistence.cs b/source/Trek-12/Models/Interfaces/IPersistence.cs
index aada33b..fa0a645 100644
--- a/source/Trek-12/Models/Interfaces/IPersistence.cs
+++ b/source/Trek-12/Models/Interfaces/IPersistence.cs
@@ -1,11 +1,12 @@
using Models.Game;
+using System.Collections.ObjectModel;
namespace Models.Interfaces
{
public interface IPersistence
{
- (List, List, List, List) LoadData();
+ (ObservableCollection, ObservableCollection, ObservableCollection, ObservableCollection) LoadData();
- void SaveData(List players, List games, List maps, List bestScores);
+ void SaveData(ObservableCollection players, ObservableCollection games, ObservableCollection maps, ObservableCollection bestScores);
}
}
\ No newline at end of file
diff --git a/source/Trek-12/Models/Models.csproj b/source/Trek-12/Models/Models.csproj
index 072e39c..cb4e0e3 100644
--- a/source/Trek-12/Models/Models.csproj
+++ b/source/Trek-12/Models/Models.csproj
@@ -8,6 +8,13 @@
+
+
+
+
+
+
+
diff --git a/source/Trek-12/Trek-12/App.xaml.cs b/source/Trek-12/Trek-12/App.xaml.cs
index 35a7a0c..2265b67 100644
--- a/source/Trek-12/Trek-12/App.xaml.cs
+++ b/source/Trek-12/Trek-12/App.xaml.cs
@@ -1,28 +1,58 @@
-using DataContractPersistence;
+using System.Diagnostics;
+using System.Runtime.Serialization.DataContracts;
+using DataContractPersistence;
using Models.Game;
+using Models.Interfaces;
namespace Trek_12
{
public partial class App : Application
{
public string FileName { get; set; } = "data.json";
-
- public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
+
+ public string FilePath { get; set; } = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Trek_12");
public Game Manager { get; private set; }
-
+
public App()
{
InitializeComponent();
-
- if(File.Exists(Path.Combine(FilePath, FileName)))
+
+ Manager = new Game(new DataContractJson());
+
+ if (!Directory.Exists(FilePath))
+ {
+ Directory.CreateDirectory(FilePath);
+ }
+
+ //File.Delete(Path.Combine(FilePath, FileName));
+
+ string fullPath = Path.Combine(FilePath, FileName);
+ if (File.Exists(fullPath))
{
- Manager = new Game(new DataContractJson());
+ Debug.WriteLine("Data loaded from " + fullPath);
+ Manager.LoadData();
}
-
- Manager.LoadData();
+
MainPage = new AppShell();
+
+ // If the MainPage is closed, we save the data
+ MainPage.Disappearing += (sender, e) =>
+ {
+ Debug.WriteLine("Saving data...");
+ Manager.SaveData();
+ };
+
+ }
+
+ ///
+ /// Save the data when the app is in background
+ ///
+ protected override void OnSleep()
+ {
+ Debug.WriteLine("Zzz Secure save...");
+ Manager.SaveData();
}
}
}
diff --git a/source/Trek-12/Trek-12/AppShell.xaml.cs b/source/Trek-12/Trek-12/AppShell.xaml.cs
index ad8d368..529cbe9 100644
--- a/source/Trek-12/Trek-12/AppShell.xaml.cs
+++ b/source/Trek-12/Trek-12/AppShell.xaml.cs
@@ -1,10 +1,21 @@
-namespace Trek_12
+using Trek_12.Views;
+
+namespace Trek_12
{
+ ///
+ /// Class for the route of the views and the navigation of the app.
+ ///
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
+
+ Routing.RegisterRoute(nameof(PageMenuPrincipal), typeof(PageMenuPrincipal));
+ Routing.RegisterRoute(nameof(PageProfils), typeof(PageProfils));
+ Routing.RegisterRoute(nameof(PageSelectMap), typeof(PageSelectMap));
+ Routing.RegisterRoute(nameof(PageRegles), typeof(PageRegles));
+ Routing.RegisterRoute(nameof(PageLeaderBoard), typeof(PageLeaderBoard));
}
}
}
diff --git a/source/Trek-12/Trek-12/Views/Components/viewsProfils.xaml.cs b/source/Trek-12/Trek-12/Views/Components/viewsProfils.xaml.cs
index a203e56..19239e0 100644
--- a/source/Trek-12/Trek-12/Views/Components/viewsProfils.xaml.cs
+++ b/source/Trek-12/Trek-12/Views/Components/viewsProfils.xaml.cs
@@ -1,7 +1,12 @@
+using Models.Game;
+using Models.Interfaces;
+
namespace Trek_12.Views.Components;
public partial class viewsProfils : ContentView
{
+ private IImageConverter converter { get; } = new Base64Converter();
+
public viewsProfils()
{
InitializeComponent();
@@ -18,11 +23,11 @@ public partial class viewsProfils : ContentView
public static readonly BindableProperty ProfilePictureProperty =
- BindableProperty.Create("ProfilePicture", typeof(string), typeof(ContentLeaderBoard), "profile.jpg");
+ BindableProperty.Create("ProfilePicture", typeof(string), typeof(ContentLeaderBoard), "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");
- public string ProfilePicture
+ public ImageSource ProfilePicture
{
- get => (string)GetValue(ProfilePictureProperty);
+ get => converter.RetrieveImage((string)GetValue(ProfilePictureProperty));
set => SetValue(ProfilePictureProperty, value);
}
}
\ No newline at end of file
diff --git a/source/Trek-12/Trek-12/Views/pageProfils.xaml b/source/Trek-12/Trek-12/Views/pageProfils.xaml
index ac1720c..6f33a7e 100644
--- a/source/Trek-12/Trek-12/Views/pageProfils.xaml
+++ b/source/Trek-12/Trek-12/Views/pageProfils.xaml
@@ -3,8 +3,15 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Trek_12.Views.PageProfils"
xmlns:views="clr-namespace:Trek_12.Views.Components"
+ xmlns:game="clr-namespace:Models.Game;assembly=Models"
Title="pageProfils">
+
+
+
+
+
+
@@ -14,7 +21,7 @@
-
diff --git a/source/Trek-12/Trek-12/Views/pageProfils.xaml.cs b/source/Trek-12/Trek-12/Views/pageProfils.xaml.cs
index 9047a40..749144a 100644
--- a/source/Trek-12/Trek-12/Views/pageProfils.xaml.cs
+++ b/source/Trek-12/Trek-12/Views/pageProfils.xaml.cs
@@ -1,46 +1,68 @@
-namespace Trek_12.Views;
+using Models.Game;
using Stub;
using System.Diagnostics;
using CommunityToolkit.Maui.Alerts;
using CommunityToolkit.Maui.Core;
+using Models.Interfaces;
+
+namespace Trek_12.Views;
public partial class PageProfils : ContentPage
{
- public Stub MyStub { get; set; } = new Stub();
+ public Game ProfileManager => (App.Current as App).Manager;
public PageProfils()
{
InitializeComponent();
- BindingContext = MyStub;
+ BindingContext = ProfileManager;
}
async void Button_ClickedAdd(System.Object sender, System.EventArgs e)
{
- string result = await DisplayPromptAsync("Info", $"Choose a name : ", "Ok");
- Debug.WriteLine("Answer: " + result);
- if (result != null)
- {
- Debug.WriteLine("bam, added");
- MyStub.Add(result, "profile.jpg");
- }
- }
+ string pseudo = await DisplayPromptAsync("Info", $"Choose a name : ", "Ok");
+ if (pseudo == null) return;
+
+ var profilePicture = await MediaPicker.PickPhotoAsync();
+ if (profilePicture == null) return;
+
+ IImageConverter converter = new Base64Converter();
+ string convertedProfilePicture = converter.ConvertImage(profilePicture.FullPath);
+
+ Player player = new Player(pseudo, convertedProfilePicture);
+ ProfileManager.AddPlayer(player);
+ Debug.WriteLine("Player " + pseudo + " added with profile picture " + convertedProfilePicture);
+ Debug.WriteLine("It's the number" + ProfileManager.Players.Count + " player");
+
+ ProfileManager.OnPropertyChanged(nameof(ProfileManager.Players));
+ ProfileManager.SaveData();
+ }
async void Button_ClickedPop(System.Object sender, System.EventArgs e)
{
- string result = await DisplayPromptAsync("Info", $"Choose a name to delete : ", "Ok");
+ if (ProfileManager.Players.Count == 0)
+ {
+ await DisplayAlert("Info", "There is no player actually\nPlease add one", "Ok");
+ return;
+ }
+
+ string result = await DisplayPromptAsync("Info", $"Choose a pseudo to delete : ", "Ok");
+ if (result == null) return;
Debug.WriteLine("Answer: " + result);
- if (result != null)
+ if (ProfileManager.RemovePlayer(result))
{
Debug.WriteLine("bam, deleted");
- MyStub.Pop(result, "profile.jpg");
+ OnPropertyChanged(nameof(ProfileManager));
}
- else Debug.WriteLine("Pseudo not found");
+ else Debug.WriteLine("Player not found");
+
}
async void Button_ClickedModify(System.Object sender, System.EventArgs e)
{
+ throw new NotImplementedException();
+ /*
string result = await DisplayPromptAsync("Info", $"Choose a name to modify : ", "Ok");
Debug.WriteLine("Answer: " + result);
if (result != null)
@@ -60,7 +82,7 @@ public partial class PageProfils : ContentPage
}
}
else Debug.WriteLine("Did not found");
+ */
}
-
}