Пример #1
0
        protected void Swap(int ID1, int ID2, int Value1, int Value2)
        {
            SortList[ID1] = Value2;
            SortList[ID2] = Value1;

            OnSwapEventArgs OSEA = new OnSwapEventArgs(ID1, ID2, Value1, Value2);

            OnSwap?.Invoke(this, OSEA);
        }
Пример #2
0
        public Swaper Swap(SwipeDirection direction, float x, float y)
        {
            if (!swaping && IsEnabled)
            {
                X = x;
                Y = y;
                SwipeDirection = direction;
                swaping        = true;
                OnSwap?.Invoke(this);
                swaping = false;
            }

            return(this);
        }
Пример #3
0
        public Courier(Menu mainMenu)
        {
            var menu = new Menu("Courier", "courierSwapper");

            menu.AddItem(
                new MenuItem("courierSwapItems", "Items:").SetValue(abilityToggler = new AbilityToggler(new Dictionary <string, bool>())));

            var key = new MenuItem("courierKey", "Hotkey").SetValue(new KeyBind('-', KeyBindType.Press));

            menu.AddItem(key);
            key.ValueChanged += (sender, args) =>
            {
                if (args.GetNewValue <KeyBind>().Active)
                {
                    OnSwap?.Invoke(this, EventArgs.Empty);
                }
            };

            mainMenu.AddSubMenu(menu);
        }
Пример #4
0
        private void UpdateState()
        {
            if (pendingQuads.Count == 0 && IsRunning == false)
            {
                foreach (var cube in cubes)
                {
                    foreach (var quad in cube.Quads)
                    {
                        quad.Swap();
                    }
                }

                if (OnSwap != null)
                {
                    OnSwap.Invoke();
                }

                UpdateLists();
                UpdateLod();
            }
        }
Пример #5
0
    IEnumerator PokerDash()
    {
        if (busy)
        {
            yield break;
        }
        busy = true;
        playerControl.invincible = true;
        OnSwap?.Invoke();

        Smoke();
        float timer = Time.realtimeSinceStartup;

        //bulletTime.ActiveBulletTime(true, BulletTime.BulletTimePriority.BulletTimePriority_High);
        swapTrajectory.active = true;

        Collider2D target       = col;
        Sprite     targetSprite = null;
        Sprite     playerSprite = playerControl.spriteRenderer.sprite;

        if (target.GetComponent <SpriteRenderer>() != null)
        {
            targetSprite = target.GetComponent <SpriteRenderer>().sprite;
        }
        else
        {
            targetSprite = target.GetComponent <Thing>().sr.sprite;
        }
        //target.GetComponent<SpriteRenderer>().sprite = pokerSprite;
        //playerControl.spriteRenderer.sprite = pokerSprite;
        player.layer = 18;
        //playerControl.box.enabled = false;
        playerControl.disableAirControl = true;
        bool playerFaceRight = playerControl.spriteRenderer.flipX;

        dir = (Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position).normalized;
        Vector3 diff = Input.mousePosition - startingPoint;



        Rigidbody2D   targetRb    = target.GetComponent <Rigidbody2D>();
        Vector2       targetV     = targetRb.velocity;
        BoxCollider2D targetBox   = target.GetComponent <BoxCollider2D>();
        Thing         targetThing = target.GetComponent <Thing>();

        if (target.GetComponent <Enemy>() != null)
        {
            target.GetComponent <Enemy>().hpText.SetActive(false);
        }
        bool targetIsTrigger = targetBox.isTrigger;



        Vector3 prevPos = new Vector3(transform.position.x,
                                      playerControl.isTouchingGround ? player.GetComponent <Thing>().GetLowerY() + targetBox.size.y / 2f + 2f : transform.position.y,
                                      transform.position.z);

        Vector3 prevColPos = new Vector3(target.transform.position.x,
                                         targetThing.isTouchingGround ? targetThing.GetLowerY() + playerControl.box.size.y / 2f: target.transform.position.y,
                                         target.transform.position.z);

        Vector3 newPrevColPos = target.transform.position;

        targetBox.enabled         = false;
        playerControl.box.enabled = false;
        audioSource.PlayOneShot(clip, 0.8f);

        //float speed = Vector3.Distance(prevPos, prevColPos) / dashDur;
        targetThing.swapping = true;
        //target.transform.position = prevPos;
        //player.transform.position = prevPos;
        playerControl.spriteRenderer.GetComponent <Animator>().enabled = false;
        if (target.GetComponent <Animator>() != null)
        {
            target.GetComponent <Animator>().enabled = false;
        }
        Vector3        playerScale = transform.localScale;
        Vector3        targetScale = target.transform.localScale;
        SpriteRenderer targetSr    = target.GetComponent <SpriteRenderer>();

        if (targetSr == null)
        {
            targetSr = target.GetComponent <Thing>().sr;
        }
        float playerGravity = playerControl.rb.gravityScale;
        float targetGravity = targetRb.gravityScale;

        playerControl.rb.gravityScale = 0f;
        targetRb.gravityScale         = 0f;
        float speed = Mathf.Max(dashSpeed, Vector3.Distance(prevColPos, prevPos) / maxDashTime); // Vector3.Distance(prevColPos, prevPos) / pokerTransitionDur / 3f;
        float curr  = 0f;

        //playerControl.spriteRenderer.sprite = turnPokerSprite;
        pokerTransitionDur = Vector3.Distance(prevPos, prevColPos) / speed;
        Vector3 destination = Vector3.zero;

        if (overrideDir != Vector2.zero)
        {
            dir = overrideDir;
        }

        target.transform.position = prevPos;
        while (curr < pokerTransitionDur)
        {
            destination         = prevColPos;
            transform.position += (newPrevColPos - prevPos).normalized * speed * Time.fixedDeltaTime;
            //playerControl.rb.velocity = (prevColPos - prevPos).normalized * speed;
            //transform.DoMove();
            //transform.position = Vector3.SmoothDamp(transform.position, prevColPos, ref destinationUpdateSpeed, pokerTransitionDur);
            if (targetRb != null)
            {
                targetRb.velocity = Vector2.zero;
            }

            yield return(new WaitForFixedUpdate());

            curr += Time.fixedDeltaTime;
            ShadowPool.instance.GetFromPool();
        }

        curr = curr - pokerTransitionDur;
        if (target != null)
        {
            target.transform.position = prevPos;
        }

        curr = curr - pokerTransitionDur;
        playerControl.transform.position = prevColPos;


        playerControl.spriteRenderer.GetComponent <Animator>().enabled = true;
        if (target.GetComponent <Animator>() != null)
        {
            target.GetComponent <Animator>().enabled = true;
        }
        playerControl.disableAirControl = false;

        Smoke();
        player.layer         = 9;
        targetThing.swapping = false;
        playerControl.spriteRenderer.sprite = playerSprite;
        player.transform.localScale         = playerScale;
        target.transform.localScale         = targetScale;
        playerControl.rb.gravityScale       = playerGravity;
        targetRb.gravityScale = targetGravity;



        if (targetRb != null)
        {
            targetSr.sprite = targetSprite;
            //targetBox.isTrigger = targetIsTrigger;
            if (diff.magnitude > directionSwapThreshold && (targetThing.canBeThrown || throwOverride) && startingPoint != Vector3.negativeInfinity)
            {
                StartCoroutine(targetThing.CancelBeingThrown(0.65f));
                if (targetThing.GetComponent <EnemyBullet_Transable_Forward>() == null)
                {
                    targetRb.velocity = dir.normalized * (targetThing.overrideThrowSpeed != 0f ? targetThing.overrideThrowSpeed : swapSpeed);
                }
                else
                {
                    targetRb.velocity = dir.normalized * targetV.magnitude;
                    HandleBulletAcc(targetRb.GetComponent <EnemyBullet_Transable_Forward>(), dir);
                }

                StartCoroutine(targetThing.SetSlippery());
                targetThing.thrownDir = dir;
                if (prevCol == col && Mathf.Abs(targetRb.gravityScale) >= 10f)
                {
                    consecutiveThrowCount += 1;
                    if (consecutiveThrowCount >= allowedConsecutiveThrowCount)
                    {
                        StartCoroutine(CancelDirectionThrow());
                    }
                }
                else
                {
                    consecutiveThrowCount = 0;
                }
                prevCol = col;
            }

            else if (targetThing.GetComponent <EnemyBullet_Transable_Forward>() == null)
            {
                if (!targetThing.touchingFloor() && targetRb.gravityScale != 0f)
                {
                    targetRb.velocity = new Vector2(0f, 100f);
                }
                else
                {
                    targetRb.velocity = Vector2.zero;
                }
            }

            else
            {
                targetRb.velocity = targetV;
            }

            target.transform.position = prevPos;
            targetBox.enabled         = true;
            if (target.GetComponent <Enemy>() != null)
            {
                //target.GetComponent<Enemy>().faceRight = !playerFaceRight;
                target.GetComponent <Enemy>().hpText.SetActive(true);
            }

            targetThing.swapTriggerMethod?.Invoke();
        }
        playerControl.spriteRenderer.flipX = playerFaceRight;
        playerControl.box.enabled          = true;
        busy = false;
        playerControl.invincible = false;
        //bulletTime.ActiveBulletTime(false, BulletTime.BulletTimePriority.BulletTimePriority_High);
        Energy.Instance.bulletTimeTimer = 0f;
        playerControl.canJump           = false;

        ProCamera2DShake.Instance.Shake(0.2f, new Vector2(50f, 50f));

        swapTrajectory.active = false;

        yield return(new WaitForFixedUpdate());

        if (!playerControl.touchingFloor())
        {
            playerControl.rb.velocity = new Vector2(0f, 250f);
        }
        else
        {
            playerControl.rb.velocity = Vector2.zero;
        }
        yield return(new WaitForFixedUpdate());

        if (!playerControl.touchingFloor())
        {
            playerControl.rb.velocity = new Vector2(0f, 250f);
        }
        else
        {
            playerControl.rb.velocity = Vector2.zero;
        }
        yield return(new WaitForFixedUpdate());

        if (!playerControl.touchingFloor())
        {
            playerControl.rb.velocity = new Vector2(0f, 250f);
        }
        else
        {
            playerControl.rb.velocity = Vector2.zero;
        }
    }