/*private float DetermineDuration(CRT_State attack) // Set respective duration for the attack
     * {
     *  switch (attack.GetName())
     *  {
     *      case "Single":
     *          if (SM.comboActive)
     *              return Boss.PrepDur_Combo_fast;
     *          else
     *              return Boss.PrepDuration_Single;
     *      case "DoubleHoz":
     *          if (SM.comboActive)
     *              return Boss.PrepDur_Combo_medium;
     *          else
     *              return Boss.PrepDuration_Double;
     *      case "DoubleVer":
     *          if (SM.comboActive)
     *              return Boss.PrepDur_Combo_medium;
     *          else
     *              return Boss.PrepDuration_Double;
     *      default:
     *          return 0;
     *  }
     * }*/

    public override void Enter()
    {
        Boss.sp.color = Color.yellow;

        Location playerLoc = FindPlayer();                           // Find the location the player is occupying

        AttackToPerform = GetNextComboStep();                        // Determine which attack to perform (random, currently)
        //Duration = DetermineDuration(AttackToPerform); // Determine duration of the current attack
        Boss.targets = DetermineTargets(AttackToPerform, playerLoc); // Determine the target locations based on the current attack
        Boss.TargetLocations();                                      // Target (visually indicate - yellow) those locations
        SM.DetermineAnimation(AttackToPerform.GetName());
    }
    private List <Location> DetermineTargets(CRT_State attack, Location player) // aquire targets according to attack
    {
        List <Location> targets = new List <Location>();

        switch (attack.GetName())
        {
        case "Single":
            targets.Add(player);
            Boss.SetSound(0);
            return(targets);

        case "DoubleHoz":
            if (player.isUp)     // if up
            {
                for (int i = 0; i < Boss.locations.Length; i++)
                {
                    if (Boss.locations[i].isUp)
                    {
                        targets.Add(Boss.locations[i]);
                    }
                }
            }
            else     // if down
            {
                for (int i = 0; i < Boss.locations.Length; i++)
                {
                    if (!Boss.locations[i].isUp)
                    {
                        targets.Add(Boss.locations[i]);
                    }
                }
            }
            Boss.SetSound(0);
            return(targets);

        case "DoubleVer":
            if (player.isRight)     // if right
            {
                for (int i = 0; i < Boss.locations.Length; i++)
                {
                    if (Boss.locations[i].isRight)
                    {
                        targets.Add(Boss.locations[i]);
                    }
                }
            }
            else     // if left
            {
                for (int i = 0; i < Boss.locations.Length; i++)
                {
                    if (!Boss.locations[i].isRight)
                    {
                        targets.Add(Boss.locations[i]);
                    }
                }
            }
            Boss.SetSound(0);
            return(targets);

        case "AllSimul":
            foreach (Location t in Boss.locations)
            {
                targets.Add(t);
            }
            Boss.SetSound(2);
            return(targets);

        default:
            return(targets);
        }
    }