Ejemplo n.º 1
0
        /// <summary>
        /// Constructor for Texas Hold 'Em Game
        /// </summary>
        public TexasHoldEm(int GameId, int RoomId, ConcurrentDictionary <int, TexasHoldEmItem> Player1,
                           ConcurrentDictionary <int, TexasHoldEmItem> Player2, ConcurrentDictionary <int, TexasHoldEmItem> Player3,
                           ConcurrentDictionary <int, TexasHoldEmItem> Banker, TexasHoldEmItem PotSquare, TexasHoldEmItem JoinGate,
                           string[] Player1Data, string[] Player2Data, string[] Player3Data, int JoinCost)
        {
            this.GameId = GameId;
            this.RoomId = RoomId;

            this.PlayerList = new ConcurrentDictionary <int, TexasHoldEmPlayer>();
            this.PlayerList.TryAdd(1, null);
            this.PlayerList.TryAdd(2, null);
            this.PlayerList.TryAdd(3, null);

            this.Player1 = Player1;
            this.Player2 = Player2;
            this.Player3 = Player3;
            this.Banker  = Banker;

            this.PotSquare = PotSquare;
            this.JoinGate  = JoinGate;

            this.TimerManager = new SystemTimerManager();

            this.GameStarted = false;

            this.Player1Data = Player1Data;
            this.Player2Data = Player2Data;
            this.Player3Data = Player3Data;

            this.JoinCost = JoinCost;

            this.GameSequence = 0;
            this.PlayersTurn  = 0;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Generates the players for game id
        /// </summary>
        public static ConcurrentDictionary <int, TexasHoldEmItem> GeneratePlayer(int GameId, int PlayerId)
        {
            ConcurrentDictionary <int, TexasHoldEmItem> Player = new ConcurrentDictionary <int, TexasHoldEmItem>();

            using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `rp_gambling_items` WHERE `game_id` = '" + GameId + "' AND `player_id` = '" + PlayerId + "'");
                DataTable Table = dbClient.getTable();

                if (Table == null)
                {
                    return(null);
                }

                foreach (DataRow Row in Table.Rows)
                {
                    int DiceId = Convert.ToInt32(Row["dice_id"]);

                    if (Player.ContainsKey(DiceId))
                    {
                        continue;
                    }

                    int    ItemId   = Convert.ToInt32(Row["item_id"]);
                    int    RoomId   = Convert.ToInt32(Row["room_id"]);
                    int    X        = Convert.ToInt32(Row["x"]);
                    int    Y        = Convert.ToInt32(Row["y"]);
                    double Z        = Convert.ToDouble(Row["z"]);
                    int    Rotation = Convert.ToInt32(Row["rotation"]);

                    TexasHoldEmItem Item = new TexasHoldEmItem(RoomId, ItemId, X, Y, Z, Rotation);

                    Player.TryAdd(DiceId, Item);
                }
            }

            return(Player);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Rolls the dice for the Texas Hold 'Em Game
        /// </summary>
        public void RollDice(GameClient Session, Item Item, int Request)
        {
            try
            {
                if (!GameStarted)
                {
                    return;
                }

                if (Session == null || Item == null)
                {
                    return;
                }

                if (Item.ExtraData == "-1")
                {
                    return;
                }

                int Number = Session.GetRoleplay().TexasHoldEmPlayer;

                if (Number <= 0)
                {
                    return;
                }

                if (PlayersTurn != Number)
                {
                    Session.SendWhisper("Não é sua vez de girar seus dados!", 1);
                    return;
                }

                ConcurrentDictionary <int, TexasHoldEmItem> Data;
                if (Number == 1)
                {
                    Data = Player1;
                }
                else if (Number == 2)
                {
                    Data = Player2;
                }
                else
                {
                    Data = Player3;
                }

                if (Data == null || Data.Count <= 0)
                {
                    return;
                }

                if (Data.Values.Where(x => x != null && x.Furni != null && x.Furni == Item).ToList().Count <= 0)
                {
                    return;
                }

                TexasHoldEmItem TexasItem = Data.Values.FirstOrDefault(x => x != null && x.Furni != null && x.Furni == Item);

                if (TexasItem == null || TexasItem.Rolled)
                {
                    return;
                }

                #region Dice Roll
                if (Item.ExtraData != "-1")
                {
                    if (Request == -1)
                    {
                        Item.ExtraData = "0";
                        Item.UpdateState();
                    }
                    else
                    {
                        Item.ExtraData = "-1";
                        Item.UpdateState(false, true);
                        Item.RequestUpdate(3, true);
                    }
                }
                #endregion
            }
            catch (Exception e)
            {
                Logging.LogRPGamesError("Error in RollDice() void: " + e);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Generates the Texas Hold 'Em Games dictionary from the database.
        /// </summary>
        public static void Initialize()
        {
            ClearOldData();

            using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `rp_gambling`");
                DataTable Table = dbClient.getTable();

                if (Table != null)
                {
                    foreach (DataRow Row in Table.Rows)
                    {
                        int GameId = Convert.ToInt32(Row["id"]);

                        if (GameList.ContainsKey(GameId))
                        {
                            continue;
                        }

                        int      RoomId      = Convert.ToInt32(Row["room_id"]);
                        string[] Player1Data = Row["player_1"].ToString().Split(';');
                        string[] Player2Data = Row["player_2"].ToString().Split(';');
                        string[] Player3Data = Row["player_3"].ToString().Split(';');

                        ConcurrentDictionary <int, int>             PlayerList = new ConcurrentDictionary <int, int>();
                        ConcurrentDictionary <int, TexasHoldEmItem> Player1    = GeneratePlayer(GameId, 1);
                        ConcurrentDictionary <int, TexasHoldEmItem> Player2    = GeneratePlayer(GameId, 2);
                        ConcurrentDictionary <int, TexasHoldEmItem> Player3    = GeneratePlayer(GameId, 3);
                        ConcurrentDictionary <int, TexasHoldEmItem> Banker     = GeneratePlayer(GameId, 0);

                        TexasHoldEmItem JoinGate  = GenerateJoinGate(Row);
                        TexasHoldEmItem PotSquare = GeneratePotSquare(Row);

                        int JoinCost = Convert.ToInt32(Row["join_cost"]);

                        TexasHoldEm Game = new TexasHoldEm(GameId, RoomId, Player1, Player2, Player3, Banker, PotSquare, JoinGate, Player1Data, Player2Data, Player3Data, JoinCost);

                        GameList.TryAdd(GameId, Game);

                        #region Spawn Furni
                        Room Room = RoleplayManager.GenerateRoom(RoomId);
                        if (Room != null && Room.GetRoomItemHandler() != null)
                        {
                            if (Game.PotSquare.Furni == null)
                            {
                                Game.PotSquare.SpawnDice();
                            }

                            if (Game.JoinGate.Furni == null)
                            {
                                Game.JoinGate.SpawnDice();
                            }

                            foreach (TexasHoldEmItem Item in Game.Player1.Values)
                            {
                                if (Item != null && Item.Furni == null)
                                {
                                    Item.SpawnDice();
                                }
                            }

                            foreach (TexasHoldEmItem Item in Game.Player2.Values)
                            {
                                if (Item != null && Item.Furni == null)
                                {
                                    Item.SpawnDice();
                                }
                            }

                            foreach (TexasHoldEmItem Item in Game.Player3.Values)
                            {
                                if (Item != null && Item.Furni == null)
                                {
                                    Item.SpawnDice();
                                }
                            }

                            foreach (TexasHoldEmItem Item in Game.Banker.Values)
                            {
                                if (Item != null && Item.Furni == null)
                                {
                                    Item.SpawnDice();
                                }
                            }
                        }
                        #endregion
                    }
                }
            }

            //log.Info("Carregado " + GameList.Count + " Jogos de Texas Hold!");
        }