/// <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(); } }
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); }
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; }
/// <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(); }
/// <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(); } }
/// <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(); } }
/// <summary> /// 試合番号を更新します。 /// </summary> /// <param name="gameNumber">試合番号。</param> public void UpdateGameNumber(GameNumber gameNumber) { this.GameNumber = gameNumber; }