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); }
public BopBuilder(BopType type) { this.bopType = type; }