Inheritance: VeeEntity.Component
Ejemplo n.º 1
0
 public CControl(SPGame mGame, CStats mCStats, CBody mCBody, CMovement mCMovement, CRender mCRender)
 {
     _game      = mGame;
     _cStats    = mCStats;
     _cBody     = mCBody;
     _cMovement = mCMovement;
     _cRender   = mCRender;
 }
Ejemplo n.º 2
0
 public CControl(SPGame mGame, CStats mCStats, CBody mCBody, CMovement mCMovement, CRender mCRender)
 {
     _game = mGame;
     _cStats = mCStats;
     _cBody = mCBody;
     _cMovement = mCMovement;
     _cRender = mCRender;
 }
Ejemplo n.º 3
0
        public CAI(SPGame mGame, CStats mCStats, CBody mCBody, CMovement mCMovement, CRender mCRender,
                   CLineOfSight mCLineOfSight)
        {
            _game = mGame;
            _cStats = mCStats;
            _cBody = mCBody;
            _cLineOfSight = mCLineOfSight;
            _cMovement = mCMovement;
            _cRender = mCRender;

            WaitAmplitude = _cStats.Speed.Total/5f + 50;
            WaitDelayMax = 450 - _cStats.Speed.Total/5 + _cStats.Endurance.Total*5f;
            BulletSpeedBase = 150 + _cStats.Agility.Total*8;
            BulletSpeedMax = 400 + _cStats.Agility.Total*10;
            BulletSpeedIncrease = 25 + _cStats.Agility.Total*3;
            WanderingDirectionDelayMax = 50 - _cStats.Speed.Total/8f;
            WanderingSpeed = _cStats.Speed.Total;
            ChaseSpeed = _cStats.Speed.Total/10f;
            ShootDelayMax = 40 - _cStats.Agility.Total/8f;

            _bulletSpeed = BulletSpeedBase;

            mCBody.OnCollision += (mCollisionInfo) =>
                                  {
                                      var entity = (Entity) mCollisionInfo.UserData;
                                      if (entity.HasTag(Tags.Wall))
                                      {
                                          if (_state == StateWandering && _turnAroundDelay <= 0)
                                          {
                                              _turnAroundDelay = TurnAroundDelayMax;
                                              _currentDirection += 90*Utils.Random.NextSign();
                                          }
                                      }

                                      if (entity.HasTag(Tags.BulletFriendly))
                                      {
                                          _state = StateWait;
                                          var vector = mCollisionInfo.Body.Position - mCollisionInfo.Body.Velocity*5;
                                          _currentDirection =
                                              Utils.Math.Angles.TowardsDegrees(new SSVector2F(_cBody.X, _cBody.Y),
                                                                               new SSVector2F(vector));
                                      }
                                  };
        }
Ejemplo n.º 4
0
        public CAI(SPGame mGame, CStats mCStats, CBody mCBody, CMovement mCMovement, CRender mCRender,
                   CLineOfSight mCLineOfSight)
        {
            _game         = mGame;
            _cStats       = mCStats;
            _cBody        = mCBody;
            _cLineOfSight = mCLineOfSight;
            _cMovement    = mCMovement;
            _cRender      = mCRender;

            WaitAmplitude              = _cStats.Speed.Total / 5f + 50;
            WaitDelayMax               = 450 - _cStats.Speed.Total / 5 + _cStats.Endurance.Total * 5f;
            BulletSpeedBase            = 150 + _cStats.Agility.Total * 8;
            BulletSpeedMax             = 400 + _cStats.Agility.Total * 10;
            BulletSpeedIncrease        = 25 + _cStats.Agility.Total * 3;
            WanderingDirectionDelayMax = 50 - _cStats.Speed.Total / 8f;
            WanderingSpeed             = _cStats.Speed.Total;
            ChaseSpeed    = _cStats.Speed.Total / 10f;
            ShootDelayMax = 40 - _cStats.Agility.Total / 8f;

            _bulletSpeed = BulletSpeedBase;

            mCBody.OnCollision += (mCollisionInfo) =>
            {
                var entity = (Entity)mCollisionInfo.UserData;
                if (entity.HasTag(Tags.Wall))
                {
                    if (_state == StateWandering && _turnAroundDelay <= 0)
                    {
                        _turnAroundDelay   = TurnAroundDelayMax;
                        _currentDirection += 90 * Utils.Random.NextSign();
                    }
                }

                if (entity.HasTag(Tags.BulletFriendly))
                {
                    _state = StateWait;
                    var vector = mCollisionInfo.Body.Position - mCollisionInfo.Body.Velocity * 5;
                    _currentDirection =
                        Utils.Math.Angles.TowardsDegrees(new SSVector2F(_cBody.X, _cBody.Y),
                                                         new SSVector2F(vector));
                }
            };
        }
Ejemplo n.º 5
0
 private CControl Control(CBody mCBody, CStats mCStats, CMovement mCMovement, CRender mCRender)
 {
     return new CControl(_game, mCStats, mCBody, mCMovement, mCRender);
 }
Ejemplo n.º 6
0
 private CAI AI(CStats mCStats, CBody mCBody, CMovement mCMovement, CRender mCRender, CLineOfSight mCLineOfSight)
 {
     return new CAI(_game, mCStats, mCBody, mCMovement, mCRender, mCLineOfSight);
 }