/// <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();
            }
        }
Example #2
0
        /// <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();
            }
        }