public override void Destroy(PlayerShipViewModel playerShip) { base.Destroy(playerShip); playerShip.IsAlive = false; //it is wrong albeit posssible to call the level manager here (tight coupling) //instead level manager will subscribe to destroy command executed }
public override void ApplyPowerUp(PowerUpBaseViewModel powerUpBase, PlayerShipViewModel arg) { base.ApplyPowerUp(powerUpBase, arg); if (arg.Weapon != null) { arg.Weapon.FireRate += powerUpBase.Modifier; } }
public override void InitializePlayerShip(PlayerShipViewModel playerShip) { playerShip.FireTimeOutElapsed = true; playerShip.ShouldFireProperty.Subscribe(x => ShouldFireChanged(playerShip, x)); //NOT GOOD IDEA ! //SEPARATION OF CONCERNS //LEVEL MANAGER SHOULG DETERMINE IF GAME IS OVER NOT THE PLAYER SHIP //playerShip.Destroy.Subscribe(_ => { playerShip.ParentLevelManager.GameOver = true; }); }
protected override void InitializeViewModel(ViewModel viewModel) { PlayerShipViewModel playerShip = ((PlayerShipViewModel)(viewModel)); playerShip.FireTimeOutElapsed = this._FireTimeOutElapsed; playerShip.AsteroidsDestroyed = this._AsteroidsDestroyed; playerShip.Weapon = this._Weapon == null ? null : this._Weapon.ViewModelObject as BaseWeaponViewModel; playerShip.IsAlive = this._IsAlive; playerShip.MovementSpeed = this._MovementSpeed; }
public override void Restart(PlayerShipViewModel playerShip) { base.Restart(playerShip); playerShip.IsAlive = true; //we should trigger restart function in the weapon not set the property here //and ofcourse check for null //we could have done this for the time that it took to write this text :) playerShip.Weapon.FireRate = 500; playerShip.MovementSpeed = 5; playerShip.AsteroidsDestroyed = 0; }
private void ShouldFireChanged(PlayerShipViewModel playerShip, bool value) { if (value) { playerShip.FireTimeOutElapsed = false; Observable.Timer(TimeSpan.FromMilliseconds(playerShip.Weapon.FireRate)).Subscribe(x => { playerShip.FireTimeOutElapsed = true; }); } }
public override void ApplyPowerUp(PowerUpBaseViewModel powerUpBase, PlayerShipViewModel arg) { base.ApplyPowerUp(powerUpBase, arg); //globally registered instance ! LevelManager.ShowNotification.Execute(powerUpBase.Description); }
public virtual void ExecuteApplyPowerUp(PlayerShipViewModel playerShip) { this.ExecuteCommand(PowerUpBase.ApplyPowerUp, playerShip); }
/// Subscribes to the property and is notified anytime the value changes. public virtual void PlayerChanged(PlayerShipViewModel value) { }
public virtual void ApplyPowerUp(PowerUpBaseViewModel powerUpBase, PlayerShipViewModel arg) { }
public virtual void Restart(PlayerShipViewModel playerShip) { }
public abstract void InitializePlayerShip(PlayerShipViewModel playerShip);
/// Subscribes to the property and is notified anytime the value changes. public override void PlayerChanged(PlayerShipViewModel ship) { base.PlayerChanged(ship); }
public override void ApplyPowerUp(PowerUpBaseViewModel powerUpBase, PlayerShipViewModel arg) { base.ApplyPowerUp(powerUpBase, arg); arg.MovementSpeed += powerUpBase.Modifier; }
public override void ApplyPowerUp(PowerUpBaseViewModel powerUpBase, PlayerShipViewModel arg) { base.ApplyPowerUp(powerUpBase, arg); arg.MovementSpeed+= powerUpBase.Modifier; }
public virtual void Destroy(PlayerShipViewModel playerShip) { }