LE MEILLEUR COMMIT 🎉 Binding Lists fonctionne, conseil en direct (actualisation directe) + ajout de conseil et création (pas terminée) de la classe Apparence

pull/27/head
Yannis DOUMIR FERNANDES 2 years ago
parent 79e1b8ee4c
commit f8f95dc688

@ -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<Monstre> { });
// Création d'un monstre
Monstre monstre = new Monstre(1, "Dragon", "Dangereux", "Un redoutable dragon cracheur de feu.", new List<string>(), new List<string>(), new List<Conseil>());
Monstre monstre = new Monstre(1, "Dragon", "Dangereux", "Un redoutable dragon cracheur de feu.", new List<string>(), new List<string>(), new ObservableCollection<Conseil>());
// Création d'un conseil
Conseil conseil = new Conseil(auteur, "Soyez prudent lors de votre rencontre avec le dragon.", monstre);

@ -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";
}
}
}

@ -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<Conseil> ListConseils { get; set; }
[DataMember(Order = 7, EmitDefaultValue = false)]
public ObservableCollection<Conseil> ListConseils { get; set; }
public string ImageLink { get; init ; }
public string CardLink { get; init; }
public Monstre(int id, string name, string danger, string desc, List<string> characList, List<string> appearList, List<Conseil> conseilList)
public Monstre(int id, string name, string danger, string desc, List<string> characList, List<string> appearList, ObservableCollection<Conseil> conseilList)
{
if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(desc) || string.IsNullOrWhiteSpace(danger))
{

@ -26,7 +26,7 @@ namespace Persistance
"Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.",
new List<string> { "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<string> { "Apparence1", "App2", "App3" }
, new List<Conseil> {}) }));
, new ObservableCollection<Conseil> {}) }));
lu.Add(new User("Yadoumir", "Doumir", "Yannis", "mdp", new List<Monstre> { }));
lu.Add(new User("osuplayer123", "Bonetti", "Martin", "oSu!727", new List<Monstre> { }));
@ -37,24 +37,24 @@ namespace Persistance
{
ObservableCollection<Monstre> lm = new ObservableCollection<Monstre>();
User user = new User("ddd", "ddd", "ddd", "ddd");
Monstre monstre = new Monstre(1, "monstre", "dangereux", "je suis gentil tkt", new List<string> { }, new List<string> { }, new List<Conseil> { });
Monstre monstre = new Monstre(1, "monstre", "dangereux", "je suis gentil tkt", new List<string> { }, new List<string> { }, new ObservableCollection<Conseil>{ });
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<string> { "Quand une poule est tué il y a 3.12% de chance que la poule laisse tomber un oeuf " }, new List<string> { "Apparence1", "App2", "App3" }, new List<Conseil> {conseil}));
lm.Add(new Monstre(2, "Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.", new List<string> { "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<string> { "Apparence1", "App2", "App3" }, new List<Conseil> {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<string>{ "La reproduction de cochon peut se faire avec des carottes et des patates crues."}, new List<string> { "Apparence1", "App2", "App3" }, new List<Conseil> {conseil}));
lm.Add(new Monstre(4, "Warden", "boss", "Je ne vous voit pas mais je sais où vous êtes", new List<string> { "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<string> { "Une seul apparence pour lui" }, new List<Conseil> { }));
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<string> { "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<string> { "Une seul apparence pour lui" }, new List<Conseil> { }));
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<string> { "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<string> { "Apparence de chargement", "Apparence d'attaque", "Apparence mid life" }, new List<Conseil> { }));
lm.Add(new Monstre(7, "Vache", "passif", "Je suis un peu partout dans le monde, mais plus particulièrement dans les plaines.", new List<string> { "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<string> { "Vache de base", "vache champignon" }, new List<Conseil> { }));
lm.Add(new Monstre(8, "Loup", "passif", "Je deviens vite aggressif lorsque l'on m'attaque.", new List<string> { "Les loups peuvent être apprivoisé grâce à des os.", " Une fois apprivoisé" }, new List<string> { "Apparence nature", "Apparence méchant", "Apparence apprivoisé" }, new List<Conseil> { }));
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<string> { "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<string> { "apparence au pif", "apparence noir" }, new List<Conseil> { }));
lm.Add(new Monstre(10, "Zombie", "hostile", "Je peux vous voir de très loin et venir discrètement.", new List<string> { "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<string> { "Zobmie", "zombie villageois", " bébé zombie" }, new List<Conseil> { }));
lm.Add(new Monstre(11, "Squelette", "hostile", "Je suis un sniper d'élite, je ne loupe presque jamais ma cible", new List<string> { "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<string> { "basique", "spider jokey" }, new List<Conseil> { }));
lm.Add(new Monstre(12, "Creeper", "hostile", "J'approche doucement et j'explose.", new List<string> { "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<string> { "apparence de base" }, new List<Conseil> { }));
lm.Add(new Monstre(13, "Phantom", "hostile", "Dormez ou je viendrais", new List<string> { "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<string>{"Apparence 1"}, new List<Conseil> { }));
lm.Add(new Monstre(14, "Enderman", "hostile", "Ne me regardez pas ! ", new List<string> { "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<string> { "apparence 1", "apparence avec un bloc" }, new List<Conseil> { }));
lm.Add(new Monstre(15, "Slime", "hostile", "Je connais le multiclonage !", new List<string> { "Les slimes peuvent apparaître avec des tailles différentes.", "S'il n'est pas trop petit, il se divisera en quatre."}, new List<string> { "Apparencegrand", "apparence petit"}, new List<Conseil> { }));
lm.Add(new Monstre(16, "Araignee", "hostile", " je sais pas quoi mettre mdrrrrr", new List<string> { "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<string> { "une seule apparence" }, new List<Conseil> { }));
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<string> { "Quand une poule est tué il y a 3.12% de chance que la poule laisse tomber un oeuf " }, new List<string> { "Apparence1", "App2", "App3" }, new ObservableCollection<Conseil> {conseil}));
lm.Add(new Monstre(2, "Mouton", "passif", "Je suis présent un peu partout, sauf dnas le desert.", new List<string> { "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<string> { "Apparence1", "App2", "App3" }, new ObservableCollection<Conseil> {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<string>{ "La reproduction de cochon peut se faire avec des carottes et des patates crues."}, new List<string> { "Apparence1", "App2", "App3" }, new ObservableCollection<Conseil> {conseil}));
lm.Add(new Monstre(4, "Warden", "boss", "Je ne vous voit pas mais je sais où vous êtes", new List<string> { "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<string> { "Une seul apparence pour lui" }, new ObservableCollection<Conseil> { }));
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<string> { "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<string> { "Une seul apparence pour lui" }, new ObservableCollection<Conseil> { }));
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<string> { "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<string> { "Apparence de chargement", "Apparence d'attaque", "Apparence mid life" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(7, "Vache", "passif", "Je suis un peu partout dans le monde, mais plus particulièrement dans les plaines.", new List<string> { "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<string> { "Vache de base", "vache champignon" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(8, "Loup", "passif", "Je deviens vite aggressif lorsque l'on m'attaque.", new List<string> { "Les loups peuvent être apprivoisé grâce à des os.", " Une fois apprivoisé" }, new List<string> { "Apparence nature", "Apparence méchant", "Apparence apprivoisé" }, new ObservableCollection<Conseil> { }));
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<string> { "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<string> { "apparence au pif", "apparence noir" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(10, "Zombie", "hostile", "Je peux vous voir de très loin et venir discrètement.", new List<string> { "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<string> { "Zobmie", "zombie villageois", " bébé zombie" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(11, "Squelette", "hostile", "Je suis un sniper d'élite, je ne loupe presque jamais ma cible", new List<string> { "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<string> { "basique", "spider jokey" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(12, "Creeper", "hostile", "J'approche doucement et j'explose.", new List<string> { "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<string> { "apparence de base" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(13, "Phantom", "hostile", "Dormez ou je viendrais", new List<string> { "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<string>{"Apparence 1"}, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(14, "Enderman", "hostile", "Ne me regardez pas ! ", new List<string> { "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<string> { "apparence 1", "apparence avec un bloc" }, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(15, "Slime", "hostile", "Je connais le multiclonage !", new List<string> { "Les slimes peuvent apparaître avec des tailles différentes.", "S'il n'est pas trop petit, il se divisera en quatre."}, new List<string> { "Apparencegrand", "apparence petit"}, new ObservableCollection<Conseil> { }));
lm.Add(new Monstre(16, "Araignee", "hostile", " je sais pas quoi mettre mdrrrrr", new List<string> { "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<string> { "une seule apparence" }, new ObservableCollection<Conseil> { }));
return lm;
}

@ -12,7 +12,6 @@ using static System.Net.Mime.MediaTypeNames;
using System.Runtime.CompilerServices;
using System.Dynamic;
using System.Xml.Linq;
using Microsoft.VisualBasic;
namespace Persistance
{/// <summary>
@ -23,7 +22,7 @@ namespace Persistance
/// </summary>
public class LoaderXml : IUserDataManager, IMonsterDataManager
{
static string Dirpath = "lol"/*FileSystem.Current.AppDataDirectory*/;
static string Dirpath = "";
static string fichierUserXML = "users.xml";
static string fichierMonsterXML = "monsters.xml";
static string fullPathUser = Path.Combine(Dirpath, fichierUserXML);

@ -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<string> { "Carac 1", "Carac 2", "Carac 3" }, new List<string> { "App 1", "App 2", "App 3" }, new List<Conseil>());
Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List<string> { "Carac 1", "Carac 2", "Carac 3" }, new List<string> { "App 1", "App 2", "App 3" }, new ObservableCollection<Conseil>());
User usetUT = new User("pseudo", "nom", "prenom", "mdp", new List<Monstre>());
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<string> { "Carac 1", "Carac 2", "Carac 3" }, new List<string> { "App 1", "App 2", "App 3" }, new List<Conseil>());
Monstre a = new Monstre(0, "Name", "Hostility", "This is my description", new List<string> { "Carac 1", "Carac 2", "Carac 3" }, new List<string> { "App 1", "App 2", "App 3" }, new ObservableCollection<Conseil>());
User usetUT = new User("pseudo", "nom", "prenom", "mdp", new List<Monstre>());
Conseil conseilUT = new Conseil(usetUT, "conseil de fou furieux", a);
Assert.Throws<ArgumentException>(() => new Monstre(0, "", "", "", new List<string> { "" }, new List<string> { "" }, new List<Conseil> {conseilUT}));
Assert.Throws<ArgumentException>(() => new Monstre(0, "", "", "", new List<string> { "" }, new List<string> { "" }, new ObservableCollection<Conseil> {conseilUT}));
}
}
}

@ -89,27 +89,42 @@
<CheckBox Color="Green"/>
</HorizontalStackLayout>
<Border Style="{StaticResource sectionStyle}">
<Label FontSize="Medium" Text="{Binding Description, StringFormat='\{0\}'}"/>
<Label FontSize="Medium" Text="{Binding Description, StringFormat='{0}'}"/>
</Border>
<Border Style="{StaticResource sectionStyle}">
<!-- <Label FontSize="Medium" Style="{Binding Dangerosite,Converter=}" Text="{Binding Dangerosite, StringFormat=Danger : '\{0\}'}"/> Ta ligne qui empêchait de lancer-->
<Border Style="{StaticResource sectionStyle}" HorizontalOptions="Fill">
<Label FontSize="Small" Text="{Binding Dangerosite, StringFormat='Dangerosité : {0}'}"/>
</Border>
<Border Style="{StaticResource sectionStyle}">
<Label FontSize="Medium" Text="{Binding CharacteristicsList, StringFormat='\{0\}'}"/>
<ListView ItemsSource="{Binding CharacteristicsList}" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label FontSize="Medium" Text="{Binding ., StringFormat='{0}'}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Border>
<Border Style="{StaticResource sectionStyle}">
<Label FontSize="Medium" Text="{Binding AppearanceList, StringFormat='\{0\}'}"/>
<ListView ItemsSource="{Binding AppearanceList}" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label FontSize="Medium" Text="{Binding ., StringFormat='{0}'}"/>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Border>
<!-- Conseils -->
<Border Style="{StaticResource sectionStyle}">
<Border Grid.Row="3" Style="{StaticResource sectionStyle}">
<StackLayout>
<Button Text="Ajouter un conseil" Grid.Row="0" Grid.Column="1" Clicked="OnAddConseilClicked" />
<StackLayout x:Name="AddConseilLayout" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" IsVisible="False">
<Editor Placeholder="Texte du conseil" PlaceholderColor="{StaticResource Gray500}"/>
<Editor x:Name="texteConseilEntry" Placeholder="Texte du conseil" PlaceholderColor="{StaticResource Gray500}"/>
<Button Text="Valider" Clicked="OnValiderConseilClicked" />
<Button Text="Annuler" Clicked="OnExitConseilClicked" />
</StackLayout>

@ -34,8 +34,6 @@ public partial class SearchMob : ContentPage
if (addConseilLayout != null)
{
var texteConseilEntry = addConseilLayout.Children[1] as Editor;
// récupère les valeurs des champs pour ajouter un conseil
var texteConseil = texteConseilEntry.Text;

Loading…
Cancel
Save