Ejemplo n.º 1
0
    public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null)
    {
        if (m_Prefab && owner)
        {
            Debug.Log("Target = " + target);
            Quaternion rot   = Quaternion.identity;
            Vector2    speed = new Vector2(0, 0);

            GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tick_delay: m_TickDelay, tag: "SpellUninteractive");

            var sprite = obj.GetComponent <SpriteRenderer>();
            if (sprite)
            {
                sprite.enabled = false;
            }

            foreach (var behavior in m_StartBehaviors)
            {
                behavior.m_StartBehavior.OnStartEvent(obj, behavior);
            }

            return(obj);
        }
        return(null);
    }
Ejemplo n.º 2
0
    public override void SpellTriggerEnter(Collider2D target, GameObject src)
    {
        Debug.Log("TriggerEnter");
        GameObject         target_obj = target.gameObject;
        SpellPrefabManager s_manager  = src.GetComponent <SpellPrefabManager>();

        //if (!m_EnemyOnly)
        //    SpellUtilities.CastSpellOnCollide(target.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(target.gameObject, src), SpellUtilities.invalid2);
        //else if (target.gameObject.CompareTag("Enemy"))
        //    SpellUtilities.CastSpellOnCollide(target.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(target.gameObject, src));
        if (m_Damage > 0.0f)
        {
            SpellUtilities.DamageOnCollide(target.gameObject, s_manager, m_Damage, SpellUtilities.invalid2);
        }


        //if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid2))
        //{
        //    GameObject.Destroy(src);
        //}

        foreach (var behaviour in m_CollBehaviours)
        {
            if (behaviour.m_HitBehavior != null)
            {
                Debug.Log("Herererererer");
                behaviour.m_HitBehavior.OnTriggerHitEvent(target, src, behaviour);
            }
        }
    }
Ejemplo n.º 3
0
    public override void OnCollisionHitEvent(Collision2D collision, GameObject src, OnCollisionData data)
    {
        GameObject         target_obj = collision.gameObject;
        SpellPrefabManager s_manager  = src.GetComponent <SpellPrefabManager>();

        SpellUtilities.DamageOnCollide(
            collision.gameObject, s_manager, data.m_ApplyDamage.m_Damage, data.m_ApplyDamage.m_ValidHitActors, data.m_ApplyDamage.m_DamageType);
    }
Ejemplo n.º 4
0
    public override void SpellTriggerTick(Collider2D target, GameObject src)
    {
        List <GameObject> ignore = new List <GameObject>();
        GameObject        owner  = src.GetComponent <SpellPrefabManager>().GetOwner();

        if (owner)
        {
            ignore.Add(owner);
        }
        SpellUtilities.PullTargetToSrc(target.gameObject, src, m_PullStrength, ignore, SpellUtilities.invalid);
    }
Ejemplo n.º 5
0
    public override void SpellCollisionEnter(Collision2D target, GameObject src)
    {
        Debug.Log("CollisionEnter");
        GameObject         target_obj = target.gameObject;
        SpellPrefabManager s_manager  = src.GetComponent <SpellPrefabManager>();

        SpellUtilities.CastSpellOnCollide(target.gameObject, s_manager, m_SpellToCast, spawn_pos: GameplayStatics.GetTriggerContactPoint(target.gameObject, src), SpellUtilities.invalid);
        if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid))
        {
            GameObject.Destroy(src);
        }
    }
Ejemplo n.º 6
0
    public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null)
    {
        if (m_Prefab && owner)
        {
            Vector3    dir   = target == null ? ((Quaternion)spawn_rot * Vector3.right).normalized : (target.transform.position - owner.transform.position).normalized;
            Quaternion rot   = GameplayStatics.GetRotationFromDir(dir);
            Vector2    speed = new Vector2(m_ProjectileSpeed * dir.x, m_ProjectileSpeed * dir.y);

            GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tag: "SpellUninteractive");
            return(obj);
        }

        return(null);
    }
Ejemplo n.º 7
0
    public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null)
    {
        if (m_Prefab && owner)
        {
            Vector3    dir   = target == null ? ((Quaternion)spawn_rot * Vector3.right).normalized : (target.transform.position - owner.transform.position).normalized;
            Quaternion rot   = GameplayStatics.GetRotationFromDir(dir);
            Vector2    speed = new Vector2(0, 0);

            GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, Quaternion.identity, spell_velocity: speed, tick_delay: m_TickDealay, tag: "SpellUninteractive");

            var sprite = obj.GetComponent <SpriteRenderer>();
            if (sprite)
            {
                sprite.enabled = false;
            }

            var manager = obj.GetComponent <SpellPrefabManager>();
            if (m_TickBehaviors.Count > 0 && m_TickBehaviors[0] != null)
            {
                manager.m_TickDelay = m_TickBehaviors[0].m_Delay;
            }

            foreach (var behaviour in m_TickBehaviors)
            {
                if (behaviour.m_SCData.m_RemoveOnModified)
                {
                    UnityAction <float, GameplayStatics.DamageType> action = (dmg, type) => Destroy(obj);

                    manager.GetOwner().GetComponent <StatusComponent>().AddOnTakeDamage((dmg, type) => {
                        action(dmg, type);
                        // status.RemoveOnTakeDamage(action);
                    });
                }
            }

            //obj.GetComponent<SpellPrefabManager>().SetFollowerOwner(FollowWho.Player);
            //var status = obj.GetComponent<SpellPrefabManager>().GetOwner().GetComponent<StatusComponent>();

            //UnityAction<float, GameplayStatics.DamageType> action = (dmg, type) => Destroy(obj);

            //status.AddOnTakeDamage( (dmg, type) => {
            //    action(dmg, type);
            //    status.RemoveOnTakeDamage(action);
            //});

            return(obj);
        }
        return(null);
    }
Ejemplo n.º 8
0
    public override void OnCollisionHitEvent(Collision2D collision, GameObject src, OnCollisionData data)
    {
        var m_SpellToCast = data.m_CastSpellOnHitData.m_Spell;

        if (!m_SpellToCast)
        {
            return;
        }
        var invalids = data.m_CastSpellOnHitData.m_invalid;
        SpellPrefabManager s_manager = src.GetComponent <SpellPrefabManager>();

        if (!data.m_CastSpellOnHitData.m_EnemyOnly)
        {
            SpellUtilities.CastSpellOnCollide(collision.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(collision.gameObject, src), invalids);
        }
        else if (collision.gameObject.CompareTag("Enemy"))
        {
            SpellUtilities.CastSpellOnCollide(collision.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(collision.gameObject, src));
        }
    }
Ejemplo n.º 9
0
    public override void SpellTriggerEnter(Collider2D target, GameObject src)
    {
        GameObject         target_obj = target.gameObject;
        SpellPrefabManager s_manager  = src.GetComponent <SpellPrefabManager>();

        if (m_OnHitEffect)
        {
            SpellUtilities.SpawnEffectOnCollide(target_obj, s_manager, m_OnHitEffect, SpellUtilities.invalid2);
        }
        SpellUtilities.DamageOnCollide(target_obj, s_manager, m_Damage, SpellUtilities.invalid2);


        if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid2))
        {
            GameObject.Destroy(src);
        }

        // SpellUtilities.DestroyOnCollide(target_obj, s_manager, SpellUtilities.invalid2, true);
        //if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid))
        //    GameObject.Destroy(src);
    }
Ejemplo n.º 10
0
    public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null)
    {
        if (m_Prefab && owner)
        {
            Debug.Log("Target = " + target);
            Quaternion rot   = Quaternion.identity;
            Vector2    speed = new Vector2(0, 0);

            GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tick_delay: m_TickDealay, tag: "SpellUninteractive");

            var sprite = obj.GetComponent <SpriteRenderer>();
            if (sprite)
            {
                sprite.enabled = false;
            }
            obj.GetComponent <SpellPrefabManager>().SetFollowerOwner(FollowWho.Target);

            return(obj);
        }
        return(null);
    }
Ejemplo n.º 11
0
    public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null)
    {
        if (m_Prefab && owner)
        {
            Vector3    dir   = target == null ? ((Quaternion)spawn_rot * Vector3.right).normalized : (target.transform.position - owner.transform.position).normalized;
            Quaternion rot   = GameplayStatics.GetRotationFromDir(dir);
            Vector2    speed = new Vector2(0, 0);

            GameObject obj  = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tag: "SpellUninteractive");
            GameObject obj2 = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tag: "SpellUninteractive");
            obj2.GetComponent <SpellPrefabManager>().m_Toggle = true;

            obj.GetComponent <SpellPrefabManager>().m_TargetInitialPos = target == null?v3_to_v2(owner.transform.position + 8 *dir) : v3_to_v2(target.transform.position);

            obj2.GetComponent <SpellPrefabManager>().m_TargetInitialPos = target == null?v3_to_v2(owner.transform.position + 8 *dir) : v3_to_v2(target.transform.position);

            AudioSource.PlayClipAtPoint(m_SpellSound, owner.transform.position);

            return(obj);
        }
        return(null);
    }
Ejemplo n.º 12
0
    public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null)
    {
        if (m_Prefab && owner)
        {
            Debug.Log("Target = " + target);
            Quaternion rot   = Quaternion.identity;
            Vector2    speed = new Vector2(0, 0);

            GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tick_delay: 0.0f, tag: "SpellUninteractive");

            var sprite = obj.GetComponent <SpriteRenderer>();
            if (sprite)
            {
                sprite.enabled = false;
            }

            foreach (var behavior in m_StartBehaviors)
            {
                if (behavior != null)
                {
                    behavior.m_StartBehavior.OnStartEvent(obj, behavior);
                }
            }
            //var manager = obj.GetComponent<SpellPrefabManager>();
            //manager.SetFollowerOwner(FollowWho.Player);
            //manager.GetOwner().GetComponent<EffectManagerComponent>().AddToSpeedMult(m_SpeedMult);

            //obj.GetComponent<SpellPrefabManager>().AddOnDestruction( () => {
            //    obj.GetComponent<SpellPrefabManager>().GetOwner().layer = LayerMask.NameToLayer("Player");
            //    manager.GetOwner().GetComponent<EffectManagerComponent>().AddToSpeedMult(-m_SpeedMult);
            //});

            return(obj);
        }
        return(null);
    }
Ejemplo n.º 13
0
 public override void OnTick(GameObject obj)
 {
     SpellUtilities.UpdateSpellTTL(obj, this);
 }