public static string InfieldShiftTypeToString(InfieldShiftType shift)
        {
            switch (shift)
            {
            case InfieldShiftType.InfieldIn:
                return("Infield In");

            default:
                return("None");
            }
        }
コード例 #2
0
        private FieldingResult GetGroundoutResult(Random random, InfieldShiftType infieldShiftType)
        {
            var randomResult = random.Next(0, 100);

            if (randomResult < 15)
            {
                return(infieldShiftType == InfieldShiftType.None ? FieldingResult.GroundoutAllAdvance : FieldingResult.Single);
            }
            if (randomResult < 22)
            {
                return(FieldingResult.GroundoutFieldersChoice);
            }
            if (randomResult < 42)
            {
                return(infieldShiftType == InfieldShiftType.None ? FieldingResult.GroundoutFieldersChoiceForce : FieldingResult.Groundout);
            }
            if (randomResult < 65)
            {
                return(FieldingResult.GroundoutDoublePlay);
            }
            return(FieldingResult.Groundout);
        }
コード例 #3
0
        private FieldingResult GetLineoutResult(Random random, PositionType positionType, InfieldShiftType infieldShiftType)
        {
            if (infieldShiftType == InfieldShiftType.InfieldIn && positionType.IsOutFieldPosition() == false)
            {
                return(FieldingResult.Lineout);
            }

            var randomResult = random.Next(0, 100);

            if (randomResult < 2)
            {
                return(FieldingResult.LineoutMaxOuts);
            }
            if (randomResult < 20)
            {
                return(FieldingResult.LineoutDoublePlay);
            }
            return(FieldingResult.Lineout);
        }
コード例 #4
0
        public FieldingResult GetFieldingResult(FieldingStint fielder, PositionType positionType, InfieldShiftType infieldShiftType, OutfieldShiftType outfieldShiftType)
        {
            // update these for shifts
            // add metrics for range and hits
            var random       = new Random();
            var randomResult = random.Next(0, 1001);

            if (fielder == null)
            {
                fielder = FieldingStintHelperFunctions.CreateFieldingStintForPlayerOutOfPosition(positionType);
            }

            var successThreshold = ((double)fielder.Errors / (fielder.Putouts + fielder.Errors + fielder.Assists)) * 1000;

            if (randomResult <= successThreshold)
            {
                randomResult = random.Next(0, 100);
                if (randomResult < 90)
                {
                    return(FieldingResult.OneBaseError);
                }
                else if (randomResult < 98)
                {
                    return(FieldingResult.TwoBaseError);
                }
                return(FieldingResult.ThreeBaseError);
            }
            randomResult = random.Next(0, 100);
            if (randomResult < 65)
            {
                if (positionType == PositionType.CenterFielder || positionType == PositionType.LeftFielder ||
                    positionType == PositionType.RightFielder || positionType == PositionType.OutFielder)
                {
                    return(GetFlyoutResult(random, outfieldShiftType));
                }
                return(GetGroundoutResult(random, infieldShiftType));
            }
            if (randomResult < 80)
            {
                if (positionType == PositionType.CenterFielder || positionType == PositionType.LeftFielder ||
                    positionType == PositionType.RightFielder || positionType == PositionType.OutFielder)
                {
                    return(GetFlyoutResult(random, outfieldShiftType));
                }
                if (infieldShiftType == InfieldShiftType.InfieldIn)
                {
                    randomResult = random.Next(0, 5);
                    if (randomResult < 2)
                    {
                        return(FieldingResult.Single);
                    }
                }
                return(FieldingResult.Popout);
            }
            if (randomResult < 95)
            {
                return(GetLineoutResult(random, positionType, infieldShiftType));
            }
            return(FieldingResult.Foulout);
        }