/// <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; }
/// <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); }
/// <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); } }
/// <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!"); }