Popup_qui_marche_pas
BelsethUwU 2 years ago
commit a2af4253bc

@ -2,26 +2,26 @@
using StimStub; using StimStub;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
Console.WriteLine("Hello World");
//ObservableCollection<Game> games = new ObservableCollection<Game>(); //ObservableCollection<Game> games = new ObservableCollection<Game>();
//games.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")); //games.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"));
//games[0].AddReview(new(5, "C'est trop bien")); //games[0].AddReview(new("User 1", 5, "C'est trop bien"));
//games[0].AddReview(new(3.5f, "C'est bien")); //games[0].AddReview(new("User 2", 3.5f, "C'est bien"));
//games[0].AddReview(new(1.5f, "C'est pas bien")); //games[0].AddReview(new("User 3", 1.5f, "C'est pas bien"));
//games.Add(new("Minecraft", "Minecraft est un jeu vidéo de type aventure « bac à sable » (construction complètement libre) développé par le Suédois Markus Persson, alias Notch, puis par la société Mojang Studios. Il s'agit d'un univers composé de voxels et généré de façon procédurale, qui intègre un système d'artisanat axé sur l'exploitation puis la transformation de ressources naturelles (minéralogiques, fossiles, animales et végétales).\r\n\r\nMinecraft est à l'origine développé pour être un jeu sur navigateur Web, puis sur Windows, Mac et Linux (à l'aide de Java). Un portage sur téléphone mobile existe également, Minecraft Bedrock Édition, sortie sur les smartphones Android, sur les terminaux iOS, les appareils Windows Phone et est disponible sur Windows 10. Une version pour Xbox 360 est sortie le 9 mai 2012, développée par 4J Studios. Une version PlayStation 3 développée par Mojang est disponible depuis le 18 décembre 2013. La version PS4 est sortie le 4 septembre 2014 sur le PlayStation Store, la version Xbox One est publiée le lendemain tandis que la version Wii U est disponible en téléchargement sur le Nintendo eShop depuis le 17 décembre 2015 et en version physique depuis le 30 juin 2016. La version Nintendo Switch est sortie le 12 mai 2017 et la version pour New Nintendo 3DS le 14 septembre 2017.\r\n\r\nLa Minecon, un congrès en l'honneur de Minecraft, célèbre la sortie officielle du jeu le 18 novembre 2011. Disponible en 139 langues, le jeu vidéo est également décliné sous plusieurs formes physiques: papercraft (origami), produits dérivés (figurines, vêtements, peluches, etc.) et boîtes de jeu Lego.\r\n\r\nEn mai 2020, Minecraft a passé la barre des 200 millions d'exemplaires vendus sur toutes les plateformes, ce qui en fait à la fois le jeu vidéo le plus vendu de tous les temps et la septième franchise la plus vendue de tous les temps, avec une communauté de 126 millions de joueurs actifs par mois en mai 2020.", 2011, new List<string> { "Aventure", "Multijoueur", "Bac à sable" }, "minecraft.jpeg")); //games.Add(new("Minecraft", "Minecraft est un jeu vidéo de type aventure « bac à sable » (construction complètement libre) développé par le Suédois Markus Persson, alias Notch, puis par la société Mojang Studios. Il s'agit d'un univers composé de voxels et généré de façon procédurale, qui intègre un système d'artisanat axé sur l'exploitation puis la transformation de ressources naturelles (minéralogiques, fossiles, animales et végétales).\r\n\r\nMinecraft est à l'origine développé pour être un jeu sur navigateur Web, puis sur Windows, Mac et Linux (à l'aide de Java). Un portage sur téléphone mobile existe également, Minecraft Bedrock Édition, sortie sur les smartphones Android, sur les terminaux iOS, les appareils Windows Phone et est disponible sur Windows 10. Une version pour Xbox 360 est sortie le 9 mai 2012, développée par 4J Studios. Une version PlayStation 3 développée par Mojang est disponible depuis le 18 décembre 2013. La version PS4 est sortie le 4 septembre 2014 sur le PlayStation Store, la version Xbox One est publiée le lendemain tandis que la version Wii U est disponible en téléchargement sur le Nintendo eShop depuis le 17 décembre 2015 et en version physique depuis le 30 juin 2016. La version Nintendo Switch est sortie le 12 mai 2017 et la version pour New Nintendo 3DS le 14 septembre 2017.\r\n\r\nLa Minecon, un congrès en l'honneur de Minecraft, célèbre la sortie officielle du jeu le 18 novembre 2011. Disponible en 139 langues, le jeu vidéo est également décliné sous plusieurs formes physiques: papercraft (origami), produits dérivés (figurines, vêtements, peluches, etc.) et boîtes de jeu Lego.\r\n\r\nEn mai 2020, Minecraft a passé la barre des 200 millions d'exemplaires vendus sur toutes les plateformes, ce qui en fait à la fois le jeu vidéo le plus vendu de tous les temps et la septième franchise la plus vendue de tous les temps, avec une communauté de 126 millions de joueurs actifs par mois en mai 2020.", 2011, new List<string> { "Aventure", "Multijoueur", "Bac à sable" }, "minecraft.jpeg"));
//games[1].AddReview(new(5, "C'est trop bien")); //games[1].AddReview(new("User 1", 5, "C'est trop bien"));
//games[1].AddReview(new(3.5f, "C'est bien")); //games[1].AddReview(new("User 2", 3.5f, "C'est bien"));
//games[1].AddReview(new(1.5f, "C'est pas bien")); //games[1].AddReview(new("User 3", 1.5f, "C'est pas bien"));
//games.Add(new("Celeste", "Celeste est un jeu vidéo de plateforme indépendant en deux dimensions développé et édité par Extremely OK Gamesa, un studio canadien dirigé par Maddy Thorson et Noel Berry. Issu d'un prototype éponyme développé en août 2015 lors d'une game jam sur la fantasy console PICO-8, il est finalement publié sur Microsoft Windows, macOS, Linux, PlayStation 4, Nintendo Switch et Xbox One le 25 janvier 2018, puis sur Google Stadia le 28 juillet de la même année.\r\n\r\nDans Celeste, le joueur incarne Madeline, une jeune femme qui tente de gravir le mont Celeste. Au cours de son ascension, il est révélé qu'elle souffre d'une sévère forme d'anxiété et de dépression, impliquant qu'elle doit affronter ses angoisses et son mal-être intérieur pour parvenir au sommet de la montagne. Le jeu est composé de huit chapitres ainsi que d'un DLC gratuit intitulé Farewell, sorti le 9 septembre 2019, qui clôt définitivement l'histoire. Le gameplay du jeu consiste en une suite d'écrans présentant un assemblage complexe et cohérent d'obstacles qui demandent à la fois de la stratégie, de la précision et un bon temps de réaction de la part du joueur pour être surmontés. Jugé exigeant et souvent comparé à des jeux comme Super Meat Boy, Celeste inclut néanmoins des paramètres pour ajuster la difficulté et reste vu comme moins punitif que les autres jeux du genre.\r\nQuatre personnages regardent une fille rousse tenter d'attraper une fraise ailée ; le logo du jeu se trouve au-dessus.\r\nCouverture de la boîte du jeu.\r\n\r\nCeleste est très bien reçu par la critique et est loué pour ses mécaniques de jeu, son level design, sa musique — composée par Lena Raine —, son esthétique graphique 8 bits et son histoire, en particulier pour le travail effectué sur le personnage de Madeline ainsi que sur celui de représentation des troubles psychiques. Il est considéré par la presse spécialisée comme l'un des meilleurs jeux de 2018, remportant de nombreuses récompenses parmi lesquelles le prix du meilleur jeu indépendant aux Game Awards 2018 et une nomination en tant que jeu de l'année lors de cette même cérémonie. Il s'agit en outre d'un succès commercial, Celeste s'étant écoulé à plus d'un million d'exemplaires en mars 2020, tout en devenant très populaire dans la communauté du speedrun. ", 2018, new List<string> { "Plates-formes", "Solo", "Aventure"}, "celeste.png")); //games.Add(new("Celeste", "Celeste est un jeu vidéo de plateforme indépendant en deux dimensions développé et édité par Extremely OK Gamesa, un studio canadien dirigé par Maddy Thorson et Noel Berry. Issu d'un prototype éponyme développé en août 2015 lors d'une game jam sur la fantasy console PICO-8, il est finalement publié sur Microsoft Windows, macOS, Linux, PlayStation 4, Nintendo Switch et Xbox One le 25 janvier 2018, puis sur Google Stadia le 28 juillet de la même année.\r\n\r\nDans Celeste, le joueur incarne Madeline, une jeune femme qui tente de gravir le mont Celeste. Au cours de son ascension, il est révélé qu'elle souffre d'une sévère forme d'anxiété et de dépression, impliquant qu'elle doit affronter ses angoisses et son mal-être intérieur pour parvenir au sommet de la montagne. Le jeu est composé de huit chapitres ainsi que d'un DLC gratuit intitulé Farewell, sorti le 9 septembre 2019, qui clôt définitivement l'histoire. Le gameplay du jeu consiste en une suite d'écrans présentant un assemblage complexe et cohérent d'obstacles qui demandent à la fois de la stratégie, de la précision et un bon temps de réaction de la part du joueur pour être surmontés. Jugé exigeant et souvent comparé à des jeux comme Super Meat Boy, Celeste inclut néanmoins des paramètres pour ajuster la difficulté et reste vu comme moins punitif que les autres jeux du genre.\r\nQuatre personnages regardent une fille rousse tenter d'attraper une fraise ailée ; le logo du jeu se trouve au-dessus.\r\nCouverture de la boîte du jeu.\r\n\r\nCeleste est très bien reçu par la critique et est loué pour ses mécaniques de jeu, son level design, sa musique — composée par Lena Raine —, son esthétique graphique 8 bits et son histoire, en particulier pour le travail effectué sur le personnage de Madeline ainsi que sur celui de représentation des troubles psychiques. Il est considéré par la presse spécialisée comme l'un des meilleurs jeux de 2018, remportant de nombreuses récompenses parmi lesquelles le prix du meilleur jeu indépendant aux Game Awards 2018 et une nomination en tant que jeu de l'année lors de cette même cérémonie. Il s'agit en outre d'un succès commercial, Celeste s'étant écoulé à plus d'un million d'exemplaires en mars 2020, tout en devenant très populaire dans la communauté du speedrun. ", 2018, new List<string> { "Plates-formes", "Solo", "Aventure" }, "celeste.png"));
//games[2].AddReview(new(5, "C'est trop bien")); //games[2].AddReview(new("User 1", 5, "C'est trop bien"));
//games[2].AddReview(new(3.5f, "C'est bien")); //games[2].AddReview(new("User 2", 3.5f, "C'est bien"));
//games[2].AddReview(new(1.5f, "C'est pas bien")); //games[2].AddReview(new("User 3", 1.5f, "C'est pas bien"));
//games.Add(new("GTA V", "Grand Theft Auto V (plus communément GTA V ou GTA 5) est un jeu vidéo d'action-aventure, développé par Rockstar North et édité par Rockstar Games. Il est sorti en 2013 sur PlayStation 3 et Xbox 360, en 2014 sur PlayStation 4 et Xbox One, en 2015 sur PC puis en 2022 sur PlayStation 5 et Xbox Series. Le jeu fait partie de la série vidéoludique Grand Theft Auto.\r\n\r\nCet épisode se déroule dans l'État fictif de San Andreas en Californie du Sud. L'histoire solo suit trois protagonistes: le braqueur de banque à la retraite Michael De Santa (avant laccord avec le FIB : Michael Townley), le gangster Franklin Clinton et le trafiquant de drogue et d'armes Trevor Philips, et leurs braquages sous la pression d'une agence gouvernementale corrompue et de puissants criminels. Le jeu en monde ouvert permet aux joueurs de parcourir librement la campagne ouverte de San Andreas et la ville fictive de Los Santos, inspirée de Los Angeles.\r\n\r\nLe coût de Grand Theft Auto V, marketing compris, s'élève à 265 millions de dollars, ce qui représente à l'époque un record pour un jeu vidéo. Le jeu bat sept records de ventes lors de sa sortie et devient un grand succès commercial, dépassant 20 millions d'exemplaires vendus en deux semaines, ainsi que plus dun milliards de dollars de recette. Le jeu reçoit le prix Golden Joystick pour le jeu de l'année, mais également le prix Game of the Year.\r\n\r\nAu mois de mai 2023, le jeu s'est écoulé à plus de 180 millions d'exemplaires tout support confondu, le plaçant à la deuxième place des jeux vidéo les plus vendus de tous les temps, derrière Minecraft", 2013, new List<string> { "Solo", "Tir", "Multijoueur" }, "gta_v.png")); //games.Add(new("GTA V", "Grand Theft Auto V (plus communément GTA V ou GTA 5) est un jeu vidéo d'action-aventure, développé par Rockstar North et édité par Rockstar Games. Il est sorti en 2013 sur PlayStation 3 et Xbox 360, en 2014 sur PlayStation 4 et Xbox One, en 2015 sur PC puis en 2022 sur PlayStation 5 et Xbox Series. Le jeu fait partie de la série vidéoludique Grand Theft Auto.\r\n\r\nCet épisode se déroule dans l'État fictif de San Andreas en Californie du Sud. L'histoire solo suit trois protagonistes: le braqueur de banque à la retraite Michael De Santa (avant laccord avec le FIB : Michael Townley), le gangster Franklin Clinton et le trafiquant de drogue et d'armes Trevor Philips, et leurs braquages sous la pression d'une agence gouvernementale corrompue et de puissants criminels. Le jeu en monde ouvert permet aux joueurs de parcourir librement la campagne ouverte de San Andreas et la ville fictive de Los Santos, inspirée de Los Angeles.\r\n\r\nLe coût de Grand Theft Auto V, marketing compris, s'élève à 265 millions de dollars, ce qui représente à l'époque un record pour un jeu vidéo. Le jeu bat sept records de ventes lors de sa sortie et devient un grand succès commercial, dépassant 20 millions d'exemplaires vendus en deux semaines, ainsi que plus dun milliards de dollars de recette. Le jeu reçoit le prix Golden Joystick pour le jeu de l'année, mais également le prix Game of the Year.\r\n\r\nAu mois de mai 2023, le jeu s'est écoulé à plus de 180 millions d'exemplaires tout support confondu, le plaçant à la deuxième place des jeux vidéo les plus vendus de tous les temps, derrière Minecraft", 2013, new List<string> { "Solo", "Tir", "Multijoueur" }, "gta_v.png"));
//games[3].AddReview(new(5, "C'est trop bien")); //games[3].AddReview(new("User 1", 5, "C'est trop bien"));
//games[3].AddReview(new(3.5f, "C'est bien")); //games[3].AddReview(new("User 2", 3.5f, "C'est bien"));
//games[3].AddReview(new(1.5f, "C'est pas bien")); //games[3].AddReview(new("User 3", 1.5f, "C'est pas bien"));
//IPersistance stub = new Stub(); //IPersistance stub = new Stub();
//stub.SaveGame(games); //stub.SaveGame(games);
Console.WriteLine("Stub Over !");

@ -9,6 +9,7 @@ namespace StimPersistance
{ {
public Persistance() public Persistance()
{ {
//Faut refactor ce truc parce que c'est pas portable
Directory.SetCurrentDirectory("C:\\Users\\Admin\\source\\repos\\Projet_IHM\\Sources\\XML"); Directory.SetCurrentDirectory("C:\\Users\\Admin\\source\\repos\\Projet_IHM\\Sources\\XML");
} }
@ -23,18 +24,22 @@ namespace StimPersistance
public void SaveUser(List<User> users) public void SaveUser(List<User> users)
{ {
throw new NotImplementedException();
} }
public ObservableCollection<Game> LoadGame() public ObservableCollection<Game> LoadGame()
{ {
DataContractSerializer serializer = new(typeof(ObservableCollection<Game>)); if (File.Exists("games.xml"))
using (Stream stream = File.OpenRead("games.xml")) return serializer.ReadObject(stream) as ObservableCollection<Game>; {
DataContractSerializer serializer = new(typeof(ObservableCollection<Game>));
using (Stream stream = File.OpenRead("games.xml")) return serializer.ReadObject(stream) as ObservableCollection<Game>;
}
return new();
} }
public List<User> LoadUser() public List<User> LoadUser()
{ {
return null; throw new NotImplementedException();
} }
} }
} }

@ -1,6 +1,7 @@
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Runtime.Serialization; using System.Runtime.Serialization;
using System.Text;
namespace Model namespace Model
{ {
@ -10,10 +11,10 @@ namespace Model
[DataMember] [DataMember]
public string Name public string Name
{ {
get { return name; } get => name;
private set private set
{ {
if (string.IsNullOrWhiteSpace(value)) name="Default"; if (string.IsNullOrWhiteSpace(value)) return;
name = value; name = value;
} }
} }
@ -22,10 +23,10 @@ namespace Model
[DataMember] [DataMember]
public string Description public string Description
{ {
get { return description; } get => description;
private set private set
{ {
if (string.IsNullOrWhiteSpace(value)) description="Default"; if (string.IsNullOrWhiteSpace(value)) return;
description = value; description = value;
} }
} }
@ -34,7 +35,7 @@ namespace Model
[DataMember] [DataMember]
public int Year public int Year
{ {
get { return year; } get => year;
private set private set
{ {
if (value < 1957 || value > 2023) return; if (value < 1957 || value > 2023) return;
@ -49,7 +50,7 @@ namespace Model
get => cover; get => cover;
set set
{ {
if (string.IsNullOrWhiteSpace(value)) cover = "Default"; if (string.IsNullOrWhiteSpace(value)) return;
cover = value; cover = value;
} }
} }
@ -111,19 +112,20 @@ namespace Model
public override bool Equals(object? obj) public override bool Equals(object? obj)
{ {
if ((obj == null) || !this.GetType().Equals(obj.GetType())) return false; if ((obj == null) || !this.GetType().Equals(obj.GetType())) return false;
return this.Name.Equals((obj as Game).Name) && this.Year.Equals((obj as Game).Year); return Name.Equals(((Game)obj).Name);
} }
public override string ToString() public override string ToString()
{ {
string s = $"{Name} : {Description} : {Year} : {Cover}\n"; StringBuilder builder = new();
builder.Append($"{Name} : {Description} : {Year} : {Cover}\n");
foreach(Review review in Reviews) foreach (Review review in Reviews)
{ {
s += review; builder.Append($"{review}\n");
} }
return s+"\n"; return builder.ToString();
} }
public float GetAvgRate() public float GetAvgRate()

@ -1,38 +0,0 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
internal class GameHandler
{
public List<Game> GamesList
{
get { return gamesList; }
}
List<Game> gamesList;
public GameHandler()
{
List<Game> gamesList = new List<Game>();
}
public void AddGametoGamesList(List<Game> gamesList, Game game)
{
gamesList.Add(game);
}
public void RemoveGameFromGamesList(List<Game> gamesList, Game game)
{
gamesList.Remove(game);
}
public void DelCom(Game game, Review review, int role)
{
if (role >= 1)
{
game.RemoveReview(review);
}
return;
}
}
}

@ -1,9 +1,4 @@
using System; using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model namespace Model
{ {

@ -1,21 +1,24 @@
using System; using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model namespace Model
{ {
public class Manager public class Manager
{ {
public ObservableCollection<Game> Games { get; set; } = new(); public ObservableCollection<Game> GameList { get;}
private IPersistance _persistance;
public Manager(IPersistance persistance) public Manager(IPersistance persistance)
{ {
_persistance = persistance; GameList = persistance.LoadGame();
Games = _persistance.LoadGame(); }
public void AddGametoGamesList(Game game)
{
GameList.Add(game);
}
public void RemoveGameFromGamesList(Game game)
{
GameList.Remove(game);
} }
} }
} }

@ -1,9 +1,4 @@
using System; using System.Runtime.Serialization;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Model namespace Model
{ {
@ -13,10 +8,7 @@ namespace Model
[DataMember] [DataMember]
public float Rate public float Rate
{ {
get get => rate;
{
return rate;
}
private set private set
{ {
if (value < 0 || value > 5) return; if (value < 0 || value > 5) return;
@ -26,27 +18,19 @@ namespace Model
private float rate; private float rate;
[DataMember] [DataMember]
public string Text public string? Text
{ {
get get => text;
{
return text;
}
private set private set
{ {
if (string.IsNullOrWhiteSpace(value)) return; if (string.IsNullOrWhiteSpace(value)) return;
text = value; text = value;
} }
} }
private string text; private string? text;
[DataMember] [DataMember]
public string AuthorName public string? AuthorName { get; set; }
{
get { return authorName; }
private set { authorName = value; }
}
private string authorName;
public Review(string username, float rate, string text) public Review(string username, float rate, string text)
{ {
@ -59,16 +43,16 @@ namespace Model
public override string ToString() public override string ToString()
{ {
return $"{AuthorName} : {Rate} : {Text}\n"; return $"{AuthorName} : {Rate} : {Text}";
} }
public void EditReview(string text) public void EditReview(string text)
{ {
Text = text+" (Modifié)"; if (!string.IsNullOrWhiteSpace(text)) Text = text+" (Modifié)";
} }
public void EditRate(int newval) public void EditRate(float newval)
{ {
rate= newval; Rate= newval;
} }
} }
} }

@ -6,7 +6,7 @@ namespace Model
{ {
public string Username public string Username
{ {
get { return username; } get => username;
private set private set
{ {
if (string.IsNullOrWhiteSpace(value)) return; if (string.IsNullOrWhiteSpace(value)) return;
@ -17,7 +17,7 @@ namespace Model
public string Biographie public string Biographie
{ {
get { return biographie;} get => biographie;
private set private set
{ {
if (string.IsNullOrWhiteSpace(value)) return; if (string.IsNullOrWhiteSpace(value)) return;
@ -28,7 +28,7 @@ namespace Model
public string Email public string Email
{ {
get { return email; } get => email;
private set private set
{ {
Regex rg_email = new Regex("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$"); Regex rg_email = new Regex("^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$");
@ -41,7 +41,7 @@ namespace Model
public string Password public string Password
{ {
get { return password; } get => password;
private set private set
{ {
Regex rg = new Regex("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,32}$"); Regex rg = new Regex("^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,32}$");
@ -70,7 +70,7 @@ namespace Model
} }
public void AddReview(Game game, float rate, string text) public void AddReview(Game game, float rate, string text)
{ {
game.AddReview(new Review(username, rate, text)); game.AddReview(new Review(Username, rate, text));
} }
public void RemoveSelfReview(Game game, float rate, string text) public void RemoveSelfReview(Game game, float rate, string text)
{ {

@ -73,7 +73,7 @@
<DataTemplate> <DataTemplate>
<VerticalStackLayout> <VerticalStackLayout>
<HorizontalStackLayout BindingContextChanged="AddStars"> <HorizontalStackLayout BindingContextChanged="AddStars">
<Label Text="Avis" FontSize="20"/> <Label Text="{Binding AuthorName}" FontSize="20"/>
</HorizontalStackLayout> </HorizontalStackLayout>
<Label Text="{Binding Text}"/> <Label Text="{Binding Text}"/>
</VerticalStackLayout> </VerticalStackLayout>

@ -23,7 +23,7 @@
<VerticalStackLayout BackgroundColor="{StaticResource Secondary}" Grid.Column="2" Grid.Row="1"/> <VerticalStackLayout BackgroundColor="{StaticResource Secondary}" Grid.Column="2" Grid.Row="1"/>
<CollectionView ItemsSource="{Binding Games}" SelectionMode="Single" SelectionChanged="OnClickGameList" ItemsLayout="VerticalGrid, 3" Grid.Column="1"> <CollectionView ItemsSource="{Binding GameList}" SelectionMode="Single" SelectionChanged="OnClickGameList" ItemsLayout="VerticalGrid, 3" Grid.Column="1">
<CollectionView.ItemTemplate> <CollectionView.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border MinimumWidthRequest="200" Margin="10, 10, 10, 10"> <Border MinimumWidthRequest="200" Margin="10, 10, 10, 10">

@ -22,6 +22,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Persistance\Persistance.csproj" />
<ProjectReference Include="..\Stim.Model\Model.csproj" /> <ProjectReference Include="..\Stim.Model\Model.csproj" />
</ItemGroup> </ItemGroup>

@ -5,7 +5,7 @@ namespace Test
public class TestGame public class TestGame
{ {
[Fact] [Fact]
public void Constructeur() public void Constructor()
{ {
Game game = new("game", "description", 2012, new List<String> {"1","2","3"}, "cover"); Game game = new("game", "description", 2012, new List<String> {"1","2","3"}, "cover");
@ -19,7 +19,7 @@ namespace Test
{ {
Game game = new("", "description", 2012, new List<String> {"1","2","3"}, "cover"); Game game = new("", "description", 2012, new List<String> {"1","2","3"}, "cover");
Assert.True(game.Name == ""); Assert.False(game.Name == "");
Game game2 = new(null, "description", 2012, new List<String> {"1","2","3"}, "cover"); Game game2 = new(null, "description", 2012, new List<String> {"1","2","3"}, "cover");
Assert.True(game2.Name == "Default"); Assert.True(game2.Name == "Default");
@ -39,7 +39,7 @@ namespace Test
{ {
Game game = new("name", "", 2012, new List<String> {"1","2","3"}, "cover"); Game game = new("name", "", 2012, new List<String> {"1","2","3"}, "cover");
Assert.True(game.Description == ""); Assert.False(game.Description == "");
Game game2 = new("name", null, 2012, new List<String> {"1","2","3"}, "cover"); Game game2 = new("name", null, 2012, new List<String> {"1","2","3"}, "cover");
Assert.True(game2.Description=="Default"); Assert.True(game2.Description=="Default");
@ -67,6 +67,7 @@ namespace Test
{ {
Game game = new("name", "description", 2012, new List<String> {"1","2","3"}, "cover"); Game game = new("name", "description", 2012, new List<String> {"1","2","3"}, "cover");
Assert.NotNull(game.Tags); Assert.NotNull(game.Tags);
Assert.Equal(new List<String> { "1", "2", "3" }, game.Tags);
Game game2 = new("name", "description", 2012, null, "cover"); Game game2 = new("name", "description", 2012, null, "cover");
Assert.NotNull(game2.Tags); Assert.NotNull(game2.Tags);
@ -163,19 +164,5 @@ namespace Test
Assert.Equal(2.5f, game.GetAvgRate()); Assert.Equal(2.5f, game.GetAvgRate());
} }
[Fact]
/*public void toString()
{
User user = new("username", "biographie", "email@email.com", "password");
Game game = new("name", "description", 2012, new List<String> { "1", "2", "3" }, "cover");
user.AddReview(game, 2.5f, "bof");
user.AddReview(game, 0f, "bof--");
user.AddReview(game, 5f, "bof++");
Assert.Equal("bof\nbof--\nbof++",user.ToString());
}*/
} }
} }

@ -0,0 +1,29 @@
using Model;
using StimPersistance;
namespace Test
{
public class TestManager
{
[Fact]
public void Constructor()
{
IPersistance persistance = new Persistance();
Manager manager = new(persistance);
Assert.NotNull(manager);
}
[Fact]
public void AddAndRemoveGame()
{
IPersistance persistance = new Persistance();
Manager manager = new(persistance);
Game game = new("game", "description", 2012, new List<String> { "1", "2", "3" }, "cover");
manager.AddGametoGamesList(game);
Assert.Contains(game, manager.GameList);
manager.RemoveGameFromGamesList(game);
Assert.DoesNotContain(game, manager.GameList);
}
}
}

@ -0,0 +1,68 @@
using Model;
namespace Test
{
public class TestReview
{
[Fact]
public void Constructor()
{
Review rev = new("User 1", 3, "rev");
Assert.NotNull(rev);
}
[Fact]
public void Rate()
{
Review rev = new("User 1", -5.8f, "rev");
Review rev2 = new("User 2", 5.8f, "rev2");
Assert.Equal(0, rev.Rate);
Assert.Equal(0, rev2.Rate);
}
[Fact]
public void Text()
{
Review rev = new("User 1", 3, "");
Review rev2 = new("User 2", 3, null);
Assert.Null(rev.Text);
Assert.Null(rev2.Text);
}
[Fact]
public void AuthorName()
{
Review rev = new("User 1", 3, "text");
Assert.NotNull(rev.AuthorName);
}
[Fact]
public void Str()
{
Review rev = new("User 1", 3, "rev");
Assert.Equal("User 1 : 3 : rev", rev.ToString());
}
[Fact]
public void EditText()
{
Review rev = new("User 1", 3, "rev");
rev.EditReview("");
Assert.Equal("rev", rev.Text);
rev.EditReview("newRev");
Assert.Equal("newRev (Modifié)", rev.Text);
}
[Fact]
public void EditRate()
{
Review rev = new("User 1", 3, "rev");
rev.EditRate(-2);
Assert.Equal(3, rev.Rate);
rev.EditRate(18);
Assert.Equal(3, rev.Rate);
rev.EditRate(4.5f);
Assert.Equal(4.5f, rev.Rate);
}
}
}

@ -1,9 +1,4 @@
using Model; using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test namespace Test
{ {
@ -97,8 +92,8 @@ namespace Test
Assert.NotNull(game); Assert.NotNull(game);
user.AddReview(game, 2.5f,"UwU"); // user.AddReview(game, 2.5f,"UwU");
Assert.Single(game.Reviews); // Assert.Single(game.Reviews);
user.RemoveSelfReview(game, 2.5f, "UwU"); user.RemoveSelfReview(game, 2.5f, "UwU");
Assert.Empty(game.Reviews); Assert.Empty(game.Reviews);

@ -13,17 +13,17 @@ Elden Ring a été acclamé par la critique; les critiques ont loué son monde o
<Name>Elden Ring</Name> <Name>Elden Ring</Name>
<Reviews> <Reviews>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 1</AuthorName>
<Rate>5</Rate> <Rate>5</Rate>
<Text>C'est trop bien</Text> <Text>C'est trop bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 2</AuthorName>
<Rate>3.5</Rate> <Rate>3.5</Rate>
<Text>C'est bien</Text> <Text>C'est bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 3</AuthorName>
<Rate>1.5</Rate> <Rate>1.5</Rate>
<Text>C'est pas bien</Text> <Text>C'est pas bien</Text>
</Review> </Review>
@ -48,17 +48,17 @@ En mai 2020, Minecraft a passé la barre des 200 millions d'exemplaires vendus s
<Name>Minecraft</Name> <Name>Minecraft</Name>
<Reviews> <Reviews>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 1</AuthorName>
<Rate>5</Rate> <Rate>5</Rate>
<Text>C'est trop bien</Text> <Text>C'est trop bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 2</AuthorName>
<Rate>3.5</Rate> <Rate>3.5</Rate>
<Text>C'est bien</Text> <Text>C'est bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 3</AuthorName>
<Rate>1.5</Rate> <Rate>1.5</Rate>
<Text>C'est pas bien</Text> <Text>C'est pas bien</Text>
</Review> </Review>
@ -83,17 +83,17 @@ Celeste est très bien reçu par la critique et est loué pour ses mécaniques d
<Name>Celeste</Name> <Name>Celeste</Name>
<Reviews> <Reviews>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 1</AuthorName>
<Rate>5</Rate> <Rate>5</Rate>
<Text>C'est trop bien</Text> <Text>C'est trop bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 2</AuthorName>
<Rate>3.5</Rate> <Rate>3.5</Rate>
<Text>C'est bien</Text> <Text>C'est bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 3</AuthorName>
<Rate>1.5</Rate> <Rate>1.5</Rate>
<Text>C'est pas bien</Text> <Text>C'est pas bien</Text>
</Review> </Review>
@ -118,17 +118,17 @@ Au mois de mai 2023, le jeu s'est écoulé à plus de 180 millions d'exemplaires
<Name>GTA V</Name> <Name>GTA V</Name>
<Reviews> <Reviews>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 1</AuthorName>
<Rate>5</Rate> <Rate>5</Rate>
<Text>C'est trop bien</Text> <Text>C'est trop bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 2</AuthorName>
<Rate>3.5</Rate> <Rate>3.5</Rate>
<Text>C'est bien</Text> <Text>C'est bien</Text>
</Review> </Review>
<Review> <Review>
<AuthorName i:nil="true" /> <AuthorName>User 3</AuthorName>
<Rate>1.5</Rate> <Rate>1.5</Rate>
<Text>C'est pas bien</Text> <Text>C'est pas bien</Text>
</Review> </Review>

Loading…
Cancel
Save