diff --git a/Sources/Console/Program.cs b/Sources/Console/Program.cs index 65aa838..3a1b925 100644 --- a/Sources/Console/Program.cs +++ b/Sources/Console/Program.cs @@ -4,6 +4,7 @@ using Model; using Modèle; using Persistance; using System; +using System.Collections.ObjectModel; using System.Diagnostics.Metrics; using System.Reflection.Metadata.Ecma335; using System.Reflection.PortableExecutable; @@ -418,7 +419,7 @@ menuAccueil(); User auteur = new User("pseudo", "nom", "prenom", "mdp", new List { }); // Création d'un monstre -Monstre monstre = new Monstre(1, "Dragon", "Dangereux", "Un redoutable dragon cracheur de feu.", new List(), new List(), new List()); +Monstre monstre = new Monstre(1, "Dragon", "Dangereux", "Un redoutable dragon cracheur de feu.", new List(), new List(), new ObservableCollection()); // Création d'un conseil Conseil conseil = new Conseil(auteur, "Soyez prudent lors de votre rencontre avec le dragon.", monstre); diff --git a/Sources/Modèle/Apparence.cs b/Sources/Modèle/Apparence.cs new file mode 100644 index 0000000..84e5c3d --- /dev/null +++ b/Sources/Modèle/Apparence.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace Modèle +{ + public class Apparence + { + public string Nom { get; set; } + + public string ImageLink { get; init; } + public Apparence(string name) { + Nom = name; + ImageLink = name.ToLower() + ".png"; + } + } +} diff --git a/Sources/Modèle/Monstre.cs b/Sources/Modèle/Monstre.cs index fec68a1..3285802 100644 --- a/Sources/Modèle/Monstre.cs +++ b/Sources/Modèle/Monstre.cs @@ -3,6 +3,7 @@ using System.ComponentModel; using System.Reflection.Metadata; using System.Runtime.Serialization; using System.Collections.Generic; +using System.Collections.ObjectModel; namespace Model { @@ -70,11 +71,12 @@ namespace Model get; init; } - public List ListConseils { get; set; } + [DataMember(Order = 7, EmitDefaultValue = false)] + public ObservableCollection ListConseils { get; set; } public string ImageLink { get; init ; } public string CardLink { get; init; } - public Monstre(int id, string name, string danger, string desc, List characList, List appearList, List conseilList) + public Monstre(int id, string name, string danger, string desc, List characList, List appearList, ObservableCollection conseilList) { if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(desc) || string.IsNullOrWhiteSpace(danger)) { diff --git a/Sources/Persistance/IMonsterDataManager.cs b/Sources/Persistance/IMonsterDataManager.cs index 714da21..54903f7 100644 --- a/Sources/Persistance/IMonsterDataManager.cs +++ b/Sources/Persistance/IMonsterDataManager.cs @@ -1,6 +1,7 @@ using Model; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,6 +11,6 @@ namespace Persistance public interface IMonsterDataManager { public void saveMonsters(List monstres); - public List loadMonsters(); + public ObservableCollection loadMonsters(); } } \ No newline at end of file diff --git a/Sources/Persistance/LoaderJson.cs b/Sources/Persistance/LoaderJson.cs index 4cc3bbf..8b3f262 100644 --- a/Sources/Persistance/LoaderJson.cs +++ b/Sources/Persistance/LoaderJson.cs @@ -1,6 +1,7 @@ using Model; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Runtime.Serialization.Json; using System.Text; @@ -14,12 +15,12 @@ namespace Persistance DataContractJsonSerializer jsonUserSerializer = new DataContractJsonSerializer(typeof(List)); DataContractJsonSerializer jsonMonsterSerializer = new DataContractJsonSerializer(typeof(List)); MemoryStream memoryStream = new MemoryStream(); - List IMonsterDataManager.loadMonsters() + ObservableCollection IMonsterDataManager.loadMonsters() { - List? monstre2; + ObservableCollection? monstre2; using (FileStream s2 = File.OpenRead("monsters.json")) { - monstre2 = jsonMonsterSerializer.ReadObject(s2) as List; + monstre2 = jsonMonsterSerializer.ReadObject(s2) as ObservableCollection; } return monstre2; //throw new NotImplementedException(); diff --git a/Sources/Persistance/LoaderStub.cs b/Sources/Persistance/LoaderStub.cs index d4a5639..4bfefba 100644 --- a/Sources/Persistance/LoaderStub.cs +++ b/Sources/Persistance/LoaderStub.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; +using System.Collections.ObjectModel; namespace Persistance { @@ -25,35 +26,35 @@ namespace Persistance "Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.", new List { "Avec une cisaille il est possible de raser la laine d'un mouton, il se retrouvera sans laine.","Pour faire repousser la laine d'un mouton, il faut qu'il ait de l'herbe sous ses pattes pour qu'il puisse manger. Une fois l'herbe mangée, la laine repousse instantanément !" }, new List { "Apparence1", "App2", "App3" } - , new List {}) })); + , new ObservableCollection {}) })); lu.Add(new User("Yadoumir", "Doumir", "Yannis", "mdp", new List { })); lu.Add(new User("osuplayer123", "Bonetti", "Martin", "oSu!727", new List { })); return lu; } - public List loadMonsters() ///SAME + public ObservableCollection loadMonsters() ///SAME { - List lm = new List(); + ObservableCollection lm = new ObservableCollection(); User user = new User("ddd", "ddd", "ddd", "ddd"); - Monstre monstre = new Monstre(1, "monstre", "dangereux", "je suis gentil tkt", new List { }, new List { }, new List { }); + Monstre monstre = new Monstre(1, "monstre", "dangereux", "je suis gentil tkt", new List { }, new List { }, new ObservableCollection{ }); Conseil conseil = new Conseil(user, "Voili voilou", monstre); - lm.Add(new Monstre(1, "Poule", "passif", "Je suis un animal présent un peu partout, sauf dans le desert car il fait beaucoup trop chaud. Mais j'aime beaucoup la jungle !", new List { "Quand une poule est tué il y a 3.12% de chance que la poule laisse tomber un oeuf " }, new List { "Apparence1", "App2", "App3" }, new List {conseil})); - lm.Add(new Monstre(2, "Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.", new List { "Avec une cisaille il est possible de rasé la laine d'un mouton, il se retoruvera sans laine.", "Pour faire repousser la laine d'un mouton il faut qu'il ai de l'herbe sous ses pattes pour qu'il puisse manger. Une fois manger la laine repousse instantanément !" }, new List { "Apparence1", "App2", "App3" }, new List {conseil})); - lm.Add(new Monstre(3, "Cochon", "passif", "Je suis un animal présent partout, sauf dans le desert ou il fait trop chaud pour moi.", new List{ "La reproduction de cochon peut se faire avec des carottes et des patates crues."}, new List { "Apparence1", "App2", "App3" }, new List {conseil})); - lm.Add(new Monstre(4, "Warden", "boss", "Je ne vous voit pas mais je sais où vous êtes", new List { "Le warden est aveugle mais il entend tous les bruit autour de lui.", "Il apparait dans une caverne spécial appeler les abîmes quand on y marche en faisant trop de bruit.", "Il s'agit du seul monstre qui ai une animation d'apparation, il sort du sol.", "Il est capable de tirer des rayon laser à l'endroit d'où proviennes les bruit qu'il entend." }, new List { "Une seul apparence pour lui" }, new List { })); - lm.Add(new Monstre(5, "EnderDragon", "boss", "Si vous arrivez à me vaincre, vous aurez accompli tout ce qui était possible de faire dans ce monde.", new List { "L'Ender dragon est le boss de fin de minecraft.", "Pour le vaincre il faut trouver le portail inter-dimensionnel qui se cache quelque part dans votre monde.", "Une fois vaincu, il laissera son oeuf ainsi qu'un portail qui vous permettra de rentrer chez vous." }, new List { "Une seul apparence pour lui" }, new List { })); - lm.Add(new Monstre(6, "Wither", "boss", "Une fois que je vous ai aperçue, je ne vous lâcherais plus jusqu'à ce que mort s'ensuive.", new List { "Pour le faire apparaitre, il vous faudrat la tête de 3 wither squelette.", "Le wither lance des tête qui repousse instantanément.", "Ces têtes peuvent vous empoissoné jusqu'à la mort" }, new List { "Apparence de chargement", "Apparence d'attaque", "Apparence mid life" }, new List { })); - lm.Add(new Monstre(7, "Vache", "passif", "Je suis un peu partout dans le monde, mais plus particulièrement dans les plaines.", new List { "Les vaches apparaissent par groupe de quatres minimum.", "Elle peuvent donner du lait grâce à un sceau, ce lait enlève tout les effets de potion que vous aurez" }, new List { "Vache de base", "vache champignon" }, new List { })); - lm.Add(new Monstre(8, "Loup", "passif", "Je deviens vite aggressif lorsque l'on m'attaque.", new List { "Les loups peuvent être apprivoisé grâce à des os.", " Une fois apprivoisé" }, new List { "Apparence nature", "Apparence méchant", "Apparence apprivoisé" }, new List { })); - lm.Add(new Monstre(9, "Chat", "passif", "J'espère que tu as du poisson, sinon je ne m'approche pas de toi !", new List { "Le chat à peur des humain mais apparaît seulement dans les villages.", "Si un chat apparaît près d'une sorcière, il sera forcément noir" }, new List { "apparence au pif", "apparence noir" }, new List { })); - lm.Add(new Monstre(10, "Zombie", "hostile", "Je peux vous voir de très loin et venir discrètement.", new List { "Il y a une faible chance qu'un zombie qui apparaît soit un zombie villageois, il est possible de le re transformer en villageois afin de faire des échanges à prix réduit avec lui", "Les bébé zombie sont les monstres les plus rapides." }, new List { "Zobmie", "zombie villageois", " bébé zombie" }, new List { })); - lm.Add(new Monstre(11, "Squelette", "hostile", "Je suis un sniper d'élite, je ne loupe presque jamais ma cible", new List { "Il laisse parfois tomber leurs arc, mais ils sont souvent usés.", " Parfois il chevauche une araignée pour se déplacer, il devient alors plus rapide." }, new List { "basique", "spider jokey" }, new List { })); - lm.Add(new Monstre(12, "Creeper", "hostile", "J'approche doucement et j'explose.", new List { "Le creeper possède une peau verte et blanche. Cette apparence était à l'époque de la bêta du jeu la même que les blocs de terre, afin de surprendre les joueurs.", "Il est possible de le faire exploser avec un briquet" }, new List { "apparence de base" }, new List { })); - lm.Add(new Monstre(13, "Phantom", "hostile", "Dormez ou je viendrais", new List { "Le phantom apparaît lorsque vous ne dormez pas pendant plus de trois jour d'affilés.", "Ils sont difficile à atteindre pusiqu'il vole plutôt vite" }, new List{"Apparence 1"}, new List { })); - lm.Add(new Monstre(14, "Enderman", "hostile", "Ne me regardez pas ! ", new List { "Si vous regardez un enderman dans les yeux, il se mettra à vous attaquer, autrement, il est inoffensif", " Gardez le contact visuel avec, lui le fera changer d'avis au bout de quelques secondes sur l'agressivité qu'il a envers vous.", "Il est capable de prendre des blocks et les reposer ailleurs." }, new List { "apparence 1", "apparence avec un bloc" }, new List { })); - lm.Add(new Monstre(15, "Slime", "hostile", "Je connais le multiclonage !", new List { "Les slimes peuvent apparaître avec des tailles différentes.", "S'il n'est pas trop petit, il se divisera en quatre."}, new List { "Apparencegrand", "apparence petit"}, new List { })); - lm.Add(new Monstre(16, "Araignee", "hostile", " je sais pas quoi mettre mdrrrrr", new List { "L'arraignée est capable de grimper au mur", " Si vous en rencontrait une en journée et en extérieur elle sera inoffensive, mais dans une caverne ou pendant la nuit elle vous attaquera." }, new List { "une seule apparence" }, new List { })); + lm.Add(new Monstre(1, "Poule", "passif", "Les poules sont des créatures passives. Elles fournissent des plumes et des oeufs.En moyenne, une poule laisse tomber un oeuf toutes des 5 à 10 minutes.", new List { "Quand une poule est tuée, il y a une faible chance qu'elle laisse tomber un œuf.", "Parfois, les poules apparaissent avec un bébé zombie sur le dos, on l'appelle alors une poule jockey. Il est aussi possible d'avoir un bébé cochon zombie sur son dos, mais seulement par commande." }, new List { "Apparence1", "App2", "App3" }, new ObservableCollection {conseil})); + lm.Add(new Monstre(2, "Mouton", "passif", "Les moutons sont des créatures passives. Sa principale caractéristique est qu'il peut fournir de la laine, un matériau qui sert à fabriquer des objets, notamment des lits.", new List { "Avec une cisaille, il est possible de rasé la laine d'un mouton, il se retrouvera sans laine.", "Pour faire repousser la laine d'un mouton, il faut qu'il ait de l'herbe sous ses pattes pour qu'il puisse manger. Une fois manger la laine repousse instantanément.", "Les moutons peuvent avoir toutes les couleurs du jeu grâce à des teintures et des mélanges. Mais les seules couleurs de mouton pouvant apparaître sont le blanc, le gris, le marron, le noir et le rose..", "Le rose est une couleur qui a une chance d'apparaître très faible, tellement faible que la probabilité pour qu'un mouton un bébé et soit rose en même temps est la probabilité la plus petite du jeu." }, new List { "Apparence1", "App2", "App3" }, new ObservableCollection {conseil})); + lm.Add(new Monstre(3, "Cochon", "passif", "Les cochons sont des créatures passives, on les rencontre très fréquemment dans le jeu. Ils laissent tomber du porc cru une fois tué. S'il est frappé par la foudre, il se mettra sur ses deux pattes arrières et deviendras un cochon zombie.", new List{ "La reproduction de cochon peut se faire avec des carottes et des patates crues.", "Il est possible de les monter en leur mettant une selle sur le dos et en les dirigeant grâce à une canne à pêche avec une carotte au bout." }, new List { "Apparence1", "App2", "App3" }, new ObservableCollection {conseil})); + lm.Add(new Monstre(4, "Warden", "BOSS", "Le Warden est un monstre qui a été récemment ajouté au jeu. Il tuera la plupart des joueur en 1 seul coup, c'est pour cela qu'il est considéré comme un boss par la plupart des joueurs..", new List { "Le warden est aveugle mais il entend tous les bruit autour de lui.", "Il apparait dans une caverne spécial appeler Deep Dark (les abîmes en français) quand on y marche en faisant trop de bruit.", "Il s'agit du seul monstre qui ai une animation d'apparation, il sort du sol.", "Lorsque l'on fait trop de bruit grâce à un bloc spécial, le Sculk Hurleur, ce bloc détecte tous bruit et les envoient au Warden qui sortira du sol s'il y a trop de bruit", "Il est capable de tirer des rayon laser à l'endroit d'où proviennes les bruits qu'il entend.", "Il est capable de se baisser pour nous poursuivre dans des endroits petit." }, new List { "Une seul apparence pour lui" }, new ObservableCollection { })); + lm.Add(new Monstre(5, "EnderDragon", "BOSS", "L'Ender Dragon est le premier boss ajouté à Minecraft. Il est présent dans le monde de l'End et le seul moyen de quitter cette dimension est de le vaincre.", new List { "L'Ender Dragon est le boss de fin de minecraft.", "Il est capable de se régénérer grâce à aux cristaux présent dans sa dimensions. Pour le vaincre, il faut donc tout les détruire.", "Il y a qu'un seul et unique Ender Dragon, aucun autre apparaît sauf s'il est invoqué à nouveaux.", "Le seul moyen de ressusciter le Dragon est de poser 4 Cristal de l'End sur le portail qui permet de revenir dans le monde normal. Ainsi, il sera ressuscité et vous pourrez le vaincre à nouveau.x", "À sa mort, l'Ender Dragon laisse son œuf, il est purement décoratif, mais il n'y en a qu'un seul qui apparaît même après l'avoir vaincu plusieurs fois.", "Si l'Ender Dragon se retrouve dans l'Overworld (le monde normal) grâce à des commandes, chaque bloc qu'il touchera disparaîtra." }, new List { "Une seul apparence pour lui" }, new ObservableCollection { })); + lm.Add(new Monstre(6, "Wither", "BOSS", "Le Wither est un boss extrêmement agressive, en effet non seulement il s'attaque au joueur mais également aux animaux et même à certains monstres.", new List { "Grâce à ses trois têtes, il est capable d'attaquer simultanément trois cibles différentes en leur lançant ses têtes qui repoussent instantanément.", "Le Wither n'apparaît pas naturellement, il faut le créer. Pour ce faire, il faut faire un T avec 4 blocks de sable des âmes et trois têtes de wither squelette.", "Les têtes du Wither, si elles vous touchent, vous aurez l'effet wither, cet effet est comparable au poison, mais il peut tuer.", "Il est le seul boss pouvant casser l'obsidienne, le deuxième block le plus dur du jeu." }, new List { "Apparence de chargement", "Apparence d'attaque", "Apparence mid life" }, new ObservableCollection { })); + lm.Add(new Monstre(7, "Vache", "passif", "Les vaches sont des créatures passives. Elles fournissent du cuir et de la viande. Il est aussi possible de récupérer du lait avec un seau vide. La vache à une variante qui se nomme, la Champivache, il s'agit d'une vache qui apparaît seulement dans un biome spécial.", new List { "Les vaches apparaissent par groupe de quatre minimums.", "Le lait des vaches enlève tous les effets de potion que vous aurez", "Les champivaches apparaissent seulement dans les biomes champignons. Il s'agit du biome le plus rare du jeu, il est composé d'une terre unique et de champignons.", " Les vaches champignon ont elles aussi une variante, la champivache marron.", "La champivache marron le devient lorsqu'une champivache ce fait frapper pas la foudre.", "Grâce à un bol, il est possible de récupérer de soupes de champivache sur les champivache." }, new List { "Vache de base", "vache champignon" }, new ObservableCollection { })); + lm.Add(new Monstre(8, "Loup", "passif", "Les loups sont des créatures que l'on peut rencontrer dans les forêts. Ils sont neutres et pourront soit devenir enragés si vous les attaquez, soit devenir votre allié si vous l'apprivoisez.", new List { "Pour apprivoiser un loup il vous faudrat quelques os.", "Ils peuvent vous aidez à chasser des animaux ou des monstres car ils attaquent tous ce que vous attaquez et qui vous attaque.", "Pour leur redonner de la vie, il faut leur donner de la viande. Peut importe le type, ils mangent tous." }, new List { "Apparence nature", "Apparence méchant", "Apparence apprivoisé" }, new ObservableCollection { })); + lm.Add(new Monstre(9, "Chat", "passif", "Les chats sont des animaux de compagnie. On les trouve dans les villages. Ils peuvent prendre 11 apparences différentes. Une fois adoptés grâce à du poisson, ils vous suivront partout à moins que vous leur disiez de ne plus bouger.", new List { "Les chats ont la particularité d'effrayer les creepers", "Ils chassent aussi les lapins, qu'ils tuent pour vous ainsi que les bébés tortues.", "Les chats apprivoisés iront directement sur votre lit si vous en possédez un à proximité. Au réveil, ils peuvent parfois vous faire un cadeau (un objet aléatoire).", "Si un chat apparaît près d'une cabane à sorcière ou à proximité d'une sorcière, il sera automatiquement noir." }, new List { "apparence au pif", "apparence noir" }, new ObservableCollection { })); + lm.Add(new Monstre(10, "Zombie", "hostile", "Les zombies sont des monstres lents mais qui peuvent voir les joueurs de très loin. Le seul moyen pour un zombie de faire des dégâts est de frapper à la main le joueur. Il a un cousin qui qui vit seulement dans le desert, le Husk, s'il vous attrape vous aurez l'effet de faim pendant 30sec.", new List { "Les zombies attaquent naturellement les villageois, un villageois attaqué par un zombie mourra et se réincarnera en zombie villageois.", "Le seul moyens de sauver un zombie villageois est de lui lancé une potion de faiblesse et de lui donner un pomme d'or.", "Entouré le zombie villageois de barreaux de fer accélèrera le processus.", "Les zombies peuvent avoir des enfants. Les bébés zombies sont très rapide et diffice à atteindre par leurs petites tailles."}, new List { "Zobmie", "zombie villageois", " bébé zombie" }, new ObservableCollection { })); + lm.Add(new Monstre(11, "Squelette", "hostile", "Les squelettes sont des créatures hostiles. Ils sont des ennemis rapides qui tirent des flèches sur les joueurs. Il existe une variante au squelette classique, le Vagabond. Le vagabond est un squelette qui apparaît uniquement dans les biomes froids. Comme les squelettes classiques, ils apparaissent uniquement la nuit ou dans les endroits sombres.", new List { "Au contact de la lumière du soleil, ils prennent feu et finissent par mourir de leurs brûlures. Il peut arriver que des araignées apparaissent avec un squelette sur leur dos, on les appelle les Araignées Jockey.", "Le vagabond lance des flèches qui donnent l'effet lenteur aux joueurs." }, new List { "basique", "spider jokey" }, new ObservableCollection { })); + lm.Add(new Monstre(12, "Creeper", "hostile", "Le creeper est une créature verte, pratiquement silencieuse, insidieuse et kamikaze. Une fois qu'il s'est assez rapproché du joueur, le creeper laissera échapper un sifflement sonore et explosera après un à deux secondes. Lorsqu'ils sont frappés par la foudre, les creepers se chargent et se transforment en creeper chargé.", new List { "Il est également possible d'activer l'explosion des creepers manuellement en utilisant un briquet sur eux.", "Les creepers sont silencieux quand ils ne bougent pas et ne prennent pas feu quand ils sont exposé à la lumière du jour. En revanche, ils n'apparaissent que dans des endroits sombres (cavernes ou la nuit).", "Lorsqu'un creeper est tué par un squelette, il laissera tomber un disque.", "Lorsqu'un crepper chargé tue un monstre en explosant, le monstre tué par l'explosion laisseront tomber leurs têtes. De même pour les joueurs." }, new List { "apparence de base" }, new ObservableCollection { })); + lm.Add(new Monstre(13, "Phantom", "hostile", "Les phantoms sont des monstres volants en haute altitude, ils apparaissent uniquement la nuit et au dessus des joueurs n'ayant pas domit depuis au 3 jours.", new List { "Si le joueur fatigué est en extérieur durant la nuit les phantoms apparaissent par groupe de 1 à 4 à 20 blocks de haut.", "Plus les joueurs passent de temps sans dormir, et plus il y a de chances que des phantoms apparaissent en nombre.", "Ils attaquent en faisant un piqué sur le joueur avant de remonter en altitude.", "Le seul moyen d'empêcher leur apparition, est de dormir ou de mourir, ainsi le compteur de fatigue se remettra à zéro." }, new List{"Apparence 1"}, new ObservableCollection { })); + lm.Add(new Monstre(14, "Enderman", "hostile", "L'Enderman est un monstre assez rre dans le monde normal. C'est un mob qui à la possibilité de prendre et de déplacer des blocs.", new List { "Ils ne vous attaqueront pas sauf si vous les regardez directement dans les yeux, ils se téléporteront alors derrière vous et deviendrons extrêmement hostiles.", "L'eau (et donc la pluie) est leur ennemie, en effet au contact de celle-ci, ils perdront de la vie, c'est pourquoi ils se téléporteront instantanément.", "Les Endermans sont omniprésents dans le monde de l'End.", "Comme la plupart des monstres, les Endermans apparaissent seulement dans les endroits sombres." }, new List { "apparence 1", "apparence avec un bloc" }, new ObservableCollection { })); + lm.Add(new Monstre(15, "Slime", "hostile", "Les slimes sont des cubes verts translucides. Ils peuvent être répertoriés dans 3 tailles : Grand, moyen et petit.", new List { "Les slimes peuvent apparaitre à la fois dans des zones éclairées et sombres, mais uniquement dans les couches les plus profondes et dans des endroit plat.", "Ils apparaissent généralement dans de grandes cavernes ou des mines à ciel ouvert, puisqu'ils ont besoin de place.", "Si vous tuez un Gros slime, il peut se diviser en deux, trois ou quatre slime de taille plus petite."}, new List { "Apparencegrand", "apparence petit"}, new ObservableCollection { })); + lm.Add(new Monstre(16, "Araignee", "hostile", "Les araignées sont agressives au cours de la nuit ou dans l'obscurité, on les reconnait à leurs yeux qui brillent en rouge.", new List { "Elles sont rapide et sont caapble de grimper aux murs.", "Lorsqu'elles poursuivent le joueur pendant la nuit, elles continueront à les chasser durant la journée.", "En journée, elles ne vous attaqeuront pas à moins d'être provoquées", "Il peut arriver que des araignées apparaissent avec un squelette sur leurs dos, on les appelle les Araignées Jockey." }, new List { "une seule apparence" }, new ObservableCollection { })); return lm; } diff --git a/Sources/Persistance/LoaderXML.cs b/Sources/Persistance/LoaderXML.cs index c380c4c..cdb691f 100644 --- a/Sources/Persistance/LoaderXML.cs +++ b/Sources/Persistance/LoaderXML.cs @@ -22,16 +22,18 @@ namespace Persistance /// public class LoaderXml : IUserDataManager, IMonsterDataManager { - static string path = "../../Utilisateurs"; + static string Dirpath = ""; static string fichierUserXML = "users.xml"; - static string fichierMonstreXML = "monsters.xml"; - + static string fichierMonsterXML = "monsters.xml"; + static string fullPathUser = Path.Combine(Dirpath, fichierUserXML); + static string fullPathMonster = Path.Combine(Dirpath, fichierMonsterXML); + void IMonsterDataManager.saveMonsters(List monstres) { - Directory.SetCurrentDirectory(path); // Setup le chemin d'accès + Directory.SetCurrentDirectory(Dirpath); // Setup le chemin d'accès var serialiserXML = new DataContractSerializer(typeof(List)); XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; // Pour avoir le format xml dans le fichier ( indentation etc... ) - using (TextWriter tw = File.CreateText(Path.Combine(fichierMonstreXML))) + using (TextWriter tw = File.CreateText(Path.Combine(fichierMonsterXML))) { using (XmlWriter writer = XmlWriter.Create(tw, xmlSettings)) { @@ -39,28 +41,28 @@ namespace Persistance } } } - public List loadMonsters() + public ObservableCollection loadMonsters() { - Directory.SetCurrentDirectory(path); - var serialiserXML = new DataContractSerializer(typeof(List)); - List? monsters; + Directory.SetCurrentDirectory(Dirpath); + var serialiserXML = new DataContractSerializer(typeof(ObservableCollection)); + ObservableCollection? monsters; try { - using (Stream s = File.OpenRead(fichierMonstreXML)) + using (Stream s = File.OpenRead(fichierMonsterXML)) { - monsters = serialiserXML.ReadObject(s) as List; + monsters = serialiserXML.ReadObject(s) as ObservableCollection; } } catch (FileNotFoundException e) { throw new FileNotFoundException("The XML file used to load a list of monsters is missing.", e); } if (monsters != null) return monsters; // ça va faire un code smells - return new List { }; + return new ObservableCollection { }; } // Serialisation / Deserialisation de Users void IUserDataManager.saveUsers(List users)// Serialise correctement juste voir comment l'appelé en fonction de IUserDataManager { - Directory.SetCurrentDirectory(path); + Directory.SetCurrentDirectory(Dirpath); var serialiserXML = new DataContractSerializer(typeof(List)); XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(fichierUserXML)) @@ -73,7 +75,7 @@ namespace Persistance } public List loadUsers() { - Directory.SetCurrentDirectory(path); + Directory.SetCurrentDirectory(Dirpath); var serialiserXML = new DataContractSerializer(typeof(List)); List? users; using (Stream s = File.OpenRead(fichierUserXML)) diff --git a/Sources/Persistance/MonsterManager.cs b/Sources/Persistance/MonsterManager.cs index e9d1a11..7aa6dd3 100644 --- a/Sources/Persistance/MonsterManager.cs +++ b/Sources/Persistance/MonsterManager.cs @@ -1,6 +1,7 @@ using Model; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,8 +12,8 @@ namespace Persistance { public IMonsterDataManager Pers { get; set; } - private List monsters = null!; - public List ListMonsters + private ObservableCollection monsters = null!; + public ObservableCollection ListMonsters { get { @@ -28,7 +29,7 @@ namespace Persistance Pers.saveMonsters(monstres); } - List IMonsterDataManager.loadMonsters() + ObservableCollection IMonsterDataManager.loadMonsters() { return Pers.loadMonsters(); } diff --git a/Sources/Persistance/UserManager.cs b/Sources/Persistance/UserManager.cs index 6bd034c..fa74e3b 100644 --- a/Sources/Persistance/UserManager.cs +++ b/Sources/Persistance/UserManager.cs @@ -92,7 +92,8 @@ namespace Persistance public UserManager(IUserDataManager dataMngr) { Pers = dataMngr; - ListUsers = new LoaderStub().loadUsers(); //CHOIX ICI DE LA METHODE DE CHARGEMENT INITIAL DES UTILISATEURS + ListUsers = new LoaderStub().loadUsers(); + //ListUsers = dataMngr.loadUsers(); //CHOIX ICI DE LA METHODE DE CHARGEMENT INITIAL DES UTILISATEURS } } } diff --git a/Sources/Tests/Monstres_UT.cs b/Sources/Tests/Monstres_UT.cs index 5b75bd4..417b743 100644 --- a/Sources/Tests/Monstres_UT.cs +++ b/Sources/Tests/Monstres_UT.cs @@ -1,5 +1,5 @@ using Model; - +using System.Collections.ObjectModel; namespace Tests @@ -9,7 +9,7 @@ namespace Tests [Fact] public void TestFullConstructor() { - Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List { "Carac 1", "Carac 2", "Carac 3" }, new List { "App 1", "App 2", "App 3" }, new List()); + Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List { "Carac 1", "Carac 2", "Carac 3" }, new List { "App 1", "App 2", "App 3" }, new ObservableCollection()); User usetUT = new User("pseudo", "nom", "prenom", "mdp", new List()); Conseil conseilUT = new Conseil(usetUT, "conseil de fou furieux", a); Assert.NotNull(a); @@ -23,10 +23,10 @@ namespace Tests [Fact] public void TestVoidConstructor() { - Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List { "Carac 1", "Carac 2", "Carac 3" }, new List { "App 1", "App 2", "App 3" }, new List()); + Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List { "Carac 1", "Carac 2", "Carac 3" }, new List { "App 1", "App 2", "App 3" }, new ObservableCollection()); User usetUT = new User("pseudo", "nom", "prenom", "mdp", new List()); Conseil conseilUT = new Conseil(usetUT, "conseil de fou furieux", a); - Assert.Throws(() => new Monstre(0, "", "", "", new List { "" }, new List { "" }, new List {conseilUT})); + Assert.Throws(() => new Monstre(0, "", "", "", new List { "" }, new List { "" }, new ObservableCollection {conseilUT})); } } } \ No newline at end of file diff --git a/Sources/Vues/App.xaml.cs b/Sources/Vues/App.xaml.cs index 4e38378..7532517 100644 --- a/Sources/Vues/App.xaml.cs +++ b/Sources/Vues/App.xaml.cs @@ -6,7 +6,7 @@ namespace Vues { public partial class App : Application { - public MonsterManager monsterManager { get; private set; } = new MonsterManager(new LoaderStub()); + public MonsterManager monsterManager { get; private set; } = new MonsterManager(new LoaderXml()); public UserManager userManager { get; private set; } = new UserManager(new LoaderXml()); private User user; diff --git a/Sources/Vues/Inscription.xaml b/Sources/Vues/Inscription.xaml index d637287..8f467b4 100644 --- a/Sources/Vues/Inscription.xaml +++ b/Sources/Vues/Inscription.xaml @@ -57,15 +57,19 @@ Source="inscription.png" HeightRequest="70" Margin="0, 0, 0, 30" /> - - + - - + + + +