Ejemplo n.º 1
0
        public void GetHand_GivenAThreeOfAKind_ReturnsNewThreeOfAKindHand()
        {
            List <Card> cards = TestUtil.CreateDefaultThreeOfAKindCards();
            Hand        hand  = HandFactory.GetHand(cards);

            Assert.AreEqual(hand.GetHandType(), HandType.ThreeOfAKind);
        }
Ejemplo n.º 2
0
        public void GetHand_GivenAPair_ReturnsNewPairHand()
        {
            List <Card> cards = TestUtil.CreateDefaultPairCards();
            Hand        hand  = HandFactory.GetHand(cards);

            Assert.AreEqual(hand.GetHandType(), HandType.Pair);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 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));
 }
Ejemplo n.º 9
0
        public void GetHand_GivenAHighCardHand_ReturnsNewHighCardHand()
        {
            List <Card> cards = TestUtil.CreateDefaultHighCardCards();
            Hand        hand  = HandFactory.GetHand(cards);

            Assert.AreEqual(hand.GetHandType(), HandType.HighCard);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        /// <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;
        }
Ejemplo n.º 12
0
        /// <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;
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 16
0
        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;
            }
        }
Ejemplo n.º 17
0
 public Player(string name, List <Card> cards)
 {
     this.Name        = name;
     this.HandOfCards = HandFactory.GetHand(cards);
 }
Ejemplo n.º 18
0
 protected virtual Wrist AddWristController(device_type_t deviceType)
 {
     return(HandFactory.GetWristController(WristTransform.gameObject, HandType, deviceType, this));
 }