Exemplo n.º 1
0
        public int CreateLobby(Vector3 position, int maxPlayers)
        {
            int id = ++_lobbyCounter;

            _lobbies.Add(id, new PokerLobby(id, true, position, maxPlayers, API.createObject));

            _lobbies[id].OnLobbyRoundEnd += parameters => { if (OnLobbyRoundEnd != null)
                                                            {
                                                                OnLobbyRoundEnd.Invoke(id);
                                                            }
            };
            _lobbies[id].OnLobbyRoundStart += parameters => { if (OnLobbyRoundStart != null)
                                                              {
                                                                  OnLobbyRoundStart.Invoke(id);
                                                              }
            };
            _lobbies[id].OnPlayerLoseRound += parameters => { if (OnPlayerLoseRound != null)
                                                              {
                                                                  OnPlayerLoseRound.Invoke(id, parameters[0]);
                                                              }
            };                                                                                                                               // id, client
            _lobbies[id].OnPlayerWinRound += parameters => { if (OnPlayerWinRound != null)
                                                             {
                                                                 OnPlayerWinRound.Invoke(id, parameters[0], parameters[1], parameters[2]);
                                                             }
            };                                                                                                                                                          // id, client, take, handname
            _lobbies[id].OnPlayerMoneyChange += parameters => { if (OnPlayerMoneyChange != null)
                                                                {
                                                                    OnPlayerMoneyChange.Invoke(id, parameters[0], parameters[1]);
                                                                }
            };                                                                                                                                                    // id, client, newmoney

            return(id);
        }
Exemplo n.º 2
0
        public void Pulse()
        {
            if (State == GameState.PreGame)
            {
                Blinds = 200;
                return;
            }

            if (State == GameState.NewRound)
            {
                if (Players.Count <= 1)
                {
                    SendToPlayers("Not enough players to continue!");
                    State = GameState.PreGame;
                    return;
                }

                if (++_numberOfRounds > 10)
                {
                    _numberOfRounds = 0;
                    _deck.Shuffle();
                }

                if (_numberOfRounds % 5 == 0 && _numberOfRounds != 0)
                {
                    Blinds = Blinds * 2;
                }

                foreach (Player player in Players)
                {
                    player.CurrentBet = 0;
                    player.State      = PlayerState.Playing;
                    player.Cards      = new Card[2]
                    {
                        _deck.Pop(),
                            _deck.Pop()
                    };
                    player.Client.triggerEvent("SET_HAND_CARDS", player.Cards[0].ToJsCode(), player.Cards[1].ToJsCode());
                }

                CurrentBet    = Blinds; // Blind?
                MaxBetter     = 0;
                Pot           = 0;
                UnclaimedCash = 0;
                Table         = null;

                Players.ForEach(p => p.Client.triggerEvent("NEW_ROUND"));
                Players.ForEach(p => p.Client.triggerEvent("SET_MAX_BET", CurrentBet));
                Players.ForEach(p => p.Client.triggerEvent("SET_POT", CurrentBet));

                //API.shared.consoleOutput("starting");
                _starter = (_starter + 1) % Players.Count;
                //API.shared.consoleOutput("starter: " + _starter);
                CurrentBetter = _starter;
                MaxBetter     = CurrentBetter;
                Players[CurrentBetter].CurrentBet = Math.Min(CurrentBet, Players[CurrentBetter].Money);
                CurrentBet = Players[CurrentBetter].CurrentBet;
                Players[CurrentBetter].Client.triggerEvent("UPDATE_MONEY", Players[CurrentBetter].Money, Players[CurrentBetter].CurrentBet);
                SendToPlayers("Player ~n~" + Players[CurrentBetter].Client.name + "~n~ has placed a blind of $" + CurrentBet + ".");

                foreach (Player player in Players.Where(p => p != Players[CurrentBetter]))
                {
                    player.Client.triggerEvent("UPDATE_LAST_PLAYER_ACTION", Players[CurrentBetter].Client.name, "blind $" + CurrentBet);
                }

                //API.shared.consoleOutput("Test test test");
                CurrentBetter = (CurrentBetter + 1) % Players.Count;

                //API.shared.consoleOutput("better: " + CurrentBetter);
                RebuildCash();
                GiveTurn(Players[CurrentBetter]);
                if (OnLobbyRoundStart != null)
                {
                    OnLobbyRoundStart.Invoke();
                }
            }
        }