Feat : On embellit le code
continuous-integration/drone/push Build is passing Details

Popup_qui_marche_pas
Jade VAN BRABANDT 2 years ago
parent ea2ce0a119
commit d0f53562e9

@ -17,10 +17,10 @@ namespace StimPersistance
Directory.SetCurrentDirectory(chemin); Directory.SetCurrentDirectory(chemin);
} }
public void SaveGame(ObservableCollection<Game> games) public void SaveGame(List<Game> games)
{ {
XmlWriterSettings settings = new() { Indent = true }; XmlWriterSettings settings = new() { Indent = true };
DataContractSerializer serializer = new(typeof(ObservableCollection<Game>)); DataContractSerializer serializer = new(typeof(List<Game>));
using (TextWriter tw = File.CreateText("games.xml")) using (TextWriter tw = File.CreateText("games.xml"))
using (XmlWriter writer = XmlWriter.Create(tw, settings)) serializer.WriteObject(writer, games); using (XmlWriter writer = XmlWriter.Create(tw, settings)) serializer.WriteObject(writer, games);
@ -35,12 +35,12 @@ namespace StimPersistance
using (XmlWriter writer = XmlWriter.Create(tw, settings)) serializer.WriteObject(writer, users); using (XmlWriter writer = XmlWriter.Create(tw, settings)) serializer.WriteObject(writer, users);
} }
public ObservableCollection<Game> LoadGame() public List<Game> LoadGame()
{ {
if (File.Exists("games.xml")) if (File.Exists("games.xml"))
{ {
DataContractSerializer serializer = new(typeof(ObservableCollection<Game>)); DataContractSerializer serializer = new(typeof(List<Game>));
using (Stream stream = File.OpenRead("games.xml")) return serializer.ReadObject(stream) as ObservableCollection<Game> ?? new(); using (Stream stream = File.OpenRead("games.xml")) return serializer.ReadObject(stream) as List<Game> ?? new();
} }
return new(); return new();
} }

@ -4,9 +4,9 @@ namespace Model
{ {
public interface IPersistance public interface IPersistance
{ {
public void SaveGame(ObservableCollection<Game> games); public void SaveGame(List<Game> games);
public void SaveUser(HashSet<User> users); public void SaveUser(HashSet<User> users);
public ObservableCollection<Game> LoadGame(); public List<Game> LoadGame();
public HashSet<User> LoadUser(); public HashSet<User> LoadUser();
} }

@ -11,14 +11,7 @@ namespace Model
set { mgrpersistance = value; } set { mgrpersistance = value; }
} }
private IPersistance mgrpersistance; private IPersistance mgrpersistance;
public ObservableCollection<Game> GameList { get; set; } public List<Game> GameList { get; set; }
// dégage ça
// fait une méthode qui te renvoie une liste filtrer avec les params (genre ton nom :D)
// Quand t'ajoute peut être que dasn un certains monde
// il y aura pas le pb car c'est le retour d'une collection Obs
// donc potentiellement si les astres sont alignés ça devrait la mettre à jour
public ObservableCollection<Game> ResearchedGame { get; set; }
public Game? SelectedGame { get; set; } public Game? SelectedGame { get; set; }
public User? CurrentUser { get; set; } public User? CurrentUser { get; set; }
public HashSet<User> Users { get; set; } public HashSet<User> Users { get; set; }
@ -27,7 +20,6 @@ namespace Model
{ {
Mgrpersistance = persistance; Mgrpersistance = persistance;
GameList = persistance.LoadGame(); GameList = persistance.LoadGame();
ResearchedGame = persistance.LoadGame();
Users = persistance.LoadUser(); Users = persistance.LoadUser();
} }
@ -39,10 +31,10 @@ namespace Model
.Where(game => game.Name.IndexOf(filterName, StringComparison.OrdinalIgnoreCase) >= 0 .Where(game => game.Name.IndexOf(filterName, StringComparison.OrdinalIgnoreCase) >= 0
); );
if (filterTag1 != null) retList = retList if (filterTag1 != null) retList = retList
.Where(game => game.Tags.Any(tag => tag.IndexOf(filterTag1, StringComparison.OrdinalIgnoreCase) >= 0) .Where(game => game.Tags != null && game.Tags.Any(tag => tag != null && tag.IndexOf(filterTag1, StringComparison.OrdinalIgnoreCase) >= 0)
); );
if (filterTag2 != null) retList = retList if (filterTag2 != null) retList = retList
.Where(game => game.Tags.Any(tag => tag.IndexOf(filterTag2, StringComparison.OrdinalIgnoreCase) >= 0) .Where(game => game.Tags != null && game.Tags.Any(tag => tag != null && tag.IndexOf(filterTag2, StringComparison.OrdinalIgnoreCase) >= 0)
); );
return retList; return retList;
} }

@ -16,20 +16,20 @@ public partial class Create : ContentPage
{ {
if (((App)App.Current).Manager.SearchUser(Username.Text) == null) if (((App)App.Current).Manager.SearchUser(Username.Text) == null)
{ {
Regex rg = new Regex("^(?=.*[A-Za-z])(?=.*[0-9@$!%*#?&])[A-Za-z-0-9@$!%*#?&]{8,}$"); Regex rg = new Regex("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$");
if (rg.IsMatch(Pswd.Text)) if (rg.IsMatch(Email.Text))
{ {
((App)App.Current).Manager.AddUsertoUserList(new("", Username.Text, "", Email.Text, Pswd.Text)); rg = new Regex("^(?=.*[A-Za-z])(?=.*[0-9@$!%*#?&])[A-Za-z-0-9@$!%*#?&]{8,}$");
((App)App.Current).Manager.CurrentUser = ((App)App.Current).Manager.SearchUser(Username.Text); if (rg.IsMatch(Pswd.Text))
Application.Current.MainPage = new AppShell(); {
await Shell.Current.GoToAsync("//MainPage"); ((App)App.Current).Manager.AddUsertoUserList(new("", Username.Text, "", Email.Text, Pswd.Text));
((App)App.Current).Manager.CurrentUser = ((App)App.Current).Manager.SearchUser(Username.Text);
Application.Current.MainPage = new AppShell();
await Shell.Current.GoToAsync("//MainPage");
}
else Error.Children.Add(new Label { Text = "Mot de passe invalide, votre mot de passe doit contenir une Majuscule, une minuscule, un chiffre et faire au moins 8 caractères", TextColor = Colors.Red, VerticalTextAlignment = TextAlignment.Start });
} }
else Error.Children.Add(new Label { Text = "Mot de passe invalide, votre mot de passe doit contenir une Majuscule, une minuscule, un chiffre et faire au moins 8 caractères", TextColor = Colors.Red, VerticalTextAlignment = TextAlignment.Start }); else Error.Children.Add(new Label { Text = "Email invalide", TextColor = Colors.Red, VerticalTextAlignment = TextAlignment.Start });
rg = new Regex("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$");
/*if ( rg.IsMatch )
{
}*/
} }
else Error.Children.Add(new Label { Text = "Ce nom d'utilisateur est déjà pris", TextColor = Colors.Red, VerticalTextAlignment = TextAlignment.Start }); else Error.Children.Add(new Label { Text = "Ce nom d'utilisateur est déjà pris", TextColor = Colors.Red, VerticalTextAlignment = TextAlignment.Start });
} }

@ -7,21 +7,21 @@ namespace StimStub
[ExcludeFromCodeCoverage] [ExcludeFromCodeCoverage]
public class Stub : IPersistance public class Stub : IPersistance
{ {
public ObservableCollection<Game> Games = new(); public List<Game> Games = new();
public Stub() public Stub()
{ {
Games = LoadGame(); Games = LoadGame();
} }
public void SaveGame(ObservableCollection<Game> games) public void SaveGame(List<Game> games)
{ {
foreach (Game game in games) if (!Games.Contains(game)) Games.Add(game); foreach (Game game in games) if (!Games.Contains(game)) Games.Add(game);
} }
public ObservableCollection<Game> LoadGame() public List<Game> LoadGame()
{ {
ObservableCollection<Game> tmp = new(); List<Game> tmp = new();
tmp.Add(new("Elden Ring", "Elden Ring est un jeu de rôle d'action de 2022 qui a été développé par FromSoftware, publié par Bandai Namco Entertainment et réalisé par Hidetaka Miyazaki avec la construction du monde fournie par l'écrivain fantastique George R. R. Martin. Il est sorti sur PlayStation 4, PlayStation 5, Microsoft Windows, Xbox One et Xbox Series X / S le 25 février. Les joueurs contrôlent un personnage de joueur personnalisable qui est en quête de réparer l'Elden Ring et de devenir le nouveau Elden Lord.\r\n\r\nElden Ring est présenté à travers une perspective à la troisième personne; les joueurs parcourent librement son monde ouvert interactif. Les six zones principales sont traversées en utilisant le coursier Torrent du personnage du joueur comme principal mode de déplacement. Des donjons cachés linéaires peuvent être explorés pour trouver des objets utiles. Les joueurs peuvent utiliser plusieurs types d'armes et de sorts magiques, y compris l'engagement non direct activé par la mécanique furtive. Partout dans le monde du jeu, les points de contrôle permettent des déplacements rapides et permettent aux joueurs d'améliorer leurs attributs en utilisant une monnaie du jeu appelée Runes. Elden Ring propose un mode multijoueur en ligne dans lequel les joueurs peuvent se rejoindre pour des combats coopératifs et joueur contre joueur.\r\n\r\nLors de la planification, FromSoftware voulait créer un jeu en monde ouvert avec un gameplay similaire à Dark Souls ; la société voulait qu'Elden Ring agisse comme une évolution du premier titre éponyme de la série. Miyazaki admirait le travail de Martin, dont il espérait que les contributions produiraient un récit plus accessible que ceux des jeux précédents de la société. Martin a eu la liberté illimitée de concevoir la trame de fond tandis que Miyazaki était l'auteur principal du récit du jeu. Les développeurs se sont concentrés sur l'échelle environnementale, le jeu de rôle et l'histoire ; l'échelle a nécessité la construction de plusieurs structures à l'intérieur du monde ouvert.\r\n\r\nElden Ring a été acclamé par la critique; les critiques ont loué son monde ouvert, ses systèmes de jeu et son cadre, mais certains ont critiqué ses performances techniques. Il a remporté plusieurs prix du jeu de l'année et s'est vendu à plus de 20 millions d'exemplaires en un an. Une extension appelée Shadow of the Erdtree a été annoncée en février 2023.", 2022, new List<string> { "Action", "Solo", "RPG" }, "elden_ring.jpg", "https://www.instant-gaming.com/fr/4824-acheter-elden-ring-pc-jeu-steam-europe/")); tmp.Add(new("Elden Ring", "Elden Ring est un jeu de rôle d'action de 2022 qui a été développé par FromSoftware, publié par Bandai Namco Entertainment et réalisé par Hidetaka Miyazaki avec la construction du monde fournie par l'écrivain fantastique George R. R. Martin. Il est sorti sur PlayStation 4, PlayStation 5, Microsoft Windows, Xbox One et Xbox Series X / S le 25 février. Les joueurs contrôlent un personnage de joueur personnalisable qui est en quête de réparer l'Elden Ring et de devenir le nouveau Elden Lord.\r\n\r\nElden Ring est présenté à travers une perspective à la troisième personne; les joueurs parcourent librement son monde ouvert interactif. Les six zones principales sont traversées en utilisant le coursier Torrent du personnage du joueur comme principal mode de déplacement. Des donjons cachés linéaires peuvent être explorés pour trouver des objets utiles. Les joueurs peuvent utiliser plusieurs types d'armes et de sorts magiques, y compris l'engagement non direct activé par la mécanique furtive. Partout dans le monde du jeu, les points de contrôle permettent des déplacements rapides et permettent aux joueurs d'améliorer leurs attributs en utilisant une monnaie du jeu appelée Runes. Elden Ring propose un mode multijoueur en ligne dans lequel les joueurs peuvent se rejoindre pour des combats coopératifs et joueur contre joueur.\r\n\r\nLors de la planification, FromSoftware voulait créer un jeu en monde ouvert avec un gameplay similaire à Dark Souls ; la société voulait qu'Elden Ring agisse comme une évolution du premier titre éponyme de la série. Miyazaki admirait le travail de Martin, dont il espérait que les contributions produiraient un récit plus accessible que ceux des jeux précédents de la société. Martin a eu la liberté illimitée de concevoir la trame de fond tandis que Miyazaki était l'auteur principal du récit du jeu. Les développeurs se sont concentrés sur l'échelle environnementale, le jeu de rôle et l'histoire ; l'échelle a nécessité la construction de plusieurs structures à l'intérieur du monde ouvert.\r\n\r\nElden Ring a été acclamé par la critique; les critiques ont loué son monde ouvert, ses systèmes de jeu et son cadre, mais certains ont critiqué ses performances techniques. Il a remporté plusieurs prix du jeu de l'année et s'est vendu à plus de 20 millions d'exemplaires en un an. Une extension appelée Shadow of the Erdtree a été annoncée en février 2023.", 2022, new List<string> { "Action", "Solo", "RPG" }, "elden_ring.jpg", "https://www.instant-gaming.com/fr/4824-acheter-elden-ring-pc-jeu-steam-europe/"));
tmp[0].AddReview(new("User 1", 5, "C'est trop bien")); tmp[0].AddReview(new("User 1", 5, "C'est trop bien"));

Loading…
Cancel
Save