예제 #1
0
 public SubstitutionsEditorVM()
 {
     SaveCommand = new AsyncCommand(Save);
     TeamTagger  = new LMTeamTaggerVM();
     TeamTagger.ShowSubstitutionButtons = false;
     InPlayer  = new LMPlayerVM();
     OutPlayer = new LMPlayerVM();
 }
예제 #2
0
 /// <summary>
 /// Method to click a LMPlayerVM
 /// </summary>
 /// <param name="player">Player.</param>
 /// <param name="modifier">Modifier.</param>
 public void PlayerClick(LMPlayerVM player, ButtonModifier modifier)
 {
     App.Current.EventsBroker.Publish(new TagPlayerEvent {
         Player   = player,
         Team     = GetTeam(player),
         Modifier = modifier,
         Sender   = player
     });
 }
        public async Task ClickPlayer_FirstHomePlayer_PlayerTagged()
        {
            // Arrange
            await SetUpState();

            LMPlayerVM clickedPlayer = (LMPlayerVM)viewModel.TeamTagger.HomeTeam.First();

            // Act
            viewModel.TeamTagger.PlayerClick(clickedPlayer, ButtonModifier.None);

            // Assert
            Assert.AreEqual(1, viewModel.TeamTagger.HomeTeam.Selection.Count());
            Assert.AreEqual(clickedPlayer, viewModel.TeamTagger.HomeTeam.Selection.First());
            Assert.IsTrue(clickedPlayer.Tagged);
        }
        public async Task ClickPlayer_AlreadyTagged_PlayerUntagged()
        {
            // Arrange
            await SetUpState();

            LMPlayerVM clickedPlayer = (LMPlayerVM)viewModel.TeamTagger.HomeTeam.First();

            viewModel.TeamTagger.PlayerClick(clickedPlayer, ButtonModifier.None);

            // Act
            viewModel.TeamTagger.PlayerClick(clickedPlayer, ButtonModifier.None);

            // Assert
            Assert.IsFalse(viewModel.TeamTagger.HomeTeam.Selection.Any());
            Assert.IsFalse(clickedPlayer.Tagged);
        }
예제 #5
0
 LMTeamVM GetTeam(LMPlayerVM player)
 {
     if (HomeTeam != null)
     {
         if (HomeTeam.ViewModels.Contains(player))
         {
             return(HomeTeam);
         }
     }
     if (AwayTeam != null)
     {
         if (AwayTeam.ViewModels.Contains(player))
         {
             return(AwayTeam);
         }
     }
     return(null);
 }
 void EmitSubstitutionEvent(LMPlayerVM player1, LMPlayerVM player2, LMTeamVM team)
 {
     if (isAnalysis)
     {
         SubstitutionReason reason;
         var player1Model = player1.Model;
         var player2Model = player2.Model;
         if (team.BenchPlayersList.Contains(player1) && team.BenchPlayersList.Contains(player2))
         {
             reason = SubstitutionReason.BenchPositionChange;
         }
         else if (!team.BenchPlayersList.Contains(player1) && !team.BenchPlayersList.Contains(player2))
         {
             reason = SubstitutionReason.PositionChange;
         }
         else if (team.BenchPlayersList.Contains(player1))
         {
             reason = SubstitutionReason.PlayersSubstitution;
         }
         else
         {
             player1Model = player2.Model;
             player2Model = player1.Model;
             reason       = SubstitutionReason.PlayersSubstitution;
         }
         App.Current.EventsBroker.Publish(new PlayerSubstitutionEvent {
             Team               = team.Model,
             Player1            = player1Model,
             Player2            = player2Model,
             SubstitutionReason = reason,
             Time               = teamTagger.CurrentTime
         });
         UpdateLineup();
     }
     else
     {
         team.SubViewModel.ViewModels.Swap(player1, player2);
         ChangeLineUp(team);
     }
     ClearSelection();
 }
예제 #7
0
        void SwitchPlayers()
        {
            LMPlayerVM inOutPlayer = null;

            if (substitutionEditor.InPlayer.Tagged)
            {
                inOutPlayer = substitutionEditor.InPlayer;
            }
            else if (substitutionEditor.OutPlayer.Tagged)
            {
                inOutPlayer = substitutionEditor.OutPlayer;
            }

            if (inOutPlayer != null && taggedPlayer != null)
            {
                inOutPlayer.Tagged  = false;
                taggedPlayer.Tagged = false;
                inOutPlayer.Model   = taggedPlayer.Model;
                taggedPlayer        = null;
            }
        }
예제 #8
0
 void HandleViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (!substitutionEditor.LineupMode)
     {
         if (e.PropertyName == "Tagged")
         {
             var player = sender as LMPlayerVM;
             if (player != null)
             {
                 if (player.Tagged)
                 {
                     if (player == substitutionEditor.InPlayer)
                     {
                         substitutionEditor.OutPlayer.Tagged = false;
                     }
                     else if (player == substitutionEditor.OutPlayer)
                     {
                         substitutionEditor.InPlayer.Tagged = false;
                     }
                     else
                     {
                         taggedPlayer = player;
                     }
                     SwitchPlayers();
                 }
                 else
                 {
                     if (player == taggedPlayer)
                     {
                         taggedPlayer = null;
                     }
                 }
             }
         }
     }
 }