예제 #1
0
 public static Pursuit GetInstance()
 {
     if (instance == null)
     {
         instance = new Pursuit();
     }
     return(instance);
 }
예제 #2
0
 public void PursuitOn(Transform targetTrans)
 {
     if (!behaviours.Contains(Pursuit.GetInstance()))
     {
         behaviours.Add(Pursuit.GetInstance());
     }
     TargetTrans = targetTrans;
 }
예제 #3
0
 public void PursuitOn(Vector3 targetPos)
 {
     if (!behaviours.Contains(Pursuit.GetInstance()))
     {
         behaviours.Add(Pursuit.GetInstance());
     }
     TargetTrans = null;
     TargetPos   = targetPos;
 }
예제 #4
0
        public MeteoroidAlienform(Ship owner, float lifetime)
            : base(owner, "Sprites/Meteoroid-Alienform.png", Color.Green, lifetime)
        {
            RotateToMomentum = true;
            Momentum         = Vector2.One;
            MaxSpeed         = 9f;

            _pursuit = new Pursuit(this);
            SteeringBehaviors.Add(_pursuit);
        }
예제 #5
0
 public override void Initialize()
 {
     base.Initialize();
     this._ImplementDate       = "";
     this._ResponseDate        = "";
     this._Attachments         = new PursuitAttachments();
     this._CoPursuit           = new Pursuit();
     this._ImplementStatus     = new BasicInfoDetail();
     this._ResponseQualityType = new BasicInfoDetail();
     this._IsFinished          = SbnBoolean.OutOfValue;
 }
예제 #6
0
    protected override void Awake()
    {
        _rb               = GetComponent <Rigidbody>();
        _au               = GetComponent <AudioSource>();
        _vehicle          = GetComponent <Vehicle>();
        _pursuit          = GetComponent <Pursuit>();
        _pursuit.target   = Target.GetComponent <Vehicle>();
        _vehicle.MaxSpeed = 130;

        Transform.Rotation = (float)Math.Atan2(_rb.velocity.X, -_rb.velocity.Y);
    }
        /// <summary>
        /// Occurs every simulation step while the entity is in this state.
        /// </summary>
        public override void Run()
        {
            if (AI.MyTeam.PassReceiver != Player)
            {
                Player.StateMachine.ChangeState(new Default(Player, AI));
                return;
            }

            // lost control
            if (AI.OpponentTeam.PlayerInBallRange != null && AI.MyTeam.PlayerInBallRange == null)
            {
                Player.StateMachine.ChangeState(new Default(Player, AI));
                return;
            }

            if (Player.CanKickBall(AI.Ball))
            {
                Player.StateMachine.ChangeState(new KickBall(Player, AI));
                return;
            }

            if (Vector.GetDistanceBetween(AI.Ball.Position, Player.Position) < Parameters.BallReceivingRange)
            {
                Player.StateMachine.ChangeState(new PursueBall(Player, AI));
                return;
            }

            UpdatePassTarget();

            var nearestOpponent = AI.OpponentTeam.GetNearestPlayerToPosition(Player.Position);
            var ball            = AI.Ball;

            var timeToReceive = ball.GetTimeToCoverDistance(Vector.GetDistanceBetween(ball.Position, PassTarget), ball.CurrentSpeed);

            if (nearestOpponent.GetTimeToGetToTarget(PassTarget) < timeToReceive ||
                Player.GetTimeToGetToTarget(PassTarget) > timeToReceive)
            {
                if (SteeringBehavior is Arrive)
                {
                    Player.SteeringBehaviorsManager.RemoveBehavior(SteeringBehavior);
                    SteeringBehavior = new Pursuit(Player, SteeringBehavior.Priority, SteeringBehavior.Weight, ball);
                    Player.SteeringBehaviorsManager.AddBehavior(SteeringBehavior);
                }
            }
            else
            {
                if (SteeringBehavior is Pursuit)
                {
                    Player.SteeringBehaviorsManager.RemoveBehavior(SteeringBehavior);
                    SteeringBehavior = new Arrive(Player, SteeringBehavior.Priority, SteeringBehavior.Weight, PassTarget);
                    Player.SteeringBehaviorsManager.AddBehavior(SteeringBehavior);
                }
            }
        }
    void Start()
    {
        attack              = GetComponent <EnemyAttack>(); //Asignamos a la variable los scripts antes mencionados
        pursuit             = GetComponent <Pursuit>();
        rb                  = GetComponent <Rigidbody2D>();
        CurrentHealthPoints = EnemyMaxHealthPoints;  //Pone la vida al máximo al empezar
        isFullHealth        = true;

        if (enemyHealthUI)
        {
            enemyHealthUI.SetEnemyMaxHealthUI(EnemyMaxHealthPoints);
        }
    }
        //  Runs when the player enters the blipped area.
        public override void OnStart(Ped player)
        {
            base.OnStart(player);

            //  Attaches a blip to the vehicle.
            vehicle.AttachBlip();

            //  Variables for the driver data and the vehicle data.
            PedData     pedData     = new PedData();
            VehicleData vehicleData = new VehicleData();

            //  Shows a simple subtitle at the bottom of the screen.
            Screen.ShowSubtitle("It looks like the driver is not here, they shouldn't be too far.");

            //  String variables.
            string firstname = pedData.FirstName;
            string lastname  = pedData.LastName;

            //  Sets the driver's driving license to revoked.
            pedData.DriverLicense.LicenseStatus = PedData.License.Status.Expired;

            Utilities.SetPedData(suspect.NetworkId, pedData);

            //  Essentially sets the vehicle to be owned by the driver, as FivePD doesn't do that automatically.
            vehicleData.OwnerFirstName = firstname;
            vehicleData.OwnerLastName  = lastname;

            //  Sets the vehicle to be flagged up on the system - doesn't seem to actually do it though.
            vehicleData.Flag = "Owner has expired driving license";

            //  Push the data we just set to both the driver and the vehicle.
            Utilities.SetVehicleData(vehicle.NetworkId, vehicleData);

            //  40% chance for the suspect to flee using the IPursuit interface.
            int chance = rnd.Next(0, 10);

            //  If the number is between, or equal to, 0 through 3, initiate a pursuit.
            if (chance >= 0 && chance <= 3)
            {
                var pursuit = Pursuit.RegisterPursuit(suspect);
                pursuit.Init(true, 30f, 125f, true);
                pursuit.ActivatePursuit();
                Utilities.ExcludeVehicleFromTrafficStop(vehicle.NetworkId, true);
            }
        }
예제 #10
0
파일: Behaviors.cs 프로젝트: rc183/igf
 /// <summary>
 /// Creates a new instance
 /// </summary>
 public Behaviors()
 {
     Alignment = new Alignment();
     Arrive = new Arrive();
     Cohesion = new Cohesion();
     Evade = new Evade();
     Flee = new Flee();
     Hide = new Hide();
     Interpose = new Interpose();
     ObstacleAvoidance = new ObstacleAvoidance();
     OffsetPursuit = new OffsetPursuit();
     PathFollowing = new PathFollowing();
     Pursuit = new Pursuit();
     Seek = new Seek();
     Separation = new Separation();
     WallAvoidance = new WallAvoidance();
     Wander = new Wander();
 }
예제 #11
0
파일: Behaviors.cs 프로젝트: rc183/igf
 /// <summary>
 /// Creates a new instance
 /// </summary>
 public Behaviors()
 {
     Alignment         = new Alignment();
     Arrive            = new Arrive();
     Cohesion          = new Cohesion();
     Evade             = new Evade();
     Flee              = new Flee();
     Hide              = new Hide();
     Interpose         = new Interpose();
     ObstacleAvoidance = new ObstacleAvoidance();
     OffsetPursuit     = new OffsetPursuit();
     PathFollowing     = new PathFollowing();
     Pursuit           = new Pursuit();
     Seek              = new Seek();
     Separation        = new Separation();
     WallAvoidance     = new WallAvoidance();
     Wander            = new Wander();
 }
예제 #12
0
        public PursuiterMissile(Ship owner, float lifetime)
            : base(owner, "Sprites/Avenger-PursuiterMissile.png", Color.Red, lifetime)
        {
            RotateToMomentum = true;
            Momentum         = Vector2.One;
            MaxSpeed         = 10f;

            _pursuit = new Pursuit(this);
            SteeringBehaviors.Add(_pursuit);

            // Wander, for when the target is not visible.
            _wander = new Wander(this)
            {
                Jitter         = 1.25f,
                WanderDistance = 1f,
                WanderRadius   = 100f,
            };

            SteeringBehaviors.Add(_wander);
        }
예제 #13
0
 protected override void OnEnter()
 {
     _pursuit         = Steering.GetComponent <Pursuit>();
     _pursuit.enabled = true;
     _pursuit.Target  = _target.GetComponent <Rigidbody2D>();
 }
예제 #14
0
 /// <summary>
 /// Occurs when the entity enters to this state.
 /// </summary>
 public override void Enter()
 {
     BallPursuit = new Pursuit(Player, 1, 1.0, AI.Ball);
     Player.SteeringBehaviorsManager.AddBehavior(BallPursuit);
 }
예제 #15
0
 public Proxy(SchoolGirl mm)
 {
     gg = new Pursuit(mm);
 }
예제 #16
0
 public void PursuitOff()
 {
     behaviours.Remove(Pursuit.GetInstance());
 }
예제 #17
0
 public Proxy(Girl mm)
 {
     _mm = new Pursuit(mm);
 }
예제 #18
0
 public Proxy(SchoolGirl girl)
 {
     this._pursuit = new Pursuit(girl);
 }
예제 #19
0
 public Proxy(SchoolGirl mm)
 {
     gg = new Pursuit(mm);
 }
예제 #20
0
 public Proxy(Girl girl)
 {
     pursuer = new Pursuit(girl);
 }