private GameRunner() { Task.Run(SubData).Wait(); var PokerTableSql = new Poker_Table_SQL(); var ListOfUsers = new User_SQL().GetUserList(); var ListOfTables = PokerTableSql.GetTableList(); foreach (var table in ListOfTables) { Tabels.Add(table["Table_Name"], new List <User>()); } foreach (var u in ListOfUsers) { var pktId = u["Poker_Table_Table_ID"]; if (pktId is DBNull) { continue; } //TabelsIds[u["Poker_Table_Table_ID"]] Tabels[PokerTableSql.GetNameByID(pktId)].Add(new User { Join_Game = Convert.ToBoolean(u["Join_Game"]), User_ID = u["User_ID"], Wins = u["Wins"], Lastname = u["Lastname"], Firstname = u["Firstname"], Poker_Table_Table_ID = pktId }); } _tables["Tables"] = JsonConvert.SerializeObject(Tabels, Formatting.Indented); // TimeSpan.FromMinutes(minutes).TotalMilliseconds _gameTimer = new Stopwatch(); _notificationTimer = new Timer(1000); _notificationTimer.Elapsed += PushNotification; _notificationTimer.AutoReset = true; _roundTimer = new Timer(25000); _roundTimer.Elapsed += NextRound; _roundTimer.AutoReset = true; }
/// <summary> /// automatic devides users in tables /// </summary> /// <param name="id">url id(profile)</param> /// <returns></returns> public ActionResult SetupTables(int?id) { if (id == null) { return(View("Index")); } new User_SQL().ResetAllTableID(); new Poker_Table_SQL().DeleteAllTables(); var PokerTableSql = new Poker_Table_SQL(); var tableRecord = DeepStreamConnector.Instance.GetRecord("Tables"); var players = new User_SQL().GetUserList(true); var playersCount = players.Count; var tablesCount = 1; var cnt = playersCount / tablesCount; while (cnt >= 10) { tablesCount++; cnt = playersCount / tablesCount; } var playersAtTable = new int[tablesCount]; for (var i = 0; i < playersAtTable.Length; i++) { playersAtTable[i] = playersCount / tablesCount; } for (var r = 0; r < playersCount % tablesCount; r++) { playersAtTable[r % tablesCount]++; } players.Sort((x, y) => y.Wins - x.Wins); playersCount = 0; tablesCount = 0; GameRunner.Instance.Tabels.Clear(); foreach (var y in playersAtTable) { var tableName = $"Tafel nummer {tablesCount}"; var users = new List <User>(); var SQLTableId = PokerTableSql.GetIDByName(tableName); if (SQLTableId == -1) { SQLTableId = PokerTableSql.CreateTable(tableName); } for (var i = 0; i < y; i++) { var plr = players[playersCount]; new User_SQL().SetTable(plr.User_ID, SQLTableId); users.Add(plr); playersCount++; if (playersCount >= players.Count) { playersCount = 0; } } GameRunner.Instance.Tabels.Add(tableName, users); tablesCount++; } tableRecord["Tables"] = JsonConvert.SerializeObject(GameRunner.Instance.Tabels); return(RedirectToAction("Index")); }