/// <summary> /// Check if the selected unit has changed /// </summary> private void CheckIfUnitChanged() { if (_previousUnit == _currentUnit) { return; } SelectedAbilityIndex = -1; SelectedTargetIndex = -1; _targets = new List <UnitModel>(); AbilitiesGroup.SetButtons(GetAbilityButtons); TargetsGroup.SetButtons(GetTargetButtons); }
public void Update(GameTime gameTime, List <UnitModel> targets) { _previousTargets = _targets; _targets = targets; _previousUnit = _currentUnit; _currentUnit = _units[UnitsGroup.CurrentIndex]; _previousAbility = _currentAbility; _currentAbility = _currentUnit.Abilities.Get(AbilitiesGroup.CurrentIndex); CheckIfUnitChanged(); CheckIfTargetChanged(); //CheckIfAbilityChanged(); _endTurnButton.Update(gameTime); if (_endTurnButton.Clicked) { NextState = BattleStates.EnemyTurn; } for (int i = 0; i < UnitsGroup.Buttons.Count; i++) { UnitsGroup.Buttons[i].IsEnabled = true; if (_units[i].Stamina <= 0) { UnitsGroup.Buttons[i].IsEnabled = false; } } for (int i = 0; i < AbilitiesGroup.Buttons.Count; i++) { AbilitiesGroup.Buttons[i].IsEnabled = _units[UnitsGroup.CurrentIndex].Abilities.Get(i).IsEnabled; } UnitsGroup.Update(gameTime); AbilitiesGroup.Update(gameTime); TargetsGroup.Update(gameTime); }
public void Draw(GameTime gameTime, SpriteBatch spriteBatch) { spriteBatch.Begin(); _controlPanel.Draw(gameTime, spriteBatch); _endTurnButton.Draw(gameTime, spriteBatch); UnitsGroup.Draw(gameTime, spriteBatch); AbilitiesGroup.Draw(gameTime, spriteBatch); TargetsGroup.Draw(gameTime, spriteBatch); spriteBatch.DrawString(_font, UnitName, new Vector2(_controlPanel.Position.X + 4, _controlPanel.Position.Y + 4), Color.White); spriteBatch.DrawString(_font, AbilityName, new Vector2(AbilitiesGroup.Rectangle.X + 4, AbilitiesGroup.Rectangle.Y - 15), Color.White); spriteBatch.End(); }