Exemplo n.º 1
0
        // constructor
        protected Missile(GameSettings _settings, Point _initialPos, double _speed, Point _targetPos)
        {
            settings  = _settings;
            startPos  = _initialPos;
            targetPos = _targetPos;
            speed     = _speed;

            curPos        = startPos;
            destroyed     = false;
            destroyedType = MissileDestroyedType.None;
            collidable    = true;

            // create trail
            trailShape = CreateTrailShape(_settings, _initialPos);

            // create missile head
            headShape = CreateHeadShape(_settings);

            // update colors of shapes
            UpdateColors();

            // shapes collection
            shapes = new List <Shape>();

            shapes.Add(trailShape);
            shapes.Add(headShape);
        }
Exemplo n.º 2
0
 // method for handling missile being destroyed
 override protected void WasDestroyed(MissileDestroyedType _reason)
 {
     // check reason
     // only generate an explosion on reaching target position
     if (_reason == MissileDestroyedType.ReachedTarget)
     {
         // create in air explosion at current position
         explosion = new Explosion(settings, ExplosionType.InAir, curPos);
     }
 }
Exemplo n.º 3
0
 // method for handling missile being destroyed
 override protected void WasDestroyed(MissileDestroyedType _reason)
 {
     // check reason
     // if none, do nothing
     // if collided
     if (_reason == MissileDestroyedType.Collided)
     {
         // generate in-air explosion at current position
         explosion = new Explosion(settings, ExplosionType.InAir, curPos);
     }
     else if (_reason == MissileDestroyedType.ReachedTarget)
     {
         // tell target it has been impacted
         target.Impacted(this);
         // generate impact explosion at target position
         explosion = new Explosion(settings, ExplosionType.Impact, targetPos);
     }
 }
Exemplo n.º 4
0
        // destroy projectile at current position
        public void SetDestroyed(MissileDestroyedType _reason)
        {
            // check if explosion obj is already available
            if (explosion != null)
            {
                // throw an exception to test for sync issues
                throw new InvalidOperationException("Missile is destroyed already");
            }

            // set destroyed
            destroyed = true;

            destroyedType = _reason;

            // call WasDestroyed with reason
            // will generate explosion obj accordingly
            WasDestroyed(_reason);
        }
Exemplo n.º 5
0
 // abstract method for when the missile is destroyed
 // should handle whatever it needs and create the explosion object
 abstract protected void WasDestroyed(MissileDestroyedType _reason);