/// <summary> /// Returns a group of entities /// </summary> /// <param name="entityType">The type of entity </param> /// <param name="filterState">Include all entities only from this filter in the returned list</param> /// <returns>A list of the entities of the specified type</returns> public List <BattleEntity> GetEntityGroup(BattleEntity.EntityTypes entityType, EntityFilterStates filterState) { List <BattleEntity> list = new List <BattleEntity>(); if (entityType == BattleEntity.EntityTypes.Player) { list.AddRange(Players); } else if (entityType == BattleEntity.EntityTypes.Enemy) { list.AddRange(Enemies); } else { //Have it separated by enemies first, then players - more organized list.AddRange(Enemies); list.AddRange(Players); } //Filter out dead entities if (filterState == EntityFilterStates.Alive) { list.RemoveAll((entity) => entity.IsDead == true); } //Filter out alive entities else if (filterState == EntityFilterStates.Dead) { list.RemoveAll((entity) => entity.IsDead == false); } return(list); }
private void SelectItem(BattlePlayer player, Item item) { ItemUsed = item; BattleEntity.EntityTypes entityType = item.GetEntityTypeBasedOnAlignment(player.EntityType); bool multiTarget = item.MultiTarget; BattleManager.EntityFilterStates filterState = item.FilterState; BattleUIManager.Instance.StartTargetSelection(BattleManager.Instance.GetEntityGroup(entityType, filterState), multiTarget); }
private void SelectSpell(BattlePlayer player, Spell spell) { if (player.CurMP < spell.MPCost) { Debug.Log($"{player.Name} has {player.CurMP}MP but requires {spell.MPCost}MP to cast {spell.Name}!"); return; } SpellCast = spell; TurnsRequired = SpellCast.CastTurns; BattleEntity.EntityTypes entityType = spell.GetEntityTypeBasedOnAlignment(player.EntityType); bool multiTarget = spell.MultiTarget; BattleManager.EntityFilterStates filterState = spell.FilterState; BattleUIManager.Instance.StartTargetSelection(BattleManager.Instance.GetEntityGroup(entityType, filterState), multiTarget); }
public BattleEntity.EntityTypes GetEntityTypeBasedOnAlignment(BattleEntity.EntityTypes entityType) { UsableAlignment alignment = Alignment; //Neutral or no EntityType if (alignment == UsableAlignment.Neutral || entityType == BattleEntity.EntityTypes.None) { return(BattleEntity.EntityTypes.None); } //If positive, return EntityTypes.Player if a player, otherwise return EntityTypes.Enemy if (alignment == UsableAlignment.Positive) { return(entityType == BattleEntity.EntityTypes.Player ? BattleEntity.EntityTypes.Player : BattleEntity.EntityTypes.Enemy); } //If negative, return EntityTypes.Enemy if a player, otherwise return EntityTypes.Player else { return(entityType == BattleEntity.EntityTypes.Player ? BattleEntity.EntityTypes.Enemy : BattleEntity.EntityTypes.Player); } }
/// <summary> /// Returns a random entity specified by entitytype /// </summary> /// <param name="entitytype">The type of entity to select. If None is passed in, choose from any entity in the battle</param> /// <param name="filterState">The filter to apply to the random selection</param> public BattleEntity SelectRandomEntity(BattleEntity.EntityTypes entitytype, EntityFilterStates filterState) { List <BattleEntity> entitylist = GetEntityGroup(entitytype, filterState); return(entitylist?[Globals.Randomizer.Next(0, entitylist.Count)]); }