Exemplo n.º 1
0
        /// <summary>
        /// 対戦者を更新します。
        /// </summary>
        /// <param name="playerClassification">選手区分。</param>
        /// <param name="entryNumber">エントリー番号。</param>
        /// <param name="seedNumber">シード番号。</param>
        /// <param name="teamCodes">団体登録番号一覧。</param>
        /// <param name="teamAbbreviatedNames">団体名略称一覧。</param>
        /// <param name="playerCodes">登録番号一覧。</param>
        /// <param name="playerNames">氏名一覧。</param>
        /// <param name="fromGameNumber">一つ前の試合番号。</param>
        /// <param name="isManuallyAssigned">手動で割り当てフラグ。</param>
        public void UpdateOpponent(
            PlayerClassification playerClassification,
            EntryNumber entryNumber,
            SeedNumber seedNumber,
            TeamCodes teamCodes,
            TeamAbbreviatedNames teamAbbreviatedNames,
            PlayerCodes playerCodes,
            PlayerNames playerNames,
            GameNumber fromGameNumber = null,
            bool isManuallyAssigned   = false)
        {
            this.PlayerClassification = playerClassification;
            this.EntryNumber          = entryNumber;
            this.SeedNumber           = seedNumber;
            this.TeamCodes            = teamCodes;
            this.TeamAbbreviatedNames = teamAbbreviatedNames;
            this.PlayerCodes          = playerCodes;
            this.PlayerNames          = playerNames;
            this.FromGameNumber       = fromGameNumber;
            this.IsManuallyAssigned   = isManuallyAssigned;

            if (this.Game != null && this.Game.Opponents.Count(o => o.IsAssigned) == Game.maxOpponentsCount)
            {
                this.Game.GameResult.Ready();
            }
        }
Exemplo n.º 2
0
        private Game AddNextGameIfNotExists(RoundNumber roundNumber, GameNumber nextGameNumber)
        {
            var nextGame = this.Games
                           .Where(o => o.GameNumber == nextGameNumber)
                           .FirstOrDefault();

            if (nextGame == null)
            {
                nextGame = new Game(nextGameNumber, roundNumber, this.DrawSettings);

                var opponent = new Opponent(drawNumber: new DrawNumber(1), seedLevel: null, assignOrder: null);
                opponent.UpdateBlockNumber(this.BlockNumber);
                opponent.UpdateGameNumber(nextGameNumber);
                nextGame.AssignOpponent(opponent);

                opponent = new Opponent(drawNumber: new DrawNumber(2), seedLevel: null, assignOrder: null);
                opponent.UpdateBlockNumber(this.BlockNumber);
                opponent.UpdateGameNumber(nextGameNumber);
                nextGame.AssignOpponent(opponent);

                this.Games.Add(nextGame);
            }

            return(nextGame);
        }
Exemplo n.º 3
0
 private Opponent(
     BlockNumber blockNumber,
     GameNumber gameNumber,
     DrawNumber drawNumber,
     SeedLevel seedLevel,
     AssignOrder assignOrder,
     PlayerClassification playerClassification,
     EntryNumber entryNumber,
     SeedNumber seedNumber,
     TeamCodes teamCodes,
     TeamAbbreviatedNames teamAbbreviatedNames,
     PlayerCodes playerCodes,
     PlayerNames playerNames,
     GameNumber fromGameNumber)
 {
     this.BlockNumber = blockNumber;
     this.GameNumber  = gameNumber;
     this.DrawNumber  = drawNumber;
     this.SeedLevel   = seedLevel;
     this.AssignOrder = assignOrder;
     this.FramePlayerClassification = PlayerClassification.General;
     this.IsManuallySettingFrame    = false;
     this.IsManuallyAssigned        = false;
     this.PlayerClassification      = playerClassification;
     this.EntryNumber          = entryNumber;
     this.SeedNumber           = seedNumber;
     this.TeamCodes            = teamCodes;
     this.TeamAbbreviatedNames = teamAbbreviatedNames;
     this.PlayerCodes          = playerCodes;
     this.PlayerNames          = playerNames;
     this.FromGameNumber       = fromGameNumber;
 }
Exemplo n.º 4
0
 /// <summary>
 /// 試合の新しいインスタンスを生成します。
 /// </summary>
 /// <param name="gameNumber">試合番号。</param>
 /// <param name="roundNumber">ラウンド番号。</param>
 /// <param name="drawSettings">ドロー設定。</param>
 public Game(GameNumber gameNumber, RoundNumber roundNumber, DrawSettings drawSettings)
 {
     this.GameNumber   = gameNumber;
     this.RoundNumber  = roundNumber;
     this.DrawSettings = drawSettings;
     this.Opponents    = new Opponents();
     this.GameResult   = new GameResult();
 }
Exemplo n.º 5
0
        /// <summary>
        /// 対戦者を更新します。
        /// </summary>
        /// <param name="playerClassification">選手区分。</param>
        /// <param name="entryNumber">エントリー番号。</param>
        /// <param name="seedNumber">シード番号。</param>
        /// <param name="teamCodes">団体登録番号一覧。</param>
        /// <param name="teamAbbreviatedNames">団体名略称一覧。</param>
        /// <param name="playerCodes">登録番号一覧。</param>
        /// <param name="playerNames">氏名一覧。</param>
        /// <param name="fromGameNumber">一つ前の試合番号。</param>
        /// <param name="drawNumber">割当先のドロー番号。</param>
        public void UpdateOpponent(
            PlayerClassification playerClassification,
            EntryNumber entryNumber,
            SeedNumber seedNumber,
            TeamCodes teamCodes,
            TeamAbbreviatedNames teamAbbreviatedNames,
            PlayerCodes playerCodes,
            PlayerNames playerNames,
            GameNumber fromGameNumber = null,
            DrawNumber drawNumber     = null)
        {
            if (drawNumber == null)
            {
                this.Opponents
                .First(o => !o.IsAssigned)
                .UpdateOpponent(
                    playerClassification,
                    entryNumber,
                    seedNumber,
                    teamCodes,
                    teamAbbreviatedNames,
                    playerCodes,
                    playerNames,
                    fromGameNumber
                    );
            }
            else
            {
                this.Opponents
                .First(o => o.DrawNumber == drawNumber)
                .UpdateOpponent(
                    playerClassification,
                    entryNumber,
                    seedNumber,
                    teamCodes,
                    teamAbbreviatedNames,
                    playerCodes,
                    playerNames,
                    fromGameNumber
                    );
            }

            if (this.Opponents.Count(o => o.IsAssigned) == maxOpponentsCount)
            {
                this.GameResult.Ready();
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 対戦者の割り当てを解除します。
        /// </summary>
        /// <param name="gameNumber">試合番号。</param>
        public void UnassignOpponent(GameNumber gameNumber)
        {
            if (this.IsDone)
            {
                throw new InvalidOperationException("すでに試合結果が入力されているため、選手の割り当てを解除できません。");
            }

            var removeOpponent = this.Opponents.FirstOrDefault(o => o.FromGameNumber == gameNumber);

            removeOpponent?.UpdateOpponent(
                playerClassification: null,
                entryNumber: null,
                seedNumber: null,
                teamCodes: null,
                teamAbbreviatedNames: null,
                playerCodes: null,
                playerNames: null,
                fromGameNumber: null);

            if (this.Opponents.Count(o => o.IsAssigned) < maxOpponentsCount)
            {
                this.GameResult.NotReadied();
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// 試合番号を更新します。
 /// </summary>
 /// <param name="gameNumber">試合番号。</param>
 public void UpdateGameNumber(GameNumber gameNumber)
 {
     this.GameNumber = gameNumber;
 }