//====================================================================== public TimedWeaponCtrl(float coolDownTime, float autoFireTime, IWeaponCtrl origin) : base(origin) { Assert.IsTrue(autoFireTime >= coolDownTime); _coolDownTime = coolDownTime; _autoFireTime = autoFireTime; }
//====================================================================== /// <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); }
/// <summary> /// Implements <see cref="CgfGames.IShipCtrl.FireHeld"/>. /// </summary> public void FireHeld() { if (this.IsActive) { if (!this.CurrentWeapon.IsAvailable) { this.CurrentWeapon = _baseWeapon; } this.CurrentWeapon.FireHeld(); } }
/// <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(); } }
/// <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(); }
//====================================================================== public AmmoWeaponCtrl(IWeaponCtrl origin) : base(origin) { }
public WeaponCtrlWrap(IWeaponCtrl origin) { this.origin = origin; }