Example #1
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>();
        NWeapon           w  = collision.collider.gameObject.GetComponent <NWeapon>();

        if (np != null)
        {
            if (!np.GetMovementBool("pushed"))
            {
                np.HitByAir(-collision.contacts[0].normal);
            }
            if (!collided)
            {
                IEnumerator coroutine = Explosion(false);
                StartCoroutine(coroutine);
            }
        }
        if (w != null)
        {
            w.HitByAir(-collision.contacts[0].normal, wielder);
            if (!collided)
            {
                IEnumerator coroutine = Explosion(false);
                StartCoroutine(coroutine);
            }
        }
        else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms")))
        {
            if (!collided)
            {
                IEnumerator coroutine = Explosion(true);
                StartCoroutine(coroutine);
            }
        }
    }
Example #2
0
    private void OnTriggerEnter2D(Collider2D collider)
    {
        NWeapon w = collider.gameObject.GetComponent <NWeapon>();

        if (w != null)
        {
            w.HitByEarth();
        }
    }
Example #3
0
    void Start()
    {
        rigidBody      = GetComponent <Rigidbody2D>();
        boxCollider    = GetComponent <BoxCollider2D>();
        animator       = GetComponent <Animator>();
        spriteRenderer = GetComponent <SpriteRenderer>();
        fireParticles  = transform.GetChild(0).GetComponent <ParticleSystem>();
        bloodParticles = transform.GetChild(1).GetComponent <ParticleSystem>();

        joystick                 = ReInput.players.GetPlayer(playerNumber);
        movementBools            = new Dictionary <string, bool>();
        movementBools["pushed"]  = false;
        movementBools["succed"]  = false;
        movementBools["bounced"] = false;
        movementBools["frozen"]  = false;
        movementBools["ashed"]   = false;
        movementBools["spiked"]  = false;
        movementBools["slipped"] = false;
        movementBools["doubled"] = false;
        movementBools["active"]  = false;
        NStateInfo info = new NStateInfo(this, rigidBody, boxCollider, joystick, animator, spriteRenderer, balanceData);

        movementStates     = new NState[13];
        movementStates[0]  = new NStateNormal(info, EState.normal);
        movementStates[1]  = new NStateJump1(info, EState.jump1);
        movementStates[2]  = new NStateJump2(info, EState.jump2);
        movementStates[3]  = new NStateAshes(info, EState.ashes);
        movementStates[4]  = new NStateAirborne(info, EState.airborne);
        movementStates[5]  = new NStateSucc(info, EState.succ, transform.position);
        movementStates[6]  = new NStatePushed(info, EState.pushed, Vector2.zero);
        movementStates[7]  = new NStateBounced(info, EState.bounced, info.bd.bouncedInitialVelocity, info.bd.bouncedTransitionLockoutFrames);
        movementStates[8]  = new NStateSpiked(info, EState.spiked, Vector2.zero);
        movementStates[9]  = new NStateSlipped(info, EState.slipped);
        movementStates[10] = new NStateSlam(info, EState.slam);
        movementStates[11] = new NStateBounced(info, EState.boinked, info.bd.boinkedInitialVelocity, info.bd.boinkedTransitionLockoutFrames);
        movementStates[12] = new NStateInactive(info, EState.inactive);

        movementState = movementStates[12];

        weapons = new SortedList <EElement, Queue <NWeapon> >(6);
        weapons[EElement.air]    = new Queue <NWeapon>(weaponCounts[0]);
        weapons[EElement.fire]   = new Queue <NWeapon>(weaponCounts[1]);
        weapons[EElement.water]  = new Queue <NWeapon>(weaponCounts[2]);
        weapons[EElement.earth]  = new Queue <NWeapon>(weaponCounts[3]);
        weapons[EElement.plasma] = new Queue <NWeapon>(weaponCounts[4]);
        weapons[EElement.none]   = new Queue <NWeapon>(1);
        weaponEquipped           = EElement.air;
        weapon    = null;
        totem     = null;
        totemDist = Mathf.Infinity;
        living    = true;
        avatar    = false;
    }
Example #4
0
 public void TrySpawnAir()
 {
     if (weaponEquipped == EElement.air && weapons[EElement.air].Count < weaponCounts[(int)EElement.air])
     {
         Transform airTransform = Instantiate(airPrefab);
         NWeapon   w            = airTransform.GetComponent <NWeapon>();
         w.SetWielder(this, joystick);
         airTransform.SetParent(transform);
         weapons[EElement.air].Enqueue(w);
         weaponEquipped = EElement.air;
         SetAllWeaponAngles();
         weapon = weapons[EElement.air].Peek();
     }
 }
Example #5
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>();
        NWeapon           w  = collision.collider.gameObject.GetComponent <NWeapon>();

        if (np != null)
        {
            np.HitByWater();
            StartCoroutine("Explosion");
        }
        else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms")))
        {
            StartCoroutine("Explosion");
        }
        else if (w != null)
        {
            w.HitByWater();
        }
    }
Example #6
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        NPlayerController np = collision.collider.gameObject.GetComponent <NPlayerController>();
        NWeapon           w  = collision.collider.gameObject.GetComponent <NWeapon>();

        if (np != null && np.GetLivingStatus() && np != wielder)
        {
            np.HitByEarth(-collision.contacts[0].normal);
        }
        if (w != null)
        {
            w.HitByEarth();
        }
        else if (collision.collider.gameObject.layer.Equals(LayerMask.NameToLayer("Platforms")) && (wielder != null))
        {
            wielder         = null;
            decelerating    = true;
            falling         = true;
            rb.gravityScale = gravityScale;
        }
    }
Example #7
0
    private void SpawnWeapons()
    {
        if (totem.Pickup())
        {
            int      weaponsCount        = totem.GetWeaponCount();
            EElement element             = totem.GetElement();
            int      originalWeaponCount = weapons[element].Count;
            foreach (NWeapon air in weapons[EElement.air])
            {
                Destroy(air.gameObject);
            }
            weapons[EElement.air].Clear();

            for (int i = 0; i < weaponsCount && weapons[element].Count < weaponCounts[(int)element]; i++)
            {
                Transform weaponTransform;
                NWeapon   w;
                if (totem.GetElement() != EElement.earth)
                {
                    weaponTransform = Instantiate(totem.GetWeapon());
                    w = weaponTransform.GetComponent <NWeapon>();
                }
                else
                {
                    weaponTransform = totem.GetWeapon();
                    w = weaponTransform.GetComponent <NWeaponEarth>();
                }
                w.SetWielder(this, joystick);
                weaponTransform.SetParent(transform);
                weapons[element].Enqueue(w);
            }

            weaponEquipped = element;
            SetAllWeaponAngles();
            weapon = weapons[element].Peek();
        }
    }
Example #8
0
    void Update()
    {
        if (movementState != null)
        {
            movementState.StateUpdate();
        }

        if (living)
        {
            grabButton = joystick.GetButtonDown("Grab Weapon");
            if (grabButton && totem != null && totem.GetCooledDown())
            {
                if (weapons[totem.GetElement()].Count < weaponCounts[(int)totem.GetElement()])
                {
                    if (avatar)
                    {
                        SpawnWeapons();
                    }
                    else if (!avatar && (!(weapon != null) || totem.GetElement() == weaponEquipped || weaponEquipped == EElement.air))
                    {
                        SpawnWeapons();
                    }
                }
                if (onFire != null && totem.GetElement() == EElement.water)
                {
                    Extinguish();
                    Destroy(weapons[EElement.water].Dequeue().gameObject);
                    SetWeaponAngles(weaponEquipped, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity);
                    weapon = weapons[weaponEquipped].Peek();
                }
            }

            dischargeButton = joystick.GetButtonDown("Discharge Weapon");
            if (dischargeButton && weapon != null)
            {
                Vector2 angle = new Vector2(joystick.GetAxis("Aim Horizontal"), joystick.GetAxis("Aim Vertical")).normalized;
                weapon.Discharge(angle, boxCollider, spriteRenderer.flipX);
                weapons[weaponEquipped].Dequeue();
                weapon = null;
                if (weapons[weaponEquipped].Count != 0)
                {
                    SetWeaponAngles(weaponEquipped, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity, Mathf.Infinity);
                    weapon = weapons[weaponEquipped].Peek();
                }
                else
                {
                    if (avatar && CycleWeaponEquipped())
                    {
                        weapon = weapons[weaponEquipped].Peek();
                        SetAllWeaponAngles();
                    }
                    else
                    {
                        weaponEquipped = EElement.air;
                    }
                }
            }

            shieldButton = joystick.GetButtonDown("Shield");
            if (shieldButton && weapon != null)
            {
            }

            swapButton = joystick.GetButtonDown("Swap Weapon");
            if (avatar && swapButton)
            {
                EElement oldWeapon = weaponEquipped;
                if (CycleWeaponEquipped())
                {
                    weapon = weapons[weaponEquipped].Peek();
                }
            }
        }
    }