Esempio n. 1
0
    IEnumerator Punch()
    {
        //start animating
        anim.SetInteger("AnimParameter", 3);
        yield return(new WaitForSeconds(punchTime));

        PlayPunchSound();
        Collider2D[] hits = Physics2D.OverlapCapsuleAll(hitTrigger.bounds.center, hitTrigger.bounds.size, CapsuleDirection2D.Horizontal, 0f);
        foreach (Collider2D c in hits)
        {
            if (c.isTrigger == false)
            {
                BasePlayerController hitPlayer = c.GetComponent <BasePlayerController>();
                if (hitPlayer != null && hitPlayer != this)
                {
                    Rigidbody2D rb = hitPlayer.GetComponent <Rigidbody2D>();
                    if (rb != null)
                    {
                        rb.AddForce(transform.right * 3 + transform.up * 3, ForceMode2D.Impulse);

                        hitPlayer.PlayPainSound(0.3f);

                        break;
                    }
                }
            }
        }
    }
Esempio n. 2
0
    private IEnumerator HandleDuration(BasePlayerController player)
    {
        var attr = EffectAttributes.instance.payWallAttributes;

        player.Frozen = player.FindOpponent().Frozen = true;

        var obj    = GameObject.Instantiate(attr.prefab, GameObject.Find("Canvas").transform);
        var sprite = obj.GetComponent <Image>();

        for (var color = sprite.color; color.a < 1f; color.a += attr.fadeRate)
        {
            sprite.color = color;
            yield return(null);
        }

        var min = attr.minDuration;
        var max = attr.maxDuration;

        attr.sound.Play();

        yield return(new WaitForSeconds(min + (max - min) * EffectState.instance.CurrentIntensity));

        player.Frozen = player.FindOpponent().Frozen = false;

        for (var color = sprite.color; color.a > 0f; color.a -= attr.fadeRate)
        {
            sprite.color = color;
            yield return(null);
        }

        GameObject.Destroy(obj);

        ended = true;
    }
Esempio n. 3
0
    private IEnumerator HandleDuration(BasePlayerController player)
    {
        var attr = EffectAttributes.instance.fullLife3Attributes;

        attr.sound.Play();

        var obj    = GameObject.Instantiate(attr.prefab, player.transform);
        var sprite = obj.GetComponent <SpriteRenderer>();

        for (var color = sprite.color; color.a < 1f; color.a += attr.fadeRate)
        {
            attr.sound.volume = color.a;
            sprite.color      = color;
            yield return(null);
        }

        yield return(new WaitForSeconds(attr.visibleFor));

        for (var color = sprite.color; color.a > 0f; color.a -= attr.fadeRate)
        {
            attr.sound.volume = color.a;
            sprite.color      = color;
            yield return(null);
        }

        attr.sound.Stop();

        GameObject.Destroy(obj);

        ended = true;
    }
Esempio n. 4
0
    public override void Begin(BasePlayerController player)
    {
        var attr = EffectAttributes.instance.cooldownAttributes;

        player.ReduceCooldown(EffectState.instance.CurrentIntensity * attr.maxReduction);

        attr.sound.Play();
    }
Esempio n. 5
0
    // Trigger a random effect
    public EffectType Trigger(BasePlayerController player)
    {
        var type = effectTypeOverride != EffectType.__Count ? effectTypeOverride : (EffectType)Random.Range(0, (int)EffectType.__Count);

        Trigger(type, player);

        return(type);
    }
Esempio n. 6
0
    public override void Begin(BasePlayerController player)
    {
        var min = EffectAttributes.instance.throwAttributes.minForce;
        var max = EffectAttributes.instance.throwAttributes.maxForce;

        player.Push(Vector2.up * (min + (max - min) * EffectState.instance.CurrentIntensity));

        EffectAttributes.instance.throwAttributes.sound.Play();
    }
Esempio n. 7
0
    private void OnTriggerEnter2D(Collider2D col)
    {
        BasePlayerController player = col.GetComponent <BasePlayerController>();

        if (player != null && !triggered)
        {
            triggered = true;
            StartCoroutine(OnPickup(player));
        }
    }
Esempio n. 8
0
    //public void AddListener(EffectType type, EffectListener listener)
    //{
    //    effectListeners[type].Add(listener);
    //}

    public void Trigger(EffectType type, BasePlayerController player = null)
    {
        var effect = EffectFactory.Create(type);

        Debug.Assert(effect != null, "EffectFactory returned null with type " + type);

        //foreach (var listener in effectListeners[type])
        //    listener.Begin(effect);

        effect.Begin(player);

        activeEffects[type].Add(effect);
    }
Esempio n. 9
0
    public override void Begin(BasePlayerController player)
    {
        oldGravity = Physics2D.gravity;

        Physics2D.gravity = Vector2.down * EffectAttributes.instance.gravityAttributes.lowGravity;

        var min = EffectAttributes.instance.gravityAttributes.minDuration;
        var max = EffectAttributes.instance.gravityAttributes.maxDuration;

        EffectState.instance.StartCoroutine(
            HandleDuration(min + (max - min) * EffectState.instance.CurrentIntensity)
            );
    }
Esempio n. 10
0
    private IEnumerator OnPickup(BasePlayerController player)
    {
        var type = EffectState.instance.Trigger(player);

        StartCoroutine(DoPopup(type));

        var sound = GetComponent <AudioSource>();

        GetComponent <SpriteRenderer>().enabled = false;
        sound.Play();

        yield return(new WaitForSeconds(sound.clip.length));

        Destroy(gameObject);
    }
Esempio n. 11
0
    public override void Begin(BasePlayerController player)
    {
        var attr = EffectAttributes.instance.speedUpAttributes;

        var mind     = attr.minDuration;
        var maxd     = attr.maxDuration;
        var duration = mind + (maxd - mind) * EffectState.instance.CurrentIntensity;

        var mins  = attr.minSpeed;
        var maxs  = attr.maxSpeed;
        var speed = mins + (maxs - mins) * EffectState.instance.CurrentIntensity;

        VersusState.instance.PushSpeedChange(speed, duration);

        EffectState.instance.StartCoroutine(HandleDuration(duration));
    }
Esempio n. 12
0
    public override void Begin(BasePlayerController player)
    {
        {
            var min = EffectAttributes.instance.autoScrollAttributes.minSpeed;
            var max = EffectAttributes.instance.autoScrollAttributes.maxSpeed;

            CameraControl.instance.SetAutoScroll(true, min + (max - min) * EffectState.instance.CurrentIntensity);
        } {
            var min = EffectAttributes.instance.autoScrollAttributes.minDuration;
            var max = EffectAttributes.instance.autoScrollAttributes.maxDuration;

            EffectState.instance.StartCoroutine(
                HandleDuration(min + (max - min) * EffectState.instance.CurrentIntensity)
                );
        }
    }
Esempio n. 13
0
    public override void Begin(BasePlayerController player)
    {
        this.player = player;

        player.Frozen = true;

        var attr = EffectAttributes.instance.freezeAttributes;
        var min  = attr.minDuration;
        var max  = attr.maxDuration;

        EffectState.instance.StartCoroutine(
            HandleDuration(min + (max - min) * EffectState.instance.CurrentIntensity)
            );

        attr.beginAudio.Play();
    }
Esempio n. 14
0
    private IEnumerator HandleDuration(BasePlayerController player)
    {
        var attr     = EffectAttributes.instance.sizeAlterAttributes;
        var oldScale = player.transform.localScale;

        player.transform.localScale *= 0.5f;

        var min = attr.minDuration;
        var max = attr.maxDuration;

        attr.sound.Play();

        yield return(new WaitForSeconds(min + (max - min) * EffectState.instance.CurrentIntensity));

        player.transform.localScale = oldScale;
        attr.sound.Play();

        ended = true;
    }
Esempio n. 15
0
    private IEnumerator ExplosionRoutine(BasePlayerController self, BasePlayerController opponent)
    {
        var attr = EffectAttributes.instance.explosionAttributes;

        self.MovementScale     = attr.selfMovementScale;
        opponent.MovementScale = attr.opponentMovementScale;

        attr.omae.Play();
        SpriteRenderer kolor = self.GetComponentInChildren <SpriteRenderer>();

        kolor.material.SetColor("_Color", Color.yellow);
        yield return(new WaitForSecondsRealtime(attr.omae.clip.length));

        kolor.material.SetColor("_Color", Color.magenta);
        attr.nani.Play();

        yield return(new WaitForSecondsRealtime(attr.nani.clip.length));

        kolor.material.SetColor("_Color", Color.red);
        attr.boom.Play();

        var explosionDelay = 0.85f;

        yield return(new WaitForSecondsRealtime(explosionDelay));

        self.MovementScale = opponent.MovementScale = 1f;

        var pushDir   = opponent.gameObject.transform.position - self.gameObject.transform.position;
        var min       = EffectAttributes.instance.explosionAttributes.minForce;
        var max       = EffectAttributes.instance.explosionAttributes.maxForce;
        var pushForce = (min + (max - min) * EffectState.instance.CurrentIntensity);

        kolor.material.SetColor("_Color", Color.white);
        self.Push(Vector2.up * pushForce);
        opponent.Push(pushDir.normalized * pushForce);
        GameObject InstantiatedFX = GameObject.Instantiate(attr.explosionFX, self.transform.position, Quaternion.identity);

        GameObject.Destroy(InstantiatedFX, 1f);

        yield return(new WaitForSecondsRealtime(attr.boom.clip.length - explosionDelay));

        ended = true;
    }
Esempio n. 16
0
    private void OnTriggerEnter(Collider other)
    {
        if (_enemyList.All(enemy => enemy.IsHit))
        {
            return;
        }

        var rb = other.attachedRigidbody;

        if (rb == null)
        {
            return;
        }

        _moveController = rb.GetComponent <BasePlayerController>();

        if (_moveController == null)
        {
            return;
        }

        _moveController.Disable();
        _shootController.Enable();
    }
Esempio n. 17
0
 public Slide(BasePlayerController controller)
 {
     Controller = controller;
 }
Esempio n. 18
0
 public Duck(BasePlayerController controller) : base(controller)
 {
     Controller = controller;
 }
Esempio n. 19
0
 public WallRun(BasePlayerController controller)
 {
     Controller = controller;
 }
Esempio n. 20
0
        public bool IsActive;         // replicate

        public StrafeDuck(BasePlayerController controller)
        {
            Controller = controller;
        }
Esempio n. 21
0
 public DuckController(BasePlayerController controller)
 {
     Controller = controller;
 }
Esempio n. 22
0
 public virtual void Begin(BasePlayerController player)
 {
 }
Esempio n. 23
0
 public override void Begin(BasePlayerController player)
 {
     EffectState.instance.StartCoroutine(ExplosionRoutine(player, player.FindOpponent()));
 }
Esempio n. 24
0
 public override void Begin(BasePlayerController player)
 {
     EffectState.instance.StartCoroutine(HandleDuration(player));
 }