1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| /// <summary>
/// Réaction à la construction de la fenêtre
/// </summary>
/// <param name="sender">Fenêtre construite</param>
/// <param name="e">Evènement</param>
private void Window_Loaded(object sender, RoutedEventArgs r)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (o, ea) =>
{
Createur_Partie createur = new Createur_Partie();
createur.construirePartie(_joueurs, _grande);
_partie = createur._monteur._partie;
affichageMap();
};
worker.RunWorkerCompleted += (o, ea) =>
{
busyIndicator.IsBusy = false;
//On met à jour les informations sur les joueurs dans la partie de droite de la fenêtre
//updateInfoJoueurs();
//On ajoute un observateur à notre partie
// _partie.PropertyChanged += new PropertyChangedEventHandler(changement_partie);
//_partie.debut();
};
worker.RunWorkerAsync();
}
private void affichageMap()
{
Carte map = _partie._carte;
for (int c = 0; c < map._largeur; c++)
{
Dispatcher.Invoke((Action)(() => mapGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(50, GridUnitType.Pixel) })));
}
Console.WriteLine(10);
for (int l = 0; l < map._hauteur; l++)
{
Dispatcher.Invoke((Action)(() => mapGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(50, GridUnitType.Pixel) })));
for (int c = 0; c < map._largeur; c++)
{
Rectangle r = null;
//On crée un rectangle pour case représentant les ressources
r = createCase(c, l, map.getCase(c, l));
Dispatcher.Invoke((Action)(() => mapGrid.Children.Add(r)));
//On crée une ellipse donnant une information rapide sur le nombre de troupes situé sur la case
Dispatcher.Invoke((Action)(() => mapGrid.Children.Add(createEllipseUnite(c, l, r))));
foreach (Unite u in map.getCase(c, l).Unites)
{
Dispatcher.Invoke((Action)(() => mapGrid.Children.Add(affichageUnite(u, u.getType()))));
}
}
}
}
private Rectangle createCase(int c, int l, Case ca)
{
var rectangle = new Rectangle();
rectangle.Fill = selectionCaseImage(ca);
rectangle.StrokeThickness = 3;
rectangle.Tag = ca;
//Le rectangle est un observateur de la case
ca.PropertyChanged += new PropertyChangedEventHandler(changement_case);
//Placement du rectangle à la bonne position
Grid.SetColumn(rectangle, c);
Grid.SetRow(rectangle, l);
//Ajout d'un listener de clique gauche
rectangle.MouseLeftButtonDown += new MouseButtonEventHandler(clique_sur_une_case);
return rectangle;
} |
Partager