Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        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);
            }
        }
Beispiel #5
0
        /// <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)]);
        }