/// <summary> /// включает и выключает круги выбора таргета под существами, соответствующие условиям используемой способности /// </summary> public void TurnOnSelectCircles(bool fl) { List <Creatures> availableTargets = SelectedAbility.GetAvailableTargets(CurrentRoom, CurrentHero); foreach (Creatures c in availableTargets) { c.gameObject.GetComponentInChildren <SpriteRenderer>().enabled = fl; } }
/// <summary> /// метод использования способности в части GUI /// </summary> private void UseAbility() { AnimationLock = true; AbilityBar.SetActive(false); SelectFrame.SetActive(false); SelectedAbility.UseAbility(SelectedTarget, CurrentHero, CurrentRoom); Messenger <GameObject> .Broadcast(GameEvent.ENEMY_HIT, SelectedTarget.gameObject); CurrentHero.gameObject.GetComponent <Animator>().SetTrigger("StartAttack"); DisactivateAbility(); }
public void Draw(SpriteBatch spriteBatch) { foreach (List <Tile> row in Tiles) { foreach (Tile tile in row) { tile.Draw(spriteBatch, tile.PosX * Tile.diameter, tile.PosY * Tile.diameter); } } EndTurnBox.Draw(spriteBatch); if (HighlightedTile != null) { spriteBatch.Draw( Textures.TileHighlight, new Vector2((HighlightedTile.PosX * Tile.diameter) + HighlightBorderWidth, (HighlightedTile.PosY * Tile.diameter) + HighlightBorderWidth), Color.White); } int offset = (Tile.diameter / 2) - (Hero.diameter / 2); foreach (Hero hero in Heroes) { hero.Draw(spriteBatch, (hero.PosX * Tile.diameter) + offset, (hero.PosY * Tile.diameter) + offset); } if (SelectedHero != null) { spriteBatch.Draw( Textures.SelectedHero, new Vector2((SelectedHero.PosX * Tile.diameter) + offset - HighlightBorderWidth, (SelectedHero.PosY * Tile.diameter) + offset - HighlightBorderWidth), Color.White); StatsBox.DrawHeroStats(spriteBatch, SelectedHero, true); } if (HighlightedHero != null && HighlightedHero != SelectedHero) { StatsBox.DrawHeroStats(spriteBatch, HighlightedHero, false); } if (SelectedHero != null) { Spellbar.Draw(spriteBatch, SelectedHero); } if (HighlightedAbility != null) { StatsBox.DrawAbilityStats(spriteBatch, HighlightedAbility); } if (SelectedAbility != null && HighlightedTile != null) { Texture2D filter; bool validTarget = SelectedAbility.ValidateTarget(HighlightedTile); if (validTarget) { filter = Textures.GreenFilter; } else { filter = Textures.RedFilter; } List <Tile> affectedTiles = SelectedAbility.GetAffectedTiles(HighlightedTile); foreach (Tile tile in affectedTiles) { int posX = (tile.PosX * Tile.diameter) + HighlightBorderWidth; int posY = (tile.PosY * Tile.diameter) + HighlightBorderWidth; spriteBatch.Draw(filter, new Vector2(posX, posY), new Color(Color.White, 0.1f)); } } #endregion }
public void OnAbilityTargetChosen(BattleActorBase target) { CmdUseAbility(target?.gameObject, selectedAbilityIndex); SelectedAbility.Use(); EndAbility(); }
private void AbilityButtonSelected(IAbilitySelectionButton button, AbilitySelectedEventArgs e) { SelectedAbility?.Invoke(this, e); }