Example #1
0
    public CardHandler.HandValue EvaluatePower()
    {
        List <Card> powerCards = m_powerCards.Select(cui => cui.m_card).ToList();

        CardHandler.HandValue powerValue = CardHandler.EvaluateCards(powerCards);
        //Debug.Log( "Power type " + powerValue.m_type + " Value " + powerValue.m_highCard );
        return(powerValue);
    }
Example #2
0
    public CardHandler.HandValue EvaluateHeight()
    {
        List <Card> heightCards = m_heightCards.Select(cui => cui.m_card).ToList();

        CardHandler.HandValue heightValue = CardHandler.EvaluateCards(heightCards);
        //Debug.Log( "Height type " + heightValue.m_type + " Value " + heightValue.m_highCard );
        return(heightValue);
    }
Example #3
0
    public CardHandler.HandValue EvaluateDirection()
    {
        List <Card> directionCards = m_directionCards.Select(cui => cui.m_card).ToList();

        CardHandler.HandValue dirValue = CardHandler.EvaluateCards(directionCards);
        //Debug.Log( "Direction type " + dirValue.m_type + " Value " + dirValue.m_highCard );
        return(dirValue);
    }
Example #4
0
 public void UpdateArcRender()
 {
     CardHandler.HandValue dirValue = new CardHandler.HandValue
     {
         m_type = CardHandler.HandType.HighCard, m_highCard = CardHandler.Value.Eight
     };
     CardHandler.HandValue angleValue = new CardHandler.HandValue
     {
         m_type = CardHandler.HandType.HighCard, m_highCard = CardHandler.Value.Two
     };
     CardHandler.HandValue powerValue = new CardHandler.HandValue
     {
         m_type = CardHandler.HandType.HighCard, m_highCard = CardHandler.Value.Two
     };
     UpdateArcRender(dirValue, angleValue, powerValue);
 }
Example #5
0
    public void StrikeBall(CardHandler.HandValue directionValue, CardHandler.HandValue heightValue, CardHandler.HandValue powerValue)
    {
        if (m_isMoving)
        {
            return;
        }

        float dirAngle    = GenerateBallDirection(directionValue);
        float heightAngle = GenerateBallHeight(heightValue);
        float power       = GenerateBallPower(powerValue);

        Vector3 forceVector = Vector3.forward;

        transform.InverseTransformPoint(forceVector);
        forceVector  = Quaternion.Euler(0, dirAngle, 0) * forceVector;
        forceVector  = Quaternion.Euler(heightAngle, 0, 0) * forceVector;
        forceVector *= power;


        m_rigidBody.AddForce(forceVector.x, forceVector.y, forceVector.z);
    }
Example #6
0
    public void UpdateArcRender(CardHandler.HandValue directionValue, CardHandler.HandValue heightValue, CardHandler.HandValue powerValue)
    {
        // Reset arrow
        m_arrow.transform.rotation = Quaternion.Euler(90, 0, 0);

        int arcRange = 140;

        switch (directionValue.m_type)
        {
        case CardHandler.HandType.Pair:
            arcRange = 110;
            break;

        case CardHandler.HandType.TwoPair:
            arcRange = 80;
            break;

        case CardHandler.HandType.ThreeOfAKind:
            arcRange = 50;
            break;

        case CardHandler.HandType.Straight:
            break;

        case CardHandler.HandType.Flush:
            arcRange = 25;
            break;

        case CardHandler.HandType.FullHouse:
            arcRange = 10;
            break;

        case CardHandler.HandType.FourOfAKind:
            arcRange = 2;
            break;

        case CardHandler.HandType.StraightFlush:
            break;

        case CardHandler.HandType.RoyalFlush:
            break;
        }

        float dirAngle = -180;

        switch (directionValue.m_highCard)
        {
        case CardHandler.Value.Two:
            break;

        case CardHandler.Value.Three:
            dirAngle = -150;
            break;

        case CardHandler.Value.Four:
            dirAngle = -120;
            break;

        case CardHandler.Value.Five:
            dirAngle = -90;
            break;

        case CardHandler.Value.Six:
            dirAngle = -60;
            break;

        case CardHandler.Value.Seven:
            dirAngle = -30;
            break;

        case CardHandler.Value.Eight:
            dirAngle = 0;
            break;

        case CardHandler.Value.Nine:
            dirAngle = 30;
            break;

        case CardHandler.Value.Ten:
            dirAngle = 60;
            break;

        case CardHandler.Value.Jack:
            dirAngle = 90;
            break;

        case CardHandler.Value.Queen:
            dirAngle = 120;
            break;

        case CardHandler.Value.King:
            dirAngle = 150;
            break;

        default:
            //TODO: Make this a free shoot with a worse range
            dirAngle = 180;
            //arcRange = Mathf.FloorToInt( arcRange * 1.2f );
            break;
        }

        float heightAngle = 0;

        switch (heightValue.m_highCard)
        {
        case CardHandler.Value.Two:
        case CardHandler.Value.Three:
        case CardHandler.Value.Four:
        case CardHandler.Value.Five:
            break;

        case CardHandler.Value.Six:
            heightAngle = 5;
            break;

        case CardHandler.Value.Seven:
            heightAngle = 10;
            break;

        case CardHandler.Value.Eight:
            heightAngle = 15;
            break;

        case CardHandler.Value.Nine:
            heightAngle = 20;
            break;

        case CardHandler.Value.Ten:
            heightAngle = 25;
            break;

        case CardHandler.Value.Jack:
            heightAngle = 30;
            break;

        case CardHandler.Value.Queen:
            heightAngle = 35;
            break;

        case CardHandler.Value.King:
            heightAngle = 40;
            break;

        default:
            //TODO: Make this a free shoot with a worse range
            heightAngle = 45;
            //arcRange = Mathf.FloorToInt( arcRange * 1.2f );
            break;
        }

        float force = 50;

        switch (powerValue.m_highCard)
        {
        case CardHandler.Value.Two:
            break;

        case CardHandler.Value.Three:
            force = 60;
            break;

        case CardHandler.Value.Four:
            force = 70;
            break;

        case CardHandler.Value.Five:
            force = 80;
            break;

        case CardHandler.Value.Six:
            force = 90;
            break;

        case CardHandler.Value.Seven:
            force = 100;
            break;

        case CardHandler.Value.Eight:
            force = 110;
            break;

        case CardHandler.Value.Nine:
            force = 120;
            break;

        case CardHandler.Value.Ten:
            force = 130;
            break;

        case CardHandler.Value.Jack:
            force = 145;
            break;

        case CardHandler.Value.Queen:
            force = 160;
            break;

        case CardHandler.Value.King:
            force = 180;
            break;

        default:
            force = 200;
            break;
        }
        float multiplier = 1;

        switch (powerValue.m_type)
        {
        case CardHandler.HandType.Pair:
            multiplier = 1.3f;
            break;

        case CardHandler.HandType.TwoPair:
            multiplier = 1.5f;
            break;

        case CardHandler.HandType.ThreeOfAKind:
            multiplier = 1.8f;
            break;

        case CardHandler.HandType.Straight:
            break;

        case CardHandler.HandType.Flush:
            multiplier = 2.5f;
            break;

        case CardHandler.HandType.FullHouse:
            multiplier = 3.0f;
            break;

        case CardHandler.HandType.FourOfAKind:
            multiplier = 5.0f;
            break;

        case CardHandler.HandType.StraightFlush:
            break;

        case CardHandler.HandType.RoyalFlush:
            break;
        }

        float power = force * multiplier * 0.005f;

        if (power < 0.5f)
        {
            power = 0.5f;
        }

        m_arrow.transform.rotation = Quaternion.Euler(90 - heightAngle, dirAngle, 0);
        m_arrow.size = new Vector2(m_arrow.size.x, power);

        m_arcShader.SetFloat("_Arcrange", arcRange);
        m_arcDisplay.transform.rotation = Quaternion.Euler(90 - heightAngle, dirAngle - arcRange * 0.5f + 90.0f, 0);
    }
Example #7
0
    public float GenerateBallPower(CardHandler.HandValue cardValue)
    {
        float force = 50;

        switch (cardValue.m_highCard)
        {
        case CardHandler.Value.Two:
            break;

        case CardHandler.Value.Three:
            force = 60;
            break;

        case CardHandler.Value.Four:
            force = 70;
            break;

        case CardHandler.Value.Five:
            force = 80;
            break;

        case CardHandler.Value.Six:
            force = 90;
            break;

        case CardHandler.Value.Seven:
            force = 100;
            break;

        case CardHandler.Value.Eight:
            force = 110;
            break;

        case CardHandler.Value.Nine:
            force = 120;
            break;

        case CardHandler.Value.Ten:
            force = 130;
            break;

        case CardHandler.Value.Jack:
            force = 145;
            break;

        case CardHandler.Value.Queen:
            force = 160;
            break;

        case CardHandler.Value.King:
            force = 180;
            break;

        default:
            force = 200;
            break;
        }
        float multiplier = 1;

        switch (cardValue.m_type)
        {
        case CardHandler.HandType.Pair:
            multiplier = 1.3f;
            break;

        case CardHandler.HandType.TwoPair:
            multiplier = 1.5f;
            break;

        case CardHandler.HandType.ThreeOfAKind:
            multiplier = 1.8f;
            break;

        case CardHandler.HandType.Straight:
            break;

        case CardHandler.HandType.Flush:
            multiplier = 2.5f;
            break;

        case CardHandler.HandType.FullHouse:
            multiplier = 3.0f;
            break;

        case CardHandler.HandType.FourOfAKind:
            multiplier = 5.0f;
            break;

        case CardHandler.HandType.StraightFlush:
            break;

        case CardHandler.HandType.RoyalFlush:
            break;
        }

        return(force * multiplier * 2.0f);
    }
Example #8
0
    public float GenerateBallHeight(CardHandler.HandValue cardValue)
    {
        int arcRange = 45;

        switch (cardValue.m_type)
        {
        case CardHandler.HandType.Pair:
            arcRange = 35;
            break;

        case CardHandler.HandType.TwoPair:
            arcRange = 25;
            break;

        case CardHandler.HandType.ThreeOfAKind:
            arcRange = 20;
            break;

        case CardHandler.HandType.Straight:
            break;

        case CardHandler.HandType.Flush:
            arcRange = 10;
            break;

        case CardHandler.HandType.FullHouse:
            arcRange = 5;
            break;

        case CardHandler.HandType.FourOfAKind:
            arcRange = 2;
            break;

        case CardHandler.HandType.StraightFlush:
            break;

        case CardHandler.HandType.RoyalFlush:
            break;
        }

        float angle = 0;

        switch (cardValue.m_highCard)
        {
        case CardHandler.Value.Two:
        case CardHandler.Value.Three:
        case CardHandler.Value.Four:
        case CardHandler.Value.Five:
            break;

        case CardHandler.Value.Six:
            angle = 5;
            break;

        case CardHandler.Value.Seven:
            angle = 10;
            break;

        case CardHandler.Value.Eight:
            angle = 15;
            break;

        case CardHandler.Value.Nine:
            angle = 20;
            break;

        case CardHandler.Value.Ten:
            angle = 25;
            break;

        case CardHandler.Value.Jack:
            angle = 30;
            break;

        case CardHandler.Value.Queen:
            angle = 35;
            break;

        case CardHandler.Value.King:
            angle = 40;
            break;

        default:
            //TODO: Make this a free shoot with a worse range
            angle = 45;
            //arcRange = Mathf.FloorToInt( arcRange * 1.2f );
            break;
        }

        float result = angle + Random.Range(0.0f, arcRange);

        return(result);
    }
Example #9
0
    public void UpdateArc(BallSetting setting, CardHandler.HandValue cardValue)
    {
        switch (setting)
        {
        case BallSetting.Direction:
        {
            int arcRange = 140;
            switch (cardValue.m_type)
            {
            case CardHandler.HandType.Pair:
                arcRange = 110;
                break;

            case CardHandler.HandType.TwoPair:
                arcRange = 80;
                break;

            case CardHandler.HandType.ThreeOfAKind:
                arcRange = 50;
                break;

            case CardHandler.HandType.Straight:
                break;

            case CardHandler.HandType.Flush:
                arcRange = 25;
                break;

            case CardHandler.HandType.FullHouse:
                arcRange = 10;
                break;

            case CardHandler.HandType.FourOfAKind:
                arcRange = 2;
                break;

            case CardHandler.HandType.StraightFlush:
                break;

            case CardHandler.HandType.RoyalFlush:
                break;
            }

            float angle = -180;
            switch (cardValue.m_highCard)
            {
            case CardHandler.Value.Two:
                break;

            case CardHandler.Value.Three:
                angle = -150;
                break;

            case CardHandler.Value.Four:
                angle = -120;
                break;

            case CardHandler.Value.Five:
                angle = -90;
                break;

            case CardHandler.Value.Six:
                angle = -60;
                break;

            case CardHandler.Value.Seven:
                angle = -30;
                break;

            case CardHandler.Value.Eight:
                angle = 0;
                break;

            case CardHandler.Value.Nine:
                angle = 30;
                break;

            case CardHandler.Value.Ten:
                angle = 60;
                break;

            case CardHandler.Value.Jack:
                angle = 90;
                break;

            case CardHandler.Value.Queen:
                angle = 120;
                break;

            case CardHandler.Value.King:
                angle = 150;
                break;

            default:
                //TODO: Make this a free shoot with a worse range
                angle = 180;
                //arcRange = Mathf.FloorToInt( arcRange * 1.2f );
                break;
            }

//			    m_arc.SetFloat("_Arcrange", arcRange );

//			    _Radius("Radius", Range( 0 , 1)) = 0.25
//			    _Arcrange("Arc range", Range( 0 , 360)) = 360
//			    _Rotation("Rotation", Range( 0 , 360)) = 0
            break;
        }

        case BallSetting.Height:
        {
            // range is purely an adder on a floor
//			    int arcRange = 45;
//			    switch( cardValue.m_type )
//			    {
//				    case CardHandler.HandType.Pair:
//					    arcRange = 35;
//					    break;
//				    case CardHandler.HandType.TwoPair:
//					    arcRange = 25;
//					    break;
//				    case CardHandler.HandType.ThreeOfAKind:
//					    arcRange = 20;
//					    break;
//				    case CardHandler.HandType.Straight:
//					    break;
//				    case CardHandler.HandType.Flush:
//					    arcRange = 10;
//					    break;
//				    case CardHandler.HandType.FullHouse:
//					    arcRange = 5;
//					    break;
//				    case CardHandler.HandType.FourOfAKind:
//					    arcRange = 2;
//					    break;
//				    case CardHandler.HandType.StraightFlush:
//					    break;
//				    case CardHandler.HandType.RoyalFlush:
//					    break;
//			    }

            float angle = 0;
            switch (cardValue.m_highCard)
            {
            case CardHandler.Value.Two:
            case CardHandler.Value.Three:
            case CardHandler.Value.Four:
            case CardHandler.Value.Five:
                break;

            case CardHandler.Value.Six:
                angle = 5;
                break;

            case CardHandler.Value.Seven:
                angle = 10;
                break;

            case CardHandler.Value.Eight:
                angle = 15;
                break;

            case CardHandler.Value.Nine:
                angle = 20;
                break;

            case CardHandler.Value.Ten:
                angle = 25;
                break;

            case CardHandler.Value.Jack:
                angle = 30;
                break;

            case CardHandler.Value.Queen:
                angle = 35;
                break;

            case CardHandler.Value.King:
                angle = 40;
                break;

            default:
                //TODO: Make this a free shoot with a worse range
                angle = 45;
                //arcRange = Mathf.FloorToInt( arcRange * 1.2f );
                break;
            }

            break;
        }

        default:
        {
            float force = 50;
            switch (cardValue.m_highCard)
            {
            case CardHandler.Value.Two:
                break;

            case CardHandler.Value.Three:
                force = 60;
                break;

            case CardHandler.Value.Four:
                force = 70;
                break;

            case CardHandler.Value.Five:
                force = 80;
                break;

            case CardHandler.Value.Six:
                force = 90;
                break;

            case CardHandler.Value.Seven:
                force = 100;
                break;

            case CardHandler.Value.Eight:
                force = 110;
                break;

            case CardHandler.Value.Nine:
                force = 120;
                break;

            case CardHandler.Value.Ten:
                force = 130;
                break;

            case CardHandler.Value.Jack:
                force = 145;
                break;

            case CardHandler.Value.Queen:
                force = 160;
                break;

            case CardHandler.Value.King:
                force = 180;
                break;

            default:
                force = 200;
                break;
            }
            float multiplier = 1;
            switch (cardValue.m_type)
            {
            case CardHandler.HandType.Pair:
                multiplier = 1.3f;
                break;

            case CardHandler.HandType.TwoPair:
                multiplier = 1.5f;
                break;

            case CardHandler.HandType.ThreeOfAKind:
                multiplier = 1.8f;
                break;

            case CardHandler.HandType.Straight:
                break;

            case CardHandler.HandType.Flush:
                multiplier = 2.5f;
                break;

            case CardHandler.HandType.FullHouse:
                multiplier = 3.0f;
                break;

            case CardHandler.HandType.FourOfAKind:
                multiplier = 5.0f;
                break;

            case CardHandler.HandType.StraightFlush:
                break;

            case CardHandler.HandType.RoyalFlush:
                break;
            }

            break;
        }
        }
    }
Example #10
0
    public void SwingButton()
    {
        if (m_hand.Count == 0 && m_directionCards.Count == 0 && m_heightCards.Count == 0 && m_powerCards.Count == 0)
        {
            NewHand();
            return;
        }

        if (m_directionCards.Count != 0 && m_heightCards.Count != 0 && m_powerCards.Count != 0)
        {
            m_ball.IncrementStrokeCounter();

            CardHandler.HandValue direction = EvaluateDirection();
            CardHandler.HandValue height    = EvaluateHeight();
            CardHandler.HandValue power     = EvaluatePower();

            m_swingButton.interactable    = false;
            m_mulliganButton.interactable = false;

            m_ball.StrikeBall(direction, height, power);
        }
        else
        {
            if (m_hand.Count != 0)
            {
                // show error message
                m_timer = 4.0f;
                m_errorMessage.gameObject.SetActive(true);
                Color c = m_errorMessage.color;
                c.a = 1.0f;
                m_errorMessage.color = c;
            }
            else
            {
                int cardDraws = 0;
                // draw new cards and lock the filled slots
                if (m_directionCards.Count != 0)
                {
                    m_directionBoxLockedImage.gameObject.SetActive(true);
                    m_directionBoxLocked = true;
                }
                else
                {
                    ++cardDraws;
                }
                if (m_heightCards.Count != 0)
                {
                    m_heightBoxLockedImage.gameObject.SetActive(true);
                    m_heightBoxLocked = true;
                }
                else
                {
                    ++cardDraws;
                }

                if (m_powerCards.Count != 0)
                {
                    m_powerBoxLockedImage.gameObject.SetActive(true);
                    m_powerBoxLocked = true;
                }
                else
                {
                    ++cardDraws;
                }

                for (int i = 0; i < cardDraws; ++i)
                {
                    DrawCard();
                }

                m_lateOrganise = true;
            }
        }
    }
Example #11
0
    public void OrganiseCards()
    {
        float       handX   = 520;
        const float handY   = 640;
        int         spacing = 80;

        foreach (CardUI card in m_hand)
        {
            card.SetPosition(handX, handY);
            handX += spacing;
        }

        float       directionX = 58;
        const float bottomY    = 75;

        spacing = m_directionCards.Count > 4 ? 60 : 80;

        foreach (CardUI card in m_directionCards)
        {
            card.SetPosition(directionX, bottomY);
            directionX += spacing;
        }

        float heightX = 428;

        spacing = m_heightCards.Count > 4 ? 60 : 80;
        foreach (CardUI card in m_heightCards)
        {
            card.SetPosition(heightX, bottomY);
            heightX += spacing;
        }

        float powerX = 798;

        spacing = m_powerCards.Count > 4 ? 60 : 80;
        foreach (CardUI card in m_powerCards)
        {
            card.SetPosition(powerX, bottomY);
            powerX += spacing;
        }

        CardHandler.HandValue dirValue = new CardHandler.HandValue
        {
            m_type = CardHandler.HandType.HighCard, m_highCard = CardHandler.Value.Eight
        };
        CardHandler.HandValue angleValue = new CardHandler.HandValue
        {
            m_type = CardHandler.HandType.HighCard, m_highCard = CardHandler.Value.Two
        };
        CardHandler.HandValue powerValue = new CardHandler.HandValue
        {
            m_type = CardHandler.HandType.HighCard, m_highCard = CardHandler.Value.Two
        };

        if (m_directionCards.Count != 0)
        {
            dirValue = EvaluateDirection();
        }
        if (m_heightCards.Count != 0)
        {
            angleValue = EvaluateHeight();
        }
        if (m_powerCards.Count != 0)
        {
            powerValue = EvaluatePower();
        }

        m_ball.UpdateArcRender(dirValue, angleValue, powerValue);
        UpdateShootButton();
    }