public bool HasManeuver(ManeuverHolder maneuverStruct)
        {
            string maneuverString = maneuverStruct.ToString();

            return(HasManeuver(maneuverString));
        }
Esempio n. 2
0
        protected virtual List <ManeuverHolder> GetAlternativeManeuvers(GenericMovement maneuver)
        {
            ManeuverHolder movementStruct = new ManeuverHolder
                                            (
                maneuver.ManeuverSpeed,
                maneuver.Direction,
                maneuver.Bearing,
                maneuver.ColorComplexity
                                            );

            if (IsForced)
            {
                if (!failedManeuvers.Contains(movementStruct))
                {
                    failedManeuvers.Add(movementStruct);
                }
            }

            ManeuverHolder alternativeMovementStruct = movementStruct;

            switch (maneuver.Bearing)
            {
            case ManeuverBearing.Straight:
                alternativeMovementStruct.Bearing = ManeuverBearing.Bank;

                alternativeMovementStruct.Direction = ManeuverDirection.Left;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));

                alternativeMovementStruct.Direction = ManeuverDirection.Right;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));
                break;

            case ManeuverBearing.Bank:
                alternativeMovementStruct.Bearing = ManeuverBearing.Turn;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));

                alternativeMovementStruct.Bearing   = ManeuverBearing.Straight;
                alternativeMovementStruct.Direction = ManeuverDirection.Forward;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));
                break;

            case ManeuverBearing.Turn:
                alternativeMovementStruct.Bearing = ManeuverBearing.Bank;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));
                break;

            case ManeuverBearing.KoiogranTurn:
                alternativeMovementStruct.Bearing = ManeuverBearing.Bank;

                alternativeMovementStruct.Direction = ManeuverDirection.Left;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));

                alternativeMovementStruct.Direction = ManeuverDirection.Right;
                alternativeManeuvers.Add(GetSimilarManeuverByStruct(alternativeMovementStruct));
                break;

            default:
                break;
            }

            return(alternativeManeuvers);
        }