internal Mage(string name, Actor actor, PlayerIndex input) : base(name, actor) { controller = new GamePadController(input);//new KeyboardController(); currentTargetAlignment = TargetAlignment.None; target = new Frostbyte.Levels.Target("target", new Actor(new DummyAnimation("target.anim"))); target.mVisible = false; sortType = new DistanceSort(this); UpdateBehavior = Update; }
public void Update() { controller.Update(); if (controller.IsConnected) { #region Targeting if (controller.TargetEnemies) { if (currentTargetAlignment != TargetAlignment.Enemy) { currentTarget = null; } currentTarget = findMinimum((This.Game.CurrentLevel as FrostbyteLevel).enemies); if (currentTarget != null) { currentTargetAlignment = TargetAlignment.Enemy; } } else if (controller.TargetAllies) { if (currentTargetAlignment != TargetAlignment.Ally) { currentTarget = null; } currentTarget = findMinimum((This.Game.CurrentLevel as FrostbyteLevel).allies.Concat( (This.Game.CurrentLevel as FrostbyteLevel).obstacles).ToList()); if (currentTarget != null) { currentTargetAlignment = TargetAlignment.Ally; } } if (controller.CancelTargeting == ReleasableButtonState.Clicked) { target.mVisible = false; currentTarget = null; currentTargetAlignment = TargetAlignment.None; } if (currentTarget != null) { target.mVisible = true; target.CenterOn(currentTarget); } #endregion } }