public override void init()
 {
     effectColor        = GetComponent <SpriteRenderer>().color;
     effectColor.a      = 1;
     friu               = GetComponent <TeleportRangeIndicatorUpdater>();
     aoeCollider        = GetComponent <CircleCollider2D>();
     particleController = GetComponentInChildren <ParticleSystemController>();
 }
Esempio n. 2
0
    public override void processHoldGesture(Vector2 pos, float holdTime, bool finished)
    {
        float range = maxRange * holdTime * GestureManager.holdTimeScaleRecip / maxHoldTime;

        if (range > maxRange)
        {
            range = maxRange;
        }
        if (finished)
        {
            Collider2D[] hitColliders = Physics2D.OverlapCircleAll(pos, range);
            for (int i = 0; i < hitColliders.Length; i++)
            {
                Rigidbody2D orb2d = hitColliders[i].gameObject.GetComponent <Rigidbody2D>();
                if (orb2d != null)
                {
                    Utility.AddWeightedExplosionForce(orb2d, forceAmount, pos, range);
                }
                else
                {
                    HardMaterial hm = hitColliders[i].gameObject.GetComponent <HardMaterial>();
                    if (hm != null)
                    {
                        float force = forceAmount * (range - Utility.distanceToObject(pos, hitColliders[i].gameObject)) / Time.fixedDeltaTime;
                        hm.checkForce(force);
                    }
                    ShieldBubbleController sbc = hitColliders[i].gameObject.GetComponent <ShieldBubbleController>();
                    if (sbc != null)
                    {
                        float force = forceAmount * (range - Utility.distanceToObject(pos, hitColliders[i].gameObject)) / Time.fixedDeltaTime;
                        sbc.checkForce(force);
                    }
                }
            }
            showExplosionEffect(pos, range * 2);
            AudioSource.PlayClipAtPoint(forceTeleportSound, pos);
            Destroy(frii);
            frii = null;
            particleController.activateTeleportParticleSystem(false);
        }
        else
        {
            if (frii == null)
            {
                frii = Instantiate(forceRangeIndicator);
                friu = frii.GetComponent <TeleportRangeIndicatorUpdater>();
                frii.GetComponent <SpriteRenderer>().enabled = false;
            }
            frii.transform.position = (Vector2)pos;
            friu.setRange(range);
            //Particle effects
            particleController.activateTeleportParticleSystem(true, effectColor, pos, range);
        }
    }
Esempio n. 3
0
    public void processHoldGesture(Vector2 pos, float holdTime, bool finished, out GameObject spawnedShield)
    {
        spawnedShield = null;
        float range = maxRange * holdTime * GestureManager.holdTimeScaleRecip / maxHoldTime;

        if (range > maxRange)
        {
            range = maxRange;
        }
        if (finished)
        {
            //Spawn Shield Bubble
            if (canSpawnShieldBubble(pos, range))
            {
                GameObject newSB = spawnShieldBubble(pos, range, 100 * range / maxRange);
                if (!spawnDemos)
                {
                    GameManager.addObject(newSB);
                }
                spawnedShield = newSB;
                AudioSource.PlayClipAtPoint(shieldBubbleSound, pos);
            }
            else
            {
                AudioSource.PlayClipAtPoint(shieldBubbleFailSound, pos);
            }
            Destroy(srii);
            srii = null;
            particleController.activateTeleportParticleSystem(false);
            if (circularProgressBar != null)
            {
                circularProgressBar.setPercentage(0);
            }
        }
        else
        {
            if (srii == null)
            {
                srii = Instantiate(shieldRangeIndicator);
                sriu = srii.GetComponent <TeleportRangeIndicatorUpdater>();
                srii.GetComponent <SpriteRenderer>().enabled = false;
            }
            srii.transform.position = (Vector2)pos;
            sriu.setRange(range);
            //Particle effects
            particleController.activateTeleportParticleSystem(true, effectColor, pos, range);
            if (circularProgressBar != null)
            {
                circularProgressBar.setPercentage(range / maxRange);
                circularProgressBar.transform.position = pos;
            }
        }
    }
Esempio n. 4
0
    void setRange(float newRange)
    {
        range = newRange;
        TeleportRangeIndicatorUpdater tri = GetComponentInChildren <TeleportRangeIndicatorUpdater>();

        if (tri != null)
        {
            tri.updateRange();
        }
        ParticleSystemController[] pscs = GetComponentsInChildren <ParticleSystemController>();
        foreach (ParticleSystemController psc in pscs)
        {
            if (psc.dependsOnTeleportRange)
            {
                psc.setOuterRange(newRange);
            }
        }
    }
Esempio n. 5
0
    public override void processHoldGesture(Vector2 pos, float holdTime, bool finished)
    {
        float range = maxRange * holdTime * GestureManager.holdTimeScaleRecip / maxHoldTime;

        if (range > maxRange)
        {
            range = maxRange;
        }
        if (finished)
        {
            futureProjection.SetActive(false);
            Destroy(frii);
            frii = null;
            particleController.activateTeleportParticleSystem(false);
            if (circularProgressBar != null)
            {
                circularProgressBar.setPercentage(0);
            }
        }
        else
        {
            futureProjection.SetActive(true);
            futureProjection.transform.rotation   = transform.rotation;
            futureProjection.transform.localScale = transform.localScale;
            Vector2 futurePos = pc.findTeleportablePosition(pos);
            futureProjection.transform.position = futurePos;
            if (frii == null)
            {
                frii = Instantiate(teleportRangeIndicator);
                friu = frii.GetComponent <TeleportRangeIndicatorUpdater>();
                frii.GetComponent <SpriteRenderer>().enabled = false;
            }
            frii.transform.position = futurePos;
            friu.setRange(range);
            //Particle effects
            particleController.activateTeleportParticleSystem(true, effectColor, futurePos, range);
            if (circularProgressBar != null)
            {
                circularProgressBar.setPercentage(range / maxRange);
                circularProgressBar.transform.position = pos;
            }
        }
    }