private void ClientLogin(PlayerTransferModel player, SocketState ss) { if (player.AccountName != null && player.Password != null) { player.AccountName = player.AccountName.ToLower(); Console.WriteLine("New client wants to login as " + player.AccountName + "."); String query = String.Format("SELECT * FROM PlayerAccountData WHERE AccountName = '{0}' AND Password = '******'", player.AccountName, player.Password); using (SqlConnection connection = new SqlConnection(sqlConnectionString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = query; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { player.PlayerName = reader["PlayerName"].ToString(); Console.WriteLine(String.Format("New Client successfully login as {0}({1}).", player.AccountName, player.PlayerName)); player.Password = null; player.TransferState = PlayerTransferModel.TransferStateType.Accept; } } else { Console.WriteLine("A client wants to login with wrong AccountName/Password pair"); player = new PlayerTransferModel(); player.TransferState = PlayerTransferModel.TransferStateType.Decline; player.TransferMessage = "Wrong AccountName/Password pair"; NetworkController.Send(ss, JsonConvert.SerializeObject(player)); return; } } } player.PlayerHeroList = new List <string>(); query = String.Format("SELECT * FROM PlayerHeroData WHERE PlayerName = '{0}'", player.PlayerName); using (SqlCommand command = connection.CreateCommand()) { command.CommandText = query; using (SqlDataReader reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { player.PlayerHeroList.Add(reader["HeroName"].ToString()); } } } } player.PlayerCardList = new Dictionary <string, int>(); query = String.Format("SELECT * FROM PlayerCardData WHERE PlayerName = '{0}'", player.PlayerName); using (SqlCommand command = connection.CreateCommand()) { command.CommandText = query; using (SqlDataReader reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { player.PlayerCardList.Add(reader["CardName"].ToString(), Convert.ToInt32(reader["CardCount"].ToString())); } } } } connection.Close(); } Console.WriteLine(String.Format("User data has sent to {0}({1}), waiting for client action.", player.AccountName, player.PlayerName)); NetworkController.Send(ss, JsonConvert.SerializeObject(player)); Player p = new Player(player); lock (playerDic) { playerDic.Add(ss, p); } } else { throw new Exception(); } }
private void ClientEnterDungeon(PlayerTransferModel player, SocketState ss) { Console.WriteLine(String.Format("{0} wants to enter {1}.", playerDic[ss].PlayerName, player.TransferMessage)); if (playerDic.ContainsKey(ss) && player.TransferMessage != null && player.CardPlayer != null && GameDic.DungeonDic.ContainsKey(player.TransferMessage)) { int count = 0; string heroName = ""; foreach (var item in player.CardPlayer.CardDic) { count += item.Value; if (!GameDic.CardDic.ContainsKey(item.Key)) { throw new Exception(); } if (heroName == "") { heroName = GameDic.CardDic[item.Key].Owner; } else if (heroName != GameDic.CardDic[item.Key].Owner) { throw new Exception(); } if (GameDic.CardDic[item.Key].CardRarity == Card.Rarity.Basic) { if (!GameDic.HeroDic[heroName].HeroBasicCard.ContainsKey(item.Key) || GameDic.HeroDic[heroName].HeroBasicCard[item.Key] < item.Value) { throw new Exception(); } } else { if (!playerDic[ss].HasCard(item.Key, item.Value)) { throw new Exception(); } } } if (count != GameDic.DungeonDic[player.TransferMessage].DungeonAllowedCardCount) { throw new Exception(); } if (!playerDic[ss].HasHero(heroName) || heroName != player.CardPlayer.MainHero) { throw new Exception(); } if (player.CardPlayer.SubHero != null && !playerDic[ss].HasHero(player.CardPlayer.SubHero)) { throw new Exception(); } var temp = GameDic.DungeonDic[player.TransferMessage].Generate(); if (!playerDic[ss].EnterDungeon(temp, player.CardPlayer)) { throw new Exception(); } player.TransferState = PlayerTransferModel.TransferStateType.Accept; player.Dungeon = temp; NetworkController.Send(ss, JsonConvert.SerializeObject(player)); Console.WriteLine(String.Format("{0} enters {1} successfully.", playerDic[ss].PlayerName, player.TransferMessage)); } else { throw new Exception(); } }