Beispiel #1
0
    public void Bop(Vector2 posSub, BopType bopType, Player otherPlayer = null)
    {
        if (invincible) return; // Can't get bopped if recently been bopped

        // Bop up, up and away
        if (bopType == BopType.KICKED) {
            bopForce.x = Mathf.Sign(posSub.x);
            rbody.velocity = bopForce;
        }
        // Enable stun particles
        if (bopType != BopType.INKED) {
            Go.killAllTweensWithTarget(stunHalo);
            stunHalo.gameObject.SetActive(true);
            stunHalo.localScale *= 0.7f;

            Go.to(stunHalo, 1.5f, haloConfig);
        }
        // Audiovisual update
        if (bopType == BopType.INKED) {
            // Ink splat
            head.EnableInkSplat();
            isInked = true;
            face.SetFace(Face.FaceType.Surprised);
            _audio.PlayClipOnce("inkhit", 1f * AudioManager.sfxVol, Random.Range(0.4f, 0.7f));
        } else if (bopType == BopType.NOPED) {
            face.SetFace(Face.FaceType.Surprised);
            _audio.PlayClipOnce("kick", 1.5f * AudioManager.sfxVol, 0.5f);
        } else {
            face.SetFace(Face.FaceType.Bopped);
            _audio.PlayClipOnce("kick", 1.5f * AudioManager.sfxVol, 1f);
        }

        invincible = true;
        canControl = false;

        Go.killAllTweensWithTarget(_collider);
        _collider.offset = new Vector2(0, 0.5f);
        _collider.size = new Vector2(1f, 1f);

        // Present-release
        if (hasGift) {
            hasGift = false;
            GameManager.gift.SetFree(posSub, otherPlayer);
        }

        // Time to recover depends on what hit you - ink shooter or other player
        WaitForSeconds wfs = wfs_unBopDelay;
        if (bopType == BopType.INKED) wfs = wfs_unBopInkDelay;
        if (bopType == BopType.NOPED) wfs = wfs_unBopNopeDelay;
        StartCoroutine(ThenUnbop(wfs));
    }
        private void QueryAndAssertMultiBopComponentMultiElements(int expectedRigCount, int expectedComponentCount, List <Tuple <string, string> > uidDescNumbers, BopType bopType)
        {
            var query = new Rig
            {
                Bop = new Bop
                {
                    BopComponent = new List <BopComponent>()
                }
            };

            uidDescNumbers.ForEach(n =>
            {
                query.Bop.BopComponent.Add(new BopComponent
                {
                    Uid         = $"{_bopPrefix}-{n.Item1}",
                    TypeBopComp = bopType,
                    DescComp    = $"{_bopPrefix}-{n.Item2}"
                });
            });

            // Expected Result: expectedRigCount Rigs
            var results = DevKit.Query <RigList, Rig>(query, ObjectTypes.GetObjectType <RigList>(), null, OptionsIn.ReturnElements.All);

            Assert.AreEqual(expectedRigCount, results.Count);

            // Each rig that is returned should have expectedComponentCount BopComponents and 6 NameTags
            results.ForEach(r =>
            {
                Assert.AreEqual(expectedComponentCount, r.Bop.BopComponent.Count);
                Assert.AreEqual(6, r.Bop.NameTag.Count);
            });
        }
        private void QueryAndAssertOneBopComponentMultiElements(int expectedRigCount, string uidNumber, string descNumber, BopType bopType)
        {
            var nameCommentNumbers = new List <Tuple <string, string> >()
            {
                new Tuple <string, string>(uidNumber, descNumber)
            };

            QueryAndAssertMultiBopComponentMultiElements(expectedRigCount, 1, nameCommentNumbers, bopType);
        }
Beispiel #4
0
 public BopBuilder(BopType type)
 {
     this.bopType = type;
 }