Beispiel #1
0
    public static void Init()
    {
        PayTable    = Hands.StandardPayTables.JoB_9845;
        _controller = new Hands.VideoPokerController(new Hands.Poker.VideoPokerPayoutCalculator(new Hands.Poker.HandAnalyzer(
                                                                                                    System.Reflection.Assembly.GetAssembly(typeof(Hands.Poker.HandAnalyzer)).GetTypes()
                                                                                                    .Where(t => typeof(Hands.Poker.Hands.IHandChecker).IsAssignableFrom(t) && t != typeof(Hands.Poker.Hands.IHandChecker))
                                                                                                    .Where(t => t.Namespace.Contains("JacksOrBetter"))
                                                                                                    .Select(ht => Activator.CreateInstance(ht))
                                                                                                    .OfType <Hands.Poker.Hands.IHandChecker>()
                                                                                                    .ToArray()
                                                                                                    )));

        _player = new VPPlayer.VpPlayer(System.Reflection.Assembly.GetAssembly(typeof(VPPlayer.VpPlayer)).GetTypes()
                                        .Where(t => typeof(VPPlayer.IHandTier).IsAssignableFrom(t) && t != typeof(VPPlayer.IHandTier))
                                        .Where(t => t.Namespace.Contains("Job"))
                                        .Select(ht => Activator.CreateInstance(ht))
                                        .OfType <VPPlayer.IHandTier>()
                                        .ToArray());

        Holds        = new bool[5];
        CorrectHolds = new bool[5];

        GameState   = 1;
        HandsPlayed = 1;
        Bet         = 1;
        Credits     = 0;
        AmountWon   = 0;
        HandResults = new Hands.HandResult[0];

        BlockIncorrectHolds = true;  //this needs to be a set via UI
    }
Beispiel #2
0
    protected void SetActivePayline(Hands.HandResult result)
    {
        var paylineHit = result.PayLineHit.Replace(" ", "").ToLower();

        foreach (var sprite in PayLineSprites)
        {
            if (sprite.name.ToLower().Replace("paylines", "") == paylineHit)
            {
                sprite.SetActive(true);
            }
            else
            {
                sprite.SetActive(false);
            }
        }
    }
Beispiel #3
0
    private static bool DrawCards()
    {
        var good = true;

        for (var i = 0; i < 5; i++)
        {
            if (Holds[i] != CorrectHolds[i])
            {
                good = false;
            }
        }
        if (!good)
        {
            statistics.MistakesMade++;
            if (BlockIncorrectHolds)
            {
                return(false);
            }
        }

        var timeTaken = (DateTime.Now - handDealtAt).TotalSeconds;

        statistics.AvgHandLength = (statistics.AvgHandLength * (statistics.HandsPlayed - 1) + timeTaken) / statistics.HandsPlayed;


        var heldCards = new List <Hands.Entities.Card>();

        for (var i = 0; i < Holds.Length; i++)
        {
            if (Holds[i])
            {
                heldCards.Add(Hand[i]);
            }
        }

        var results = new Hands.HandResult[HandsPlayed];

        for (var i = 0; i < HandsPlayed; i++)
        {
            results[i] = _controller.ResolveHand(heldCards.ToArray(), Bet, PayTable);
        }

        //re-order the cards so the hold cards are in the right spot
        foreach (var result in results)
        {
            var reorderedHand = new List <Hands.Entities.Card>();
            var i             = 0;
            for (var j = 0; j < 5; j++)
            {
                if (heldCards.Contains(Hand[j]))
                {
                    reorderedHand.Add(Hand[j]);
                }
                else
                {
                    if (Hand[j] != result.Hand[i])
                    {
                        reorderedHand.Add(result.Hand[i]);
                    }
                    i++;
                }
            }
            result.Hand = reorderedHand.ToArray();
        }

        MainHandResult = results[0];
        Hand           = results[0].Hand;
        HandResults    = results;

        //tabulate winnings
        AmountWon = results.Sum(r => r.Payout);
        Credits  += AmountWon;

        GameState = 1;

        OnCardsDrawn?.Invoke(new DrawEventArgs
        {
            Hand           = Hand,
            MainHandResult = MainHandResult,
            CorrectHolds   = CorrectHolds,
            AmountWon      = AmountWon,
            HandResults    = HandResults
        });

        return(true);
    }