예제 #1
0
        //======================================================================

        public TimedWeaponCtrl(float coolDownTime, float autoFireTime,
                               IWeaponCtrl origin) : base(origin)
        {
            Assert.IsTrue(autoFireTime >= coolDownTime);
            _coolDownTime = coolDownTime;
            _autoFireTime = autoFireTime;
        }
예제 #2
0
        //======================================================================

        /// <summary>
        /// Implements <see cref="CgfGames.IShipCtrl.Equip"/>.
        /// </summary>
        public void Equip(WeaponType type, int ammo)
        {
            if (this.CurrentWeapon.Type != type)
            {
                this.CurrentWeapon = _weapons [(int)type];
            }
            this.CurrentWeapon.Reload(ammo);
        }
예제 #3
0
 /// <summary>
 /// Implements <see cref="CgfGames.IShipCtrl.FireHeld"/>.
 /// </summary>
 public void FireHeld()
 {
     if (this.IsActive)
     {
         if (!this.CurrentWeapon.IsAvailable)
         {
             this.CurrentWeapon = _baseWeapon;
         }
         this.CurrentWeapon.FireHeld();
     }
 }
예제 #4
0
 /// <summary>
 /// Implements <see cref="CgfGames.IShipCtrl.Destroyed"/>.
 /// </summary>
 public void Destroyed()
 {
     this.IsAlive  = false;
     this.IsActive = false;
     // Remove any special weapon.
     this.CurrentWeapon = _baseWeapon;
     // Notify
     this.View.Destroyed();
     if (this.DestroyedEvent != null)
     {
         this.DestroyedEvent();
     }
 }
예제 #5
0
        /// <summary>
        /// Inits the weapons of this ship.
        /// </summary>
        private void InitWeapons()
        {
            _weapons =
                new IWeaponCtrl [Enum.GetNames(typeof(WeaponType)).Length];
            // Instantiate weapons. Composite pattern used here.
            // Base weapon
            _weapons [(int)WeaponType.BASE] = new WeaponCtrl(
                this.View.GetWeapon(WeaponType.BASE)
                );
            // Blue weapon
            _weapons [(int)WeaponType.BLUE] = new TimedWeaponCtrl(
                BLUE_SHOT_TIME,
                BLUE_SHOT_TIME,
                new AmmoWeaponCtrl(
                    new WeaponCtrl(
                        this.View.GetWeapon(WeaponType.BLUE)
                        )
                    )
                );
            // Yellow weapon
            _weapons [(int)WeaponType.YELLOW] = new TimedWeaponCtrl(
                0,
                0,
                new AmmoWeaponCtrl(
                    new WeaponCtrl(
                        this.View.GetWeapon(WeaponType.YELLOW)
                        )
                    )
                );
            // Red weapon
            _weapons [(int)WeaponType.RED] = new TimedWeaponCtrl(
                RED_RAY_TIME,
                RED_RAY_TIME,
                new AmmoWeaponCtrl(
                    new WeaponCtrl(
                        this.View.GetWeapon(WeaponType.RED)
                        )
                    )
                );

            _baseWeapon    = _weapons [(int)WeaponType.BASE];
            _currentWeapon = _baseWeapon;
            _currentWeapon.Equip();
        }
예제 #6
0
        //======================================================================

        public AmmoWeaponCtrl(IWeaponCtrl origin) : base(origin)
        {
        }
예제 #7
0
 public WeaponCtrlWrap(IWeaponCtrl origin)
 {
     this.origin = origin;
 }