Avancée, mais bug de l'ordi ->on doit redémarrer :( 💩

pull/27/head
Yannis DOUMIR FERNANDES 2 years ago
parent 549d8728c0
commit 097da454f0

@ -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<Monstre> monstres);
public List<Monstre> loadMonsters();
public ObservableCollection<Monstre> loadMonsters();
}
}

@ -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<User>));
DataContractJsonSerializer jsonMonsterSerializer = new DataContractJsonSerializer(typeof(List<Monstre>));
MemoryStream memoryStream = new MemoryStream();
List<Monstre> IMonsterDataManager.loadMonsters()
ObservableCollection<Monstre> IMonsterDataManager.loadMonsters()
{
List<Monstre>? monstre2;
ObservableCollection<Monstre>? monstre2;
using (FileStream s2 = File.OpenRead("monsters.json"))
{
monstre2 = jsonMonsterSerializer.ReadObject(s2) as List<Monstre>;
monstre2 = jsonMonsterSerializer.ReadObject(s2) as ObservableCollection<Monstre>;
}
return monstre2;
//throw new NotImplementedException();

@ -5,6 +5,7 @@ using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
namespace Persistance
{
@ -32,9 +33,9 @@ namespace Persistance
return lu;
}
public List<Monstre> loadMonsters() ///SAME
public ObservableCollection<Monstre> loadMonsters() ///SAME
{
List<Monstre> lm = new List<Monstre>();
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> { });
Conseil conseil = new Conseil(user, "Voili voilou", monstre);

@ -12,6 +12,7 @@ using static System.Net.Mime.MediaTypeNames;
using System.Runtime.CompilerServices;
using System.Dynamic;
using System.Xml.Linq;
using Microsoft.VisualBasic;
namespace Persistance
{/// <summary>
@ -22,16 +23,18 @@ namespace Persistance
/// </summary>
public class LoaderXml : IUserDataManager, IMonsterDataManager
{
static string path = "../../Utilisateurs";
static string Dirpath = "lol"/*FileSystem.Current.AppDataDirectory*/;
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<Monstre> 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<Monstre>));
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 +42,28 @@ namespace Persistance
}
}
}
public List<Monstre> loadMonsters()
public ObservableCollection<Monstre> loadMonsters()
{
Directory.SetCurrentDirectory(path);
var serialiserXML = new DataContractSerializer(typeof(List<Monstre>));
List<Monstre>? monsters;
Directory.SetCurrentDirectory(Dirpath);
var serialiserXML = new DataContractSerializer(typeof(ObservableCollection<Monstre>));
ObservableCollection<Monstre>? monsters;
try
{
using (Stream s = File.OpenRead(fichierMonstreXML))
using (Stream s = File.OpenRead(fichierMonsterXML))
{
monsters = serialiserXML.ReadObject(s) as List<Monstre>;
monsters = serialiserXML.ReadObject(s) as ObservableCollection<Monstre>;
}
}
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<Monstre> { };
return new ObservableCollection<Monstre> { };
}
// Serialisation / Deserialisation de Users
void IUserDataManager.saveUsers(List<User> users)// Serialise correctement juste voir comment l'appelé en fonction de IUserDataManager
{
Directory.SetCurrentDirectory(path);
Directory.SetCurrentDirectory(Dirpath);
var serialiserXML = new DataContractSerializer(typeof(List<User>));
XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true };
using (TextWriter tw = File.CreateText(fichierUserXML))
@ -73,7 +76,7 @@ namespace Persistance
}
public List<User> loadUsers()
{
Directory.SetCurrentDirectory(path);
Directory.SetCurrentDirectory(Dirpath);
var serialiserXML = new DataContractSerializer(typeof(List<User>));
List<User>? users;
using (Stream s = File.OpenRead(fichierUserXML))

@ -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<Monstre> monsters = null!;
public List<Monstre> ListMonsters
private ObservableCollection<Monstre> monsters = null!;
public ObservableCollection<Monstre> ListMonsters
{
get
{
@ -28,7 +29,7 @@ namespace Persistance
Pers.saveMonsters(monstres);
}
List<Monstre> IMonsterDataManager.loadMonsters()
ObservableCollection<Monstre> IMonsterDataManager.loadMonsters()
{
return Pers.loadMonsters();
}

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

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

@ -106,33 +106,28 @@
<!-- Conseils -->
<Border Style="{StaticResource sectionStyle}">
<ListView x:Name="ListViewConseils" ItemsSource="{Binding ListConseils}" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Texte}" Grid.Row="0" Grid.Column="0" />
<!-- Bouton d'ajout de conseil -->
<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">
<Entry Placeholder="Pseudo" PlaceholderColor="{StaticResource Gray500}"/>
<Entry Placeholder="Texte du conseil" PlaceholderColor="{StaticResource Gray500}"/>
<!-- Bouton pour valider l'ajout du conseil -->
<Button Text="Valider" Clicked="OnValiderConseilClicked" />
</StackLayout>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<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}"/>
<Button Text="Valider" Clicked="OnValiderConseilClicked" />
<Button Text="Annuler" Clicked="OnExitConseilClicked" />
</StackLayout>
<ListView x:Name="ListViewConseils" ItemsSource="{Binding ListConseils}" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid RowDefinitions="Auto" ColumnDefinitions="Auto, Auto">
<Label Text="{Binding Id}" Grid.Column="0"/>
<Label Text="{Binding Auteur}" Grid.Column="0"/>
<Label Text="{Binding Texte}" Grid.Column="1" />
<!-- Bouton d'ajout de conseil -->
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</Border>
</VerticalStackLayout>
<!-- Image du mob -->

@ -31,29 +31,34 @@ public partial class SearchMob : ContentPage
{
var button = sender as Button;
var addConseilLayout = button?.Parent?.FindByName<StackLayout>("AddConseilLayout");
User user = new User("Moi", "Monchanin", "Liam", "feur", new List<Monstre> { });
if (addConseilLayout != null)
{
var auteurEntry = addConseilLayout.Children[0] as Entry;
var texteConseilEntry = addConseilLayout.Children[1] as Entry;
var texteConseilEntry = addConseilLayout.Children[1] as Editor;
// Récupérer les valeurs des champs pour ajouter un conseil
var auteur = auteurEntry?.Text;
var texteConseil = texteConseilEntry?.Text;
// récupère les valeurs des champs pour ajouter un conseil
var texteConseil = texteConseilEntry.Text;
// Ajouter le nouveau conseil à la liste des conseils du monstre sélectionné
var selectedMonstre = (App.Current as App).MonstreSelectionne;
if (selectedMonstre != null && !string.IsNullOrWhiteSpace(auteur) && !string.IsNullOrWhiteSpace(texteConseil))
if (selectedMonstre != null && !string.IsNullOrWhiteSpace(texteConseil))
{
var nouveauConseil = new Conseil(user, texteConseil, selectedMonstre);
var nouveauConseil = new Conseil((App.Current as App).User, texteConseil, selectedMonstre);
selectedMonstre.ListConseils.Add(nouveauConseil);
}
// Réinitialiser les champs et masquer la section d'ajout de conseil
auteurEntry.Text = string.Empty;
texteConseilEntry.Text = string.Empty;
addConseilLayout.IsVisible = false;
}
}
private void OnExitConseilClicked(object sender, EventArgs e)
{
var button = sender as Button;
var addConseilLayout = button?.Parent?.FindByName<StackLayout>("AddConseilLayout");
var texteConseilEntry = addConseilLayout.Children[1] as Editor;
texteConseilEntry.Text = string.Empty;
addConseilLayout.IsVisible = false;
}
}
Loading…
Cancel
Save