Skip to content

Commit e041716

Browse files
committed
Adapted GameResultDisplay for the new vm lib.
It now reacts to GameEndedMessages.
1 parent 4a45f88 commit e041716

1 file changed

Lines changed: 8 additions & 22 deletions

File tree

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
using Codebreaker.ViewModels;
2-
using System.ComponentModel;
2+
using Codebreaker.ViewModels.Messages;
3+
using CommunityToolkit.Mvvm.Messaging;
34

45
namespace CodeBreaker.WinUI.Views.Components;
56

6-
public sealed partial class GameResultDisplay : UserControl
7+
public sealed partial class GameResultDisplay : UserControl, IRecipient<GameEndedMessage>
78
{
89
public GameResultDisplay()
910
{
11+
WeakReferenceMessenger.Default.RegisterAll(this);
12+
WeakReferenceMessenger.Default.UnregisterAllOnUnloaded(this);
1013
InitializeComponent();
1114
this.GoToState("Default", false);
1215
}
@@ -18,25 +21,8 @@ public GamePageViewModel ViewModel
1821
}
1922

2023
public static readonly DependencyProperty ViewModelProperty =
21-
DependencyProperty.Register(nameof(ViewModel), typeof(GamePageViewModel), typeof(GameResultDisplay), new PropertyMetadata(null, OnViewModelChanged));
24+
DependencyProperty.Register(nameof(ViewModel), typeof(GamePageViewModel), typeof(GameResultDisplay), new PropertyMetadata(null));
2225

23-
private static void OnViewModelChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
24-
{
25-
var @this = (GameResultDisplay)d;
26-
@this.ViewModel.PropertyChanged += @this.OnViewModelPropertyChanged;
27-
}
28-
29-
private void OnViewModelPropertyChanged(object? sender, PropertyChangedEventArgs args)
30-
{
31-
if (args.PropertyName != nameof(GamePageViewModel.GameStatus))
32-
return;
33-
34-
var stateName = ViewModel.GameStatus switch
35-
{
36-
GameMode.Won => "Won",
37-
GameMode.Lost => "Lost",
38-
_ => "Default"
39-
};
40-
this.GoToState(stateName);
41-
}
26+
public void Receive(GameEndedMessage message) =>
27+
this.GoToState(message.IsVictory ? "Won" : "Lost");
4228
}

0 commit comments

Comments
 (0)