public void GetHand_GivenAThreeOfAKind_ReturnsNewThreeOfAKindHand() { List <Card> cards = TestUtil.CreateDefaultThreeOfAKindCards(); Hand hand = HandFactory.GetHand(cards); Assert.AreEqual(hand.GetHandType(), HandType.ThreeOfAKind); }
public void GetHand_GivenAPair_ReturnsNewPairHand() { List <Card> cards = TestUtil.CreateDefaultPairCards(); Hand hand = HandFactory.GetHand(cards); Assert.AreEqual(hand.GetHandType(), HandType.Pair); }
public void TakeActionWithReverseCardTest() { var game = GameFactory.InProgress(4); game.Turn.Value = 0; game.CurrentColor = Color.Red; game.Hands[0] = HandFactory.Reverse(Color.Red, game.Hands[0].Player); var action = new Action(game); var currentTurn = game.Turn.Value; var currentHand = action.GetHand(currentTurn); var input = currentHand.Cards.First(c => c.Value == "R").Display; var inHandCount = currentHand.Cards.Count(c => c.Display == input); var discardCount = game.Discard.Count; var card = Card.Create(input); action.TakeAction(card); // with 4 player game, the index should not change with reverse and should now be the last player Assert.True(game.Turn.Value == currentTurn); Assert.True(game.Players[game.Turn.Value].Name == "Player4"); Assert.True(game.Discard.Peek().Display == input); Assert.True(game.Discard.Count == discardCount + 1); Assert.True(game.CurrentColor == card.Color); Assert.True(game.CurrentValue == card.Value); var newHand = action.GetHand(currentTurn); var newInHandCount = newHand.Cards.Count(c => c.Display == input); Assert.True(newInHandCount < inHandCount); }
public void GetHand_GivenAFlush_ReturnsNewFlushHand() { List <Card> cards = TestUtil.CreateTestFlushCards(Suit.Club, new int[] { 10, 13, 3, 5, 4 }); Hand hand = HandFactory.GetHand(cards); Assert.AreEqual(hand.GetHandType(), HandType.Flush); }
public void TakeActionWithWildCardTest() { var game = GameFactory.InProgress(); game.CurrentColor = Color.Red; game.Hands[0] = HandFactory.Wild(game.Hands[0].Player); var action = new Action(game); var currentTurn = game.Turn.Value; var currentHand = action.GetHand(currentTurn); var input = $"{currentHand.Cards.First(c => c.Value == string.Empty).Display} y"; var discardCount = game.Discard.Count; var card = Card.Create(input); var inHandCount = currentHand.Cards.Count(c => c.Display == card.Display); action.TakeAction(card); // assuming a 2 player game, the turn index shuold appear the same Assert.True(game.Turn.Value == currentTurn + 1); Assert.True(game.Discard.Peek().Display == card.Display); Assert.True(game.Discard.Count == discardCount + 1); Assert.True(game.CurrentColor == card.NewColor); Assert.True(game.CurrentValue == card.Value); var newHand = action.GetHand(currentTurn); var newInHandCount = newHand.Cards.Count(c => c.Display == input); Assert.True(newInHandCount < inHandCount); }
public void TakeActionWithCardNotValidTest() { var game = GameFactory.InProgress(); game.CurrentColor = Color.Blue; game.CurrentValue = "1"; game.Hands[0] = HandFactory.SingleColorAndValue("0", Color.Red, game.Hands[0].Player); var action = new Action(game); var currentTurn = game.Turn.Value; var currentHand = action.GetHand(currentTurn); var input = currentHand.Cards.First().Display; var inHandCount = currentHand.Cards.Count(c => c.Display == input); var discardCount = game.Discard.Count; var discardTopCard = game.Discard.Peek().Display; var card = Card.Create(input); action.TakeAction(card); Assert.True(game.Turn.Value == currentTurn); Assert.True(game.Discard.Peek().Display == discardTopCard); Assert.True(game.Discard.Count == discardCount); var newHand = action.GetHand(currentTurn); var newInHandCount = newHand.Cards.Count(c => c.Display == input); Assert.True(newInHandCount == inHandCount); }
public void TakeActionWithDrawFourCardInvalidPlayTest() { var game = GameFactory.InProgress(); game.CurrentColor = Color.Red; game.Hands[0] = HandFactory.DrawFour(game.Hands[0].Player); game.Hands[0].Cards.Add(new Card { Color = Color.Red, Display = "r1", Value = "1" }); var action = new Action(game); var currentTurn = game.Turn.Value; var currentHand = action.GetHand(currentTurn); var input = $"{currentHand.Cards.First(c => c.Value == "D4").Display} y"; var discardCount = game.Discard.Count; var discardTopCard = game.Discard.Peek().Display; var card = Card.Create(input); var inHandCount = currentHand.Cards.Count(c => c.Display == card.Display); action.TakeAction(card); Assert.True(game.Turn.Value == currentTurn); Assert.True(game.Discard.Peek().Display == discardTopCard); Assert.True(game.Discard.Count == discardCount); var newHand = action.GetHand(currentTurn); var newInHandCount = newHand.Cards.Count(c => c.Display == card.Display); Assert.True(newInHandCount == inHandCount); }
protected virtual Finger CreateFinger(FingerIndex finger) { return(HandFactory.GetFinger(_fingerTransforms[(int)finger][1].gameObject, finger, HandType, this, DeviceType, _fingerTransforms[(int)finger][1].gameObject, _fingerTransforms[(int)finger][2].gameObject, _fingerTransforms[(int)finger][3].gameObject)); }
public void GetHand_GivenAHighCardHand_ReturnsNewHighCardHand() { List <Card> cards = TestUtil.CreateDefaultHighCardCards(); Hand hand = HandFactory.GetHand(cards); Assert.AreEqual(hand.GetHandType(), HandType.HighCard); }
public override IEnumerator InitializeHand(device_type_t deviceType) { yield return(new WaitForFixedUpdate()); Hand targetHand = TargetManager.GetHandController(deviceType); Transform target = targetHand.WristTransform; GameObject parent = deviceType == device_type_t.GLOVE_LEFT ? Left.gameObject : Right.gameObject; // Initialize visual body SphereCollider collider = target.gameObject.AddComponent <SphereCollider>(); collider.center = new Vector3(-0.01f, -0.11f, -0.04f); collider.radius = 0.04f; collider.isTrigger = true; target.gameObject.AddComponent <TriggerBinder>(); // Initialize the controller var hand = HandFactory.GetHand(parent, HandType.Physics, TargetManager.HandData, this, deviceType); var controller = hand as PhysicsHand; controller.PhysicsHandSettings = _physicsHandSettings; controller.PhysicsWristSettings = _physicsWristSettings; controller.PhysicsFingerSettings = _physicsFingerSettings; controller.Target = targetHand; HandControllers.Add(controller); controller.Grabber = CreateObjectGrabber(parent, deviceType, target); }
/// <summary> /// Initialize a hand /// </summary> /// <param name="deviceType">The devicetype that is dedicated to this hand</param> public virtual IEnumerator InitializeHand(device_type_t deviceType) { GameObject parent = deviceType == device_type_t.GLOVE_LEFT ? RootBoneLeft.gameObject : RootBoneRight.gameObject; Hand hand = HandFactory.GetHand(parent, HandType.Normal, HandData, this, deviceType); _hands.Add(deviceType, hand); yield break; }
/// <summary> /// Initialize a hand /// </summary> /// <param name="deviceType">The devicetype that is dedicated to this hand</param> public virtual IEnumerator InitializeHand(device_type_t deviceType) { GameObject parent = deviceType == device_type_t.GLOVE_LEFT ? Left.gameObject : Right.gameObject; Hand hand = HandFactory.GetHand(parent, HandType.Normal, HandData, this, deviceType); hand.CalibrateKey = _autoAllignHandsKey; _hands.Add(deviceType, hand); yield break; }
public override void Start() { base.Start(); _physicsHand = Hand as PhysicsHand; if (_physicsHand == null) { Debug.LogWarning("PhysicsWrist needs a PhysicsHand"); } _phalange = HandFactory.GetPhalange(gameObject, 0, 0, DeviceType); }
public override void Start() { base.Start(); _selfRigidbody = GetComponent <Rigidbody>(); _selfRigidbody.constraints = RigidbodyConstraints.FreezeRotation; _physicsHand = Hand as PhysicsHand; if (_physicsHand == null) { Debug.LogWarning("PhysicsWrist needs a PhysicsHand"); } _phalange = HandFactory.GetPhalange(gameObject, 0, 0, DeviceType); }
public override void Start() { base.Start(); //_thumbRigidbody = Phalanges[1].GetComponent<Rigidbody>(); _physicsHand = Hand as PhysicsHand; if (_physicsHand == null) { Debug.LogError("Physics thumb only works with a physics hand"); } // Get the thumb of the target hand ConfigureThumb(Phalanges[1]); AddHingeJoint(Phalanges[2], -Hand.WristTransform.right, _thumbRigidbody); _phalange = HandFactory.GetPhalange(Phalanges[2], Index, 2, DeviceType); }
public override void Start() { base.Start(); _initialThumbQuaternion = PhalangesGameObjects[1].transform.localRotation; _physicsHand = Hand as PhysicsHand; if (_physicsHand == null) { Debug.LogError("PhysicsFinger needs a PhysicsHand"); } for (var i = 1; i <= 2; i++) { if (Index == FingerIndex.thumb && i == 1) { ConstraintThumbPosition(PhalangesGameObjects[i]); ConstraintThumbRotation(PhalangesGameObjects[i]); continue; } GameObject holder = PhalangesGameObjects[i]; GameObject copy = new GameObject(PhalangesGameObjects[i].name); //copy.transform.parent = PhalangesGameObjects[i].transform.parent; copy.transform.parent = Hand.transform; copy.transform.position = PhalangesGameObjects[i].transform.position; copy.transform.rotation = PhalangesGameObjects[i].transform.rotation; Collider targetCollider = PhalangesGameObjects[i].GetComponent <Collider>(); Destroy(targetCollider); CopyCollider(targetCollider, copy); PhalangesGameObjects[i] = copy; // Get the rigidbody where it should connect to var connectedBody = ConnectedBody(i); // Add a hingejoint to the gameobject if (Index == FingerIndex.thumb && DeviceType != device_type_t.GLOVE_LEFT) { _joints[i] = AddHingeJoint(PhalangesGameObjects[i], new Vector3(0, 0, 1), connectedBody); } else if (Index == FingerIndex.thumb) { _joints[i] = AddHingeJoint(PhalangesGameObjects[i], new Vector3(0, 0, 1), connectedBody); } else { _joints[i] = AddHingeJoint(PhalangesGameObjects[i], new Vector3(0, 0, 1), connectedBody); } _phalanges[i] = HandFactory.GetPhalange(PhalangesGameObjects[i], Index, i, DeviceType); PhalangesGameObjects[i].GetComponent <Rigidbody>().maxAngularVelocity = 100f; // Add limits to the hingejoints of the finger if (DeviceType == device_type_t.GLOVE_RIGHT) { ChangeJointLimit(_joints[i], -10, 120); } else { ChangeJointLimit(_joints[i], -120, 10); } PhalangesGameObjects[i] = holder; } }
public Player(string name, List <Card> cards) { this.Name = name; this.HandOfCards = HandFactory.GetHand(cards); }
protected virtual Wrist AddWristController(device_type_t deviceType) { return(HandFactory.GetWristController(WristTransform.gameObject, HandType, deviceType, this)); }