public static void SignIn(Client client, string jsonPacketData) { client.packetMap.Remove("SignIn"); SignIn signIn = JsonConvert.DeserializeObject<SignIn>(jsonPacketData); if (InternalSignIn(client, signIn.email, signIn.password)) { OkMessage okMessage = new OkMessage(); okMessage.op = "SignIn"; client.Send(okMessage); ProfileHandler.ProfileInfo(client); ProfileHandler.ProfileDataInfo(client); } }
public static void Reconnect(Client client, string jsonPacketData) { client.packetMap.Remove("Reconnect"); Reconnect reconnect = JsonConvert.DeserializeObject<Reconnect>(jsonPacketData); if (InternalSignIn(client, reconnect.email, reconnect.password)) { OkMessage okMessage = new OkMessage(); okMessage.op = "Reconnect"; client.Send(okMessage); ProfileHandler.ProfileInfo(client); ProfileHandler.ProfileDataInfo(client); } }
public static void DeckDelete(Client client, string jsonPacketData) { client.packetMap.Remove("DeckDelete"); DeckDelete deckDelete = JsonConvert.DeserializeObject<DeckDelete>(jsonPacketData); if (client.account.deckMap.ContainsKey(deckDelete.name)) { int lastId; DB.Database.Execute(client.connection, out lastId, true, true, "DELETE FROM account_decks WHERE guid = ? AND name = ?", client.account.id, deckDelete.name); client.account.deckMap.Remove(deckDelete.name); OkMessage okMessage = new OkMessage(); okMessage.op = "DeckDelete"; client.Send(okMessage); } else { Console.WriteLine("{0} is trying to delete the deck {1} which they don't own!", client.account.username, deckDelete.name); PlayerAPI.KickPlayer(client, "AntiCheat: You have been disconnected from the server!"); } }
public static void SellCards(Client client, string jsonPacketData) { client.packetMap.Remove("SellCards"); SellCards sellCards = JsonConvert.DeserializeObject<SellCards>(jsonPacketData); bool saleError = false; int totalGold = 0; foreach (int cardId in sellCards.cardIds) { if (CardAPI.Exists(client, cardId)) { if (CardAPI.GetCard(client, cardId).tradable) { switch (CardAPI.GetCardType(client.account.cardMap[cardId].typeId).rarity) { case 0: { totalGold += ConfigReader.sellCommon; break; } case 1: { totalGold += ConfigReader.sellUncommon; break; } case 2: { totalGold += ConfigReader.sellRare; break; } } CardAPI.RemoveCard(client, cardId); } else { saleError = true; } } else { saleError = true; } } if (!saleError) { int lastId; DB.Database.Execute(client.connection, out lastId, true, true, "UPDATE server_stats SET totalSoldCards = totalSoldCards + ?", sellCards.cardIds.Count); PlayerAPI.IncreaseGold(client, totalGold); PlayerAPI.UpdateScrollTypeCount(client); OkMessage okMessage = new OkMessage(); okMessage.op = "SellCards"; client.Send(okMessage); } }
public static void GameChallengeDecline(Client client, string jsonPacketData) { client.packetMap.Remove("GameChallengeDecline"); GameChallengeDecline gameChallengeDecline = JsonConvert.DeserializeObject<GameChallengeDecline>(jsonPacketData); Client opponentSession = PlayerAPI.GetSession(gameChallengeDecline.profile, true); if (PlayerAPI.IsOnline(opponentSession.account.username)) { OkMessage okMessage = new OkMessage(); okMessage.op = "GameChallengeDecline"; client.Send(okMessage); GameChallengeResponse gameChallengeResponse = new GameChallengeResponse(); gameChallengeResponse.status = "DECLINE"; gameChallengeResponse.from.id = opponentSession.account.id; gameChallengeResponse.from.userUuid = ""; gameChallengeResponse.from.name = opponentSession.account.username; gameChallengeResponse.from.acceptChallenges = opponentSession.account.acceptChallenges; gameChallengeResponse.from.acceptTrades = opponentSession.account.acceptTrades; gameChallengeResponse.from.adminRole = opponentSession.account.adminRole; gameChallengeResponse.from.userType = "Beta"; gameChallengeResponse.to.id = client.account.id; gameChallengeResponse.to.userUuid = ""; gameChallengeResponse.to.name = client.account.username; gameChallengeResponse.to.acceptChallenges = client.account.acceptChallenges; gameChallengeResponse.to.acceptTrades = client.account.acceptTrades; gameChallengeResponse.to.adminRole = client.account.adminRole; gameChallengeResponse.to.userType = "Beta"; client.Send(gameChallengeResponse); opponentSession.Send(gameChallengeResponse); } }
public static void GameChallengeRequest(Client client, string jsonPacketData) { client.packetMap.Remove("GameChallengeRequest"); GameChallengeRequest gameChallengeRequest = JsonConvert.DeserializeObject<GameChallengeRequest>(jsonPacketData); Client opponentSession = PlayerAPI.GetSession(gameChallengeRequest.profile, true); if (PlayerAPI.IsOnline(opponentSession.account.username)) { if (client.account.deckMap.ContainsKey(gameChallengeRequest.deck)) { client.account.challengeMap.Add(opponentSession.account.username, gameChallengeRequest.deck); OkMessage okMessage = new OkMessage(); okMessage.op = "GameChallengeRequest"; client.Send(okMessage); GameChallenge gameChallenge = new GameChallenge(); gameChallenge.from.id = client.account.id; gameChallenge.from.userUuid = ""; gameChallenge.from.name = client.account.username; gameChallenge.from.acceptChallenges = client.account.acceptChallenges; gameChallenge.from.acceptTrades = client.account.acceptTrades; gameChallenge.from.adminRole = client.account.adminRole; gameChallenge.from.userType = "Beta"; opponentSession.Send(gameChallenge); } else { Console.WriteLine("{0} is trying to challenge {1} with the deck {2} which they don't own!", client.account.username, opponentSession.account.username, gameChallengeRequest.deck); PlayerAPI.KickPlayer(client, "AntiCheat: You have been disconnected from the server!"); } } else { Console.WriteLine("{0} is trying to challenge someone who is offline or doesn't exist!", opponentSession.account.username); PlayerAPI.KickPlayer(client, "AntiCheat: You have been disconnected from the server!"); } }
public static void TradeSetGold(Client client, string jsonPacketData) { client.packetMap.Remove("TradeSetGold"); TradeSetGold tradeSetGold = JsonConvert.DeserializeObject<TradeSetGold>(jsonPacketData); if (client.account.tradeStatus.trading) { Client opponentSession = PlayerAPI.GetSession(client.account.tradeStatus.partner, false); if (opponentSession != null && client.account.gold >= tradeSetGold.gold) { client.account.tradeStatus.gold = tradeSetGold.gold; TradeViewUpdate(client, opponentSession); OkMessage okMessage = new OkMessage(); okMessage.op = "TradeSetGold"; client.Send(okMessage); } } }
public static void TradeInvite(Client client, string jsonPacketData) { client.packetMap.Remove("TradeInvite"); TradeInvite tradeInvite = JsonConvert.DeserializeObject<TradeInvite>(jsonPacketData); Client opponentSession = PlayerAPI.GetSession(tradeInvite.profile, true); if (opponentSession != null) { if (!client.account.tradeRequestList.Contains(opponentSession.account.username) && !opponentSession.account.tradeStatus.trading) { client.account.tradeRequestList.Add(opponentSession.account.username); OkMessage okMessage = new OkMessage(); okMessage.op = "TradeInvite"; client.Send(okMessage); TradeInviteForward tradeInviteForward = new TradeInviteForward(); tradeInviteForward.inviter = PlayerAPI.UserInfo(client); opponentSession.Send(tradeInviteForward); } } }
public static void TradeAddCards(Client client, string jsonPacketData) { client.packetMap.Remove("TradeAddCards"); TradeAddCards tradeAddCards = JsonConvert.DeserializeObject<TradeAddCards>(jsonPacketData); if (client.account.tradeStatus.trading) { Client opponentSession = PlayerAPI.GetSession(client.account.tradeStatus.partner, false); if (opponentSession != null) { TradeDeckInvalidationWarning tradeDeckInvalidationWarning = new TradeDeckInvalidationWarning(); foreach (int cardId in tradeAddCards.cardIds) { if (CardAPI.Exists(client, cardId)) { foreach (KeyValuePair<string, Deck> deck in client.account.deckMap) { foreach (Card deckCard in deck.Value.cards) { if (deckCard.id == cardId) { tradeDeckInvalidationWarning.deckNames.Add(deck.Value.name); break; } } } client.account.tradeStatus.cardIds.Add(cardId); } } if (tradeDeckInvalidationWarning.deckNames.Count > 0) { client.Send(tradeDeckInvalidationWarning); } TradeViewUpdate(client, opponentSession); OkMessage okMessage = new OkMessage(); okMessage.op = "TradeAddCards"; client.Send(okMessage); } } }
public static void SelectPreconstructed(Client client, string jsonPacketData) { client.packetMap.Remove("SelectPreconstructed"); int lastId; string cards = ""; int resourceId = 0; SelectPreconstructed selectPreconstructed = JsonConvert.DeserializeObject<SelectPreconstructed>(jsonPacketData); Deck deck = new Deck(); deck.name = selectPreconstructed.resourceType.Substring(0, 1) + selectPreconstructed.resourceType.ToLower().Remove(0, 1) + " Preconstructed"; deck.timestamp = DateTime.Now.Ticks; deck.metadata = ""; deck.valid = true; deck.resources.Add(selectPreconstructed.resourceType); client.connection.Open(); List<int> cardTypeList = Variables.deckTypeMap[selectPreconstructed.resourceType]; foreach (int cardType in cardTypeList) { DB.Database.Execute(client.connection, out lastId, false, false, "INSERT INTO account_cards VALUES (0, ?, ?, 0, 0, 0);", client.account.id, cardType); cards += lastId + "|"; Card card = new Card(); card.id = lastId; card.typeId = cardType; card.tradable = false; card.isToken = false; card.level = 0; deck.cards.Add(card); client.account.cardMap.Add(card.id, card); } DB.Database.Execute(client.connection, out lastId, false, false, "INSERT INTO account_decks VALUES (0, ?, ?, ?, ?, \"\", ?, 1);", client.account.id, deck.name, selectPreconstructed.resourceType, deck.timestamp, cards.TrimEnd('|')); switch (selectPreconstructed.resourceType) { case "DECAY": { resourceId = 4; break; } case "ENERGY": { resourceId = 1; break; } case "GROWTH": { resourceId = 2; break; } case "ORDER": { resourceId = 3; break; } } DB.Database.Execute(client.connection, out lastId, false, true, "UPDATE account_data SET selectedPreconstructed = ? WHERE guid = ?", resourceId, client.account.id); client.account.deckMap.Add(deck.name, deck); OkMessage okMessage = new OkMessage(); okMessage.op = "SelectPreconstructed"; client.Send(okMessage); }