protected override void Execute(List <GameEntity> entities) { var entity = entities.SingleEntity(); var badGuys = CharacterUtils.FindBadGuys(_allCharacters.AsEnumerable()); foreach (var e in badGuys) { var targetIndicator = e.view.gameObject.GetComponentInChildren <TargetIndicator>(true); targetIndicator.SetActive(entity.isUserInput && e.isCurrentTarget); } }
protected override void Execute(List <GameEntity> entities) { entities.ForEach(e => e.isTargetSwitch = false); var badGuys = CharacterUtils.FindBadGuys(_allCharacters.AsEnumerable()); var curTargetIdx = badGuys.FindIndex(entity => entity.isCurrentTarget); badGuys.ForEach(entity => entity.isCurrentTarget = false); for (int i = 1; i < badGuys.Count; i++) { var nextEnemy = badGuys[(curTargetIdx + i) % badGuys.Count]; if (CharacterUtils.IsNotDead(nextEnemy)) { nextEnemy.isCurrentTarget = true; return; } } }
private GameEntity GetTarget(GameEntity entity) { GameEntity result; switch (entity.character.type) { case CharacterType.GoodGuy: var badGuys = CharacterUtils.FindBadGuys(_allCharacters.AsEnumerable()); result = badGuys.FirstOrDefault(e => e.isCurrentTarget); break; case CharacterType.BadGuy: var goodGuys = CharacterUtils.FindGoodGuys(_allCharacters.AsEnumerable()); result = CharacterUtils.FirstAliveCharacter(goodGuys); break; default: throw new ArgumentOutOfRangeException(); } return(result); }