You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
// Code Behind for PlayerPage
|
|
|
|
public partial class PlayerPage : ContentPage
|
|
{
|
|
public Manager Mgr { get; set; } = new Manager(new Stub());
|
|
|
|
public int PlayerIndex { get; set; } = 0;
|
|
|
|
public RankedPlayer RankedPlayer { get; set; }
|
|
|
|
public PlayerPage()
|
|
{
|
|
Mgr.LoadPlayers();
|
|
|
|
InitializeComponent();
|
|
|
|
RankedPlayer = new RankedPlayer(Mgr.Players.ElementAt(2), Mgr);
|
|
BindingContext = RankedPlayer;
|
|
}
|
|
|
|
public void ButtonClicked(object sender, EventArgs e)
|
|
{
|
|
PlayerIndex++;
|
|
RankedPlayer.Player = Mgr.Players.ElementAt(PlayerIndex); // Source's property changed, not the source itself
|
|
}
|
|
}
|
|
|
|
public class RankedPlayer : INotifyPropertyChanged
|
|
{
|
|
public RankedPlayer(Player player, Manager mgr)
|
|
{
|
|
Mgr = mgr;
|
|
Player = player;
|
|
}
|
|
|
|
private Manager Mgr { get; set; }
|
|
|
|
public Player thePlayer
|
|
{
|
|
get => thePlayer;
|
|
set
|
|
{
|
|
if(value == thePlayer) return;
|
|
thePlayer = value;
|
|
OnPropertyChanged("ThePlayer");
|
|
OnPropertyChanged(nameof(Rank));
|
|
}
|
|
}
|
|
|
|
private Player thePlayer;
|
|
|
|
public int Rank => Mgr.Players.OrderingByDescending(p => p.Points).ToList().IndexOf(Player) + 1;
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
public void OnPropertyChanged(string propertyName)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
}
|
|
|
|
// ===============================
|
|
|
|
// Code behind for Players Page
|
|
|
|
public partial class PlayersPage : ContentPage
|
|
{
|
|
public Manager Mgr { get; set; } = new Manager(new Stub());
|
|
|
|
public PlayersPage()
|
|
{
|
|
Mgr.LoadPlayers();
|
|
|
|
InitializeComponent();
|
|
|
|
BindingContext = Mgr;
|
|
}
|
|
}
|
|
|
|
// =============================== |