Beispiel #1
0
        public bool IncreaseScore(int value)
        {
            if (CanChangeScore())
            {
                Score += value;
                Match.Group.OnMatchScoreIncreased(Match);

                bool groupJustFinished = Match.Group.GetPlayState() == PlayStateEnum.Finished;

                if (groupJustFinished)
                {
                    if (Match.Group.Round.GetPlayState() == PlayStateEnum.Finished)
                    {
                        AdvancingPlayerTransfer advancingPlayerTransfer = new AdvancingPlayerTransfer();
                        advancingPlayerTransfer.TransferToNextRound(Match.Group.Round);
                    }
                }

                MarkAsModified();

                return(true);
            }

            return(false);
        }
Beispiel #2
0
        public void ReceiveTransferedPlayerReferences(AdvancingPlayerTransfer advancingPlayerTransfer)
        {
            int perGroupCount        = advancingPlayerTransfer.PlayerReferences.Count / Groups.Count;
            int playerReferenceIndex = 0;

            foreach (GroupBase group in Groups)
            {
                List <PlayerReference> playerReferences = new List <PlayerReference>();

                for (int perGroupIndex = 0; perGroupIndex < perGroupCount; ++perGroupIndex)
                {
                    PlayerReference playerReference = advancingPlayerTransfer.PlayerReferences[playerReferenceIndex++];
                    playerReferences.Add(playerReference);
                }

                group.AddPlayerReferences(playerReferences);
            }

            MarkAsModified();
        }
Beispiel #3
0
        public bool SolveTieByChoosing(PlayerReference playerReference)
        {
            List <StandingsEntry <PlayerReference> > tyingPlayers = FindProblematiclyTyingPlayers();
            bool hasTyingPlayers = tyingPlayers.Count > 0;

            if (hasTyingPlayers)
            {
                bool playerChosen = ChooseTyingPlayer(playerReference);
                bool tieSolved    = HasSolvedTie();

                if (playerChosen && tieSolved)
                {
                    AdvancingPlayerTransfer advancingPlayerTransfer = new AdvancingPlayerTransfer();
                    advancingPlayerTransfer.TransferToNextRound(Round);
                    return(true);
                }
            }

            return(false);
        }