/// <summary> /// 構築 /// </summary> /// <param name="kind">結果種別</param> /// <param name="pitchingBallData">投球データ</param> /// <param name="battedBoll">打球</param> public PitchingBollResult(PitchingBollResultKind kind, PitchingBallData pitchingBallData, BattedBoll battedBoll) { PitchingBollResultKind = kind; PitchingBallData = pitchingBallData; BattedBoll = battedBoll; // 打球はnullで呼び出されることがあるため、nullの場合はインスタンスのみ作成しておく(NullException回避) if (BattedBoll == null) { BattedBoll = new BattedBoll(); } }
/// <summary> /// カウントの更新 /// </summary> /// <param name="kind">投球結果</param> private void UpdateCount(PitchingBollResultKind kind) { switch (kind) { case PitchingBollResultKind.SwingMiss: case PitchingBollResultKind.NoSwingStrike: case PitchingBollResultKind.ThreeBuntFail: GameData.StrikeCount++; if (GameData.StrikeCount >= 3) { // 三振の場合はアウトカウントを加算 GameData.AddOutCount(); GameData.LatestBattingResult = BattingResultKind.StrikeOut; } break; case PitchingBollResultKind.Boll: GameData.BallCount++; if (GameData.BallCount >= 4) { // 四球による出塁 PassByFourBollOrDeadBoll(); GameData.LatestBattingResult = BattingResultKind.FourBoll; } break; case PitchingBollResultKind.DeadBoll: // 死球による出塁 GameData.BallCount++; PassByFourBollOrDeadBoll(); GameData.LatestBattingResult = BattingResultKind.DeadBoll; break; case PitchingBollResultKind.BattingBoll: throw new Exception("PitchingBollResultKind.BattingBollはここに来ない"); default: throw new Exception("不明な投球結果種別"); } // カウントの更新イベント if (UpdatedCount != null) { UpdatedCount(); } }