Example #1
0
 private IEnumerator SkillCoroutine(SkillCastSnapshot snapshot)
 {
     foreach (SkillAction action in snapshot.SkillData.SkillActions)
     {
         yield return(StartCoroutine(action.Action(this, snapshot)));
     }
 }
Example #2
0
    public override IEnumerator Action(MonoBehaviour skill, SkillCastSnapshot skillCastSnapshot)
    {
        Debug.Log("Start waiting");

        yield return(new WaitForSeconds(seconds));

        Debug.Log("Finish waiting");
    }
Example #3
0
    public override IEnumerator Action(MonoBehaviour skill, SkillCastSnapshot snapshot)
    {
        snapshot.SkillData.CurrentCooldown = snapshot.SkillData.Cooldown;
        snapshot.SkillData.OnCooldown      = true;
        Debug.Log("Start cooldown");

        skill.StartCoroutine(Cooldown(snapshot));

        yield return(null);
    }
Example #4
0
 private bool CheckCanCast(SkillCastSnapshot snapshot)
 {
     if (snapshot.SkillData.OnCooldown)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Example #5
0
    private IEnumerator Cooldown(SkillCastSnapshot snapshot)
    {
        while (snapshot.SkillData.CurrentCooldown > 0)
        {
            snapshot.SkillData.CurrentCooldown -= Time.deltaTime;

            yield return(null);
        }
        snapshot.SkillData.OnCooldown = false;
        Debug.Log("Finished cooldown");
    }
Example #6
0
 private void SkillInput()
 {
     if (Input.GetButtonDown("Skill1") && playerCurrentSkills.PlayerSkillSlots[0] != null)
     {
         snapshots[0] = new SkillCastSnapshot(gameObject, playerCurrentSkills.PlayerSkillSlots[0]);
         if (CheckCanCast(snapshots[0]))
         {
             StartCoroutine(SkillCoroutine(snapshots[0]));
         }
     }
     if (Input.GetButtonDown("Skill2") && playerCurrentSkills.PlayerSkillSlots[1] != null)
     {
         snapshots[1] = new SkillCastSnapshot(gameObject, playerCurrentSkills.PlayerSkillSlots[1]);
         if (CheckCanCast(snapshots[1]))
         {
             StartCoroutine(SkillCoroutine(snapshots[1]));
         }
     }
     if (Input.GetButtonDown("Skill3") && playerCurrentSkills.PlayerSkillSlots[2] != null)
     {
         snapshots[2] = new SkillCastSnapshot(gameObject, playerCurrentSkills.PlayerSkillSlots[2]);
         if (CheckCanCast(snapshots[2]))
         {
             StartCoroutine(SkillCoroutine(snapshots[2]));
         }
     }
     if (Input.GetButtonDown("UltSkill") && playerCurrentSkills.PlayerSkillSlots[3] != null)
     {
         snapshots[3] = new SkillCastSnapshot(gameObject, playerCurrentSkills.PlayerSkillSlots[3]);
         if (CheckCanCast(snapshots[3]))
         {
             StartCoroutine(SkillCoroutine(snapshots[3]));
         }
     }
     if (Input.GetButtonDown("BasicAttack") && playerCurrentSkills.PlayerSkillSlots[4] != null)
     {
         snapshots[4] = new SkillCastSnapshot(gameObject, playerCurrentSkills.PlayerSkillSlots[4]);
         if (CheckCanCast(snapshots[4]))
         {
             StartCoroutine(SkillCoroutine(snapshots[4]));
         }
     }
     if (Input.GetButtonDown("MovementSkill") && playerCurrentSkills.PlayerSkillSlots[5] != null)
     {
         snapshots[5] = new SkillCastSnapshot(gameObject, playerCurrentSkills.PlayerSkillSlots[5]);
         if (CheckCanCast(snapshots[5]))
         {
             StartCoroutine(SkillCoroutine(snapshots[5]));
         }
     }
 }
Example #7
0
    public override IEnumerator Action(MonoBehaviour skill, SkillCastSnapshot skillCastSnapshot)
    {
        Vector3 location = Vector3.zero;
        Vector3 offset   = Vector3.zero;

        switch (Target)
        {
        case TargetPositionType.Player:
            location = skillCastSnapshot.Player.transform.position;
            break;

        case TargetPositionType.Auto:
            //setup auto
            break;

        case TargetPositionType.Direction:
            offset   = skillCastSnapshot.MousePosition - skillCastSnapshot.Player.transform.position;
            location = skillCastSnapshot.Player.transform.position + Vector3.ClampMagnitude(offset, Range);
            break;

        case TargetPositionType.Mouse:
            offset = skillCastSnapshot.MousePosition - skillCastSnapshot.Player.transform.position;
            if (Range * Range < offset.sqrMagnitude)
            {
                location = skillCastSnapshot.Player.transform.position + Vector3.ClampMagnitude(offset, Range);
            }
            else
            {
                location = skillCastSnapshot.MousePosition;
            }
            break;

        case TargetPositionType.Unit:
            //setup unit
            break;

        case TargetPositionType.Coordinate:
            location = new Vector3(Coordinate.x, Coordinate.y);
            break;

        default:
            Debug.Log("Check MoveTowards' Target Type");
            break;
        }



        yield return(null);
    }
Example #8
0
    public override IEnumerator Action(MonoBehaviour skill, SkillCastSnapshot skillCastSnapshot)
    {
        Vector3    location = Vector3.zero;
        Vector3    offset   = new Vector3(localXAxisOffset, localYAxisOffset, 0f);
        Quaternion rotation = Quaternion.identity;

        switch (Target)
        {
        case TargetPositionType.Player:
            location = skillCastSnapshot.Player.transform.position;
            rotation = skillCastSnapshot.Player.transform.rotation;
            break;

        case TargetPositionType.Auto:
            //setup auto
            break;

        case TargetPositionType.Direction:
            location = skillCastSnapshot.Player.transform.position;
            rotation = Quaternion.FromToRotation(skillCastSnapshot.Player.transform.position, skillCastSnapshot.MousePosition);
            break;

        case TargetPositionType.Mouse:
            location = skillCastSnapshot.MousePosition;
            break;

        case TargetPositionType.Unit:
            //setup unit
            break;

        case TargetPositionType.Coordinate:
            location = new Vector3(Coordinate.x, Coordinate.y);
            break;

        default:
            Debug.Log("Check SpawnPrefab's Target Type");
            break;
        }

        location += rotation * offset;
        rotation *= Quaternion.Euler(Vector3.forward * -angleOffset);

        Instantiate(prefab, location, rotation);

        yield return(null);
    }
Example #9
0
 public abstract IEnumerator Action(MonoBehaviour skill, SkillCastSnapshot skillCastSnapshot);