diff --git a/src/main/java/com/alterdekim/hearthhack/Application.java b/src/main/java/com/alterdekim/hearthhack/Application.java index b72191a..fda4252 100644 --- a/src/main/java/com/alterdekim/hearthhack/Application.java +++ b/src/main/java/com/alterdekim/hearthhack/Application.java @@ -8,7 +8,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @SpringBootApplication @EnableScheduling diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java b/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java index 21455bd..4511bea 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java @@ -1,21 +1,26 @@ package com.alterdekim.hearthhack.component; import com.alterdekim.PegasusGame; +import com.alterdekim.PegasusShared; +import com.alterdekim.hearthhack.game.GameTag; import com.alterdekim.hearthhack.util.PegasusPacket; import com.alterdekim.hearthhack.util.Util; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.parameters.P; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; +import java.util.Optional; @Slf4j @RequiredArgsConstructor public class GameConnection extends Thread { private final Socket client; + private final GameServer parent; private OutputStream outToClient; private Long id; @@ -36,10 +41,21 @@ public class GameConnection extends Thread { if( !isLoggedIn && packet.getType() != 168 ) stopListeningAndDisconnect(); switch (packet.getType()) { case 168: - log.info("Handshake: {}", PegasusGame.Handshake.parseFrom((byte[]) packet.getBody())); + PegasusGame.Handshake handshake = PegasusGame.Handshake.parseFrom((byte[]) packet.getBody()); + log.info("Handshake: {}", handshake); // game_handle: gameId // client_handle: userId // password: roomPassword + GameRoom room = parent.getGamePool().getGameRoomById((long) handshake.getGameHandle()); + log.info("Handshake check: {}", room); + if( room == null || + !room.getPassword().equals(handshake.getPassword()) || + !room.getPlayers().stream().anyMatch(p -> p.getUserId().longValue() == handshake.getClientHandle()) ) { + log.error("Handshake failed!"); + return; + } + log.info("Handshake success!"); + PegasusGame.GameSetup setup = PegasusGame.GameSetup.newBuilder() .setBoard(2) .setMaxFriendlyMinionsPerPlayer(7) @@ -53,9 +69,261 @@ public class GameConnection extends Thread { break; case 1: // GetGameState + try { + PegasusGame.PowerHistory powerHistory = PegasusGame.PowerHistory.newBuilder() + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setCreateGame( + PegasusGame.PowerHistoryCreateGame.newBuilder() + .setGameEntity( + PegasusGame.Entity.newBuilder() + .setId(1) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NEXT_STEP.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.STATE.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TURN.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(10) + .setValue(85)) + ) + .addPlayers( + PegasusGame.Player.newBuilder() + .setId(2) + .setCardBack(0) + .setGameAccountId(PegasusShared.BnetId.newBuilder() + .setHi(144115198130930503L) + .setLo(78330215L) + .build()) + .setEntity(PegasusGame.Entity.newBuilder() + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(3)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(3)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXRESOURCES.getValue()) + .setValue(10)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TIMEOUT.getValue()) + .setValue(75)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_TURNS_LEFT.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.STARTHANDSIZE.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXHANDSIZE.getValue()) + .setValue(10)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYER_ID.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TEAM_ID.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CURRENT_PLAYER.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYSTATE.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HERO_ENTITY.getValue()) + .setValue(66)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FIRST_PLAYER.getValue()) + .setValue(1)) + .build()) + ) + .addPlayers( + PegasusGame.Player.newBuilder() + .setId(1) + .setCardBack(0) + .setGameAccountId(PegasusShared.BnetId.newBuilder() + .setHi(144115198130930503L) + .setLo(77500085L) + .build()) + .setEntity(PegasusGame.Entity.newBuilder() + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_CARDS_DRAWN_THIS_TURN.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXRESOURCES.getValue()) + .setValue(10)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TIMEOUT.getValue()) + .setValue(75)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.NUM_TURNS_LEFT.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.STARTHANDSIZE.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.MAXHANDSIZE.getValue()) + .setValue(10)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYER_ID.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.TEAM_ID.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CURRENT_PLAYER.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.PLAYSTATE.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HERO_ENTITY.getValue()) + .setValue(64)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FIRST_PLAYER.getValue()) + .setValue(1)) + .build()) + ) + + ) + ) + .addList( + PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setName("") + .setEntity(34) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(34)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2)) + .build()) + ) + .addList( + PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setName("") + .setEntity(35) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(35)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2)) + .build()) + ) + .addList( + PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setName("") + .setEntity(36) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(36)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(2)) + .build()) + ) + .addList( + PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setName("EX1_593") + .setEntity(37) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ENTITY_ID.getValue()) + .setValue(37)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CONTROLLER.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE.getValue()) + .setValue(3)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ZONE_POSITION.getValue()) + .setValue(3)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(321) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARD_SET.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.BATTLECRY.getValue()) + .setValue(1)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.HEALTH.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.ATK.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.COST.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.CARDTYPE.getValue()) + .setValue(4)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.RARITY.getValue()) + .setValue(2)) + .addTags(PegasusGame.Tag.newBuilder() + .setName(GameTag.FACTION.getValue()) + .setValue(3)) + .build()) + ) + .build(); + + this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); + } catch (Exception e) { + e.printStackTrace(); + } + PegasusGame.GetGameState state = PegasusGame.GetGameState.parseFrom((byte[]) packet.getBody()); log.info("GetGameState: {}", state); - this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0AA6022AA3020A2F0801120408351001120508C6011004120408311001120508CC011002120408141001120508CA0110011204080A1055127D0802120F08C786D1BAA58080800210E7F2AC251800226608031204083210021204083510031205088F031003120508B001100A12040807104B120408311001120508CA011002120508900210011204081D10041204081C100A1204081E10021204081F10021204081710011204081110011204081B104212040818100112710801120F08C786D1BAA58080800210B59DFA241800225A08021204083210011204083510021205088F031004120508B001100A12040807104B120508CA011002120508900210011204081D10041204081C100A1204081E10011204081F10011204083110011204081110011204081B10400A180A16082212001A04083510221A04083210021A04083110020A180A16082312001A04083510231A04083210021A04083110020A180A16082412001A04083510241A04083210021A04083110020A620A60082512074558315F3539331A04083510251A04083210021A0508870210031A04083110031A0508C10210011A0508B70110021A0508DA0110011A04082D10021A04082F10041A04083010041A0508CA0110041A0508CB0110021A0508C90110030A93010A9001082612074558315F3338331A04083510261A04083210021A0508870210011A04083110031A0508FB0110011A0508C20110001A0508C10210011A0508B70110031A0508BE0110001A0508CA0210001A0508CB0210001A04082D10101A04082F10031A04087210011A04083010031A0508C70110051A0508CA0110041A0508CB0110051A0508D90110001A0508C90110030A180A16082712001A04083510271A04083210021A04083110020A180A16082812001A04083510281A04083210021A04083110020A180A16082912001A04083510291A04083210021A04083110020A180A16082A12001A040835102A1A04083210021A04083110020A180A16082B12001A040835102B1A04083210021A04083110020A180A16082C12001A040835102C1A04083210021A04083110020A180A16082D12001A040835102D1A04083210021A04083110020A180A16082E12001A040835102E1A04083210021A04083110020A180A16082F12001A040835102F1A04083210021A04083110020A180A16083012001A04083510301A04083210021A04083110020A180A16083112001A04083510311A04083210021A04083110020A180A16083212001A04083510321A04083210021A04083110020A180A16083312001A04083510331A04083210021A04083110020A180A16083412001A04083510341A04083210021A04083110020A180A16083512001A04083510351A04083210021A04083110020A490A47083612084C4F454131365F391A04083510361A04083210021A0508870210021A04083110031A04083010001A0508CA0210001A0508CB0210001A0508CA0110051A0508B70110140A180A16083712001A04083510371A04083210021A04083110020A180A16083812001A04083510381A04083210021A04083110020A180A16083912001A04083510391A04083210021A04083110020A180A16083A12001A040835103A1A04083210021A04083110020A180A16083B12001A040835103B1A04083210021A04083110020A180A16083C12001A040835103C1A04083210021A04083110020A180A16083D12001A040835103D1A04083210021A04083110020A180A16083E12001A040835103E1A04083210021A04083110020A180A16083F12001A040835103F1A04083210021A04083110020A180A16080412001A04083510041A04083210011A04083110020A180A16080512001A04083510051A04083210011A04083110020A180A16080612001A04083510061A04083210011A04083110020A180A16080712001A04083510071A04083210011A04083110020A180A16080812001A04083510081A04083210011A04083110020A180A16080912001A04083510091A04083210011A04083110020A180A16080A12001A040835100A1A04083210011A04083110020A1F0A1D080B12001A040835100B1A04083210011A0508870210041A04083110030A180A16080C12001A040835100C1A04083210011A04083110020A180A16080D12001A040835100D1A04083210011A04083110020A180A16080E12001A040835100E1A04083210011A04083110020A180A16080F12001A040835100F1A04083210011A04083110020A180A16081012001A04083510101A04083210011A04083110020A1F0A1D081112001A04083510111A04083210011A0508870210031A04083110030A180A16081212001A04083510121A04083210011A04083110020A180A16081312001A04083510131A04083210011A04083110020A180A16081412001A04083510141A04083210011A04083110020A1F0A1D081512001A04083510151A04083210011A0508870210011A04083110030A180A16081612001A04083510161A04083210011A04083110020A180A16081712001A04083510171A04083210011A04083110020A180A16081812001A04083510181A04083210011A04083110020A180A16081912001A04083510191A04083210011A04083110020A1F0A1D081A12001A040835101A1A04083210011A0508870210021A04083110030A180A16081B12001A040835101B1A04083210011A04083110020A180A16081C12001A040835101C1A04083210011A04083110020A180A16081D12001A040835101D1A04083210011A04083110020A180A16081E12001A040835101E1A04083210011A04083110020A180A16081F12001A040835101F1A04083210011A04083110020A180A16082012001A04083510201A04083210011A04083110020A180A16082112001A04083510211A04083210011A04083110020A4B0A49084212094C4F454130345F30311A04083110011A04083510421A04083210021A0508B70110141A0608FC0210E77E1A0508CA0210001A0508CB0210001A04082D101E1A0508CA0110030A5D0A5B08431208435331685F3030311A0508B90210421A04083110011A04083510431A04083210021A04083110011A0508FB0110011A0508B70110021A04083010021A0508C70110061A0508CA01100A1A0508CB0110021A0508C90110030A460A440840120B54425F5350545F426F73731A04083110011A04083510401A04083210011A04082F10001A04082D101E1A0508CA0110031A0508B70110121A0708FC0210F1B4020A5D0A5B08411208435331685F3030311A0508B90210401A04083110011A04083510411A04083210011A04083110011A0508FB0110011A0508B70110021A04083010021A0508C70110061A0508CA01100A1A0508CB0110021A0508C90110030A1F0A1D084412001A04083510441A04083210011A0508870210051A0408311003"))); + // this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0AA6022AA3020A2F0801120408351001120508C6011004120408311001120508CC011002120408141001120508CA0110011204080A1055127D0802120F08C786D1BAA58080800210E7F2AC251800226608031204083210021204083510031205088F031003120508B001100A12040807104B120408311001120508CA011002120508900210011204081D10041204081C100A1204081E10021204081F10021204081710011204081110011204081B104212040818100112710801120F08C786D1BAA58080800210B59DFA241800225A08021204083210011204083510021205088F031004120508B001100A12040807104B120508CA011002120508900210011204081D10041204081C100A1204081E10011204081F10011204083110011204081110011204081B10400A180A16082212001A04083510221A04083210021A04083110020A180A16082312001A04083510231A04083210021A04083110020A180A16082412001A04083510241A04083210021A04083110020A620A60082512074558315F3539331A04083510251A04083210021A0508870210031A04083110031A0508C10210011A0508B70110021A0508DA0110011A04082D10021A04082F10041A04083010041A0508CA0110041A0508CB0110021A0508C90110030A93010A9001082612074558315F3338331A04083510261A04083210021A0508870210011A04083110031A0508FB0110011A0508C20110001A0508C10210011A0508B70110031A0508BE0110001A0508CA0210001A0508CB0210001A04082D10101A04082F10031A04087210011A04083010031A0508C70110051A0508CA0110041A0508CB0110051A0508D90110001A0508C90110030A180A16082712001A04083510271A04083210021A04083110020A180A16082812001A04083510281A04083210021A04083110020A180A16082912001A04083510291A04083210021A04083110020A180A16082A12001A040835102A1A04083210021A04083110020A180A16082B12001A040835102B1A04083210021A04083110020A180A16082C12001A040835102C1A04083210021A04083110020A180A16082D12001A040835102D1A04083210021A04083110020A180A16082E12001A040835102E1A04083210021A04083110020A180A16082F12001A040835102F1A04083210021A04083110020A180A16083012001A04083510301A04083210021A04083110020A180A16083112001A04083510311A04083210021A04083110020A180A16083212001A04083510321A04083210021A04083110020A180A16083312001A04083510331A04083210021A04083110020A180A16083412001A04083510341A04083210021A04083110020A180A16083512001A04083510351A04083210021A04083110020A490A47083612084C4F454131365F391A04083510361A04083210021A0508870210021A04083110031A04083010001A0508CA0210001A0508CB0210001A0508CA0110051A0508B70110140A180A16083712001A04083510371A04083210021A04083110020A180A16083812001A04083510381A04083210021A04083110020A180A16083912001A04083510391A04083210021A04083110020A180A16083A12001A040835103A1A04083210021A04083110020A180A16083B12001A040835103B1A04083210021A04083110020A180A16083C12001A040835103C1A04083210021A04083110020A180A16083D12001A040835103D1A04083210021A04083110020A180A16083E12001A040835103E1A04083210021A04083110020A180A16083F12001A040835103F1A04083210021A04083110020A180A16080412001A04083510041A04083210011A04083110020A180A16080512001A04083510051A04083210011A04083110020A180A16080612001A04083510061A04083210011A04083110020A180A16080712001A04083510071A04083210011A04083110020A180A16080812001A04083510081A04083210011A04083110020A180A16080912001A04083510091A04083210011A04083110020A180A16080A12001A040835100A1A04083210011A04083110020A1F0A1D080B12001A040835100B1A04083210011A0508870210041A04083110030A180A16080C12001A040835100C1A04083210011A04083110020A180A16080D12001A040835100D1A04083210011A04083110020A180A16080E12001A040835100E1A04083210011A04083110020A180A16080F12001A040835100F1A04083210011A04083110020A180A16081012001A04083510101A04083210011A04083110020A1F0A1D081112001A04083510111A04083210011A0508870210031A04083110030A180A16081212001A04083510121A04083210011A04083110020A180A16081312001A04083510131A04083210011A04083110020A180A16081412001A04083510141A04083210011A04083110020A1F0A1D081512001A04083510151A04083210011A0508870210011A04083110030A180A16081612001A04083510161A04083210011A04083110020A180A16081712001A04083510171A04083210011A04083110020A180A16081812001A04083510181A04083210011A04083110020A180A16081912001A04083510191A04083210011A04083110020A1F0A1D081A12001A040835101A1A04083210011A0508870210021A04083110030A180A16081B12001A040835101B1A04083210011A04083110020A180A16081C12001A040835101C1A04083210011A04083110020A180A16081D12001A040835101D1A04083210011A04083110020A180A16081E12001A040835101E1A04083210011A04083110020A180A16081F12001A040835101F1A04083210011A04083110020A180A16082012001A04083510201A04083210011A04083110020A180A16082112001A04083510211A04083210011A04083110020A4B0A49084212094C4F454130345F30311A04083110011A04083510421A04083210021A0508B70110141A0608FC0210E77E1A0508CA0210001A0508CB0210001A04082D101E1A0508CA0110030A5D0A5B08431208435331685F3030311A0508B90210421A04083110011A04083510431A04083210021A04083110011A0508FB0110011A0508B70110021A04083010021A0508C70110061A0508CA01100A1A0508CB0110021A0508C90110030A460A440840120B54425F5350545F426F73731A04083110011A04083510401A04083210011A04082F10001A04082D101E1A0508CA0110031A0508B70110121A0708FC0210F1B4020A5D0A5B08411208435331685F3030311A0508B90210401A04083110011A04083510411A04083210011A04083110011A0508FB0110011A0508B70110021A04083010021A0508C70110061A0508CA01100A1A0508CB0110021A0508C90110030A1F0A1D084412001A04083510441A04083210011A0508870210051A0408311003"))); this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A0822060801100A18550A092207080110CA0118010A0822060801101418010A092207080110CC0118020A0822060801103118010A092207080110C60118040A0822060801103518010A0822060801101318040A0822060802101B18400A0822060802101118010A0822060802103118010A0822060802101F18010A0822060802101E18010A0822060802101C180A0A0822060802101D18040A092207080210900218010A092207080210CA0118020A08220608021007184B0A092207080210B001180A0A0922070802108F0318040A0822060802103518020A0822060802103218010A092207080210B10218010A0822060803101818010A0822060803101B18420A0822060803101118010A0822060803101718010A0822060803101F18020A0822060803101E18020A0822060803101C180A0A0822060803101D18040A092207080310900218010A092207080310CA0118020A0822060803103118010A08220608031007184B0A092207080310B001180A0A0922070803108F0318030A0822060803103518030A0822060803103218020A133211080510FFFFFFFFFFFFFFFFFF0118012000"))); diff --git a/src/main/java/com/alterdekim/hearthhack/component/GamePool.java b/src/main/java/com/alterdekim/hearthhack/component/GamePool.java index 8caf5b6..a3bbc6d 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GamePool.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GamePool.java @@ -4,6 +4,7 @@ import com.alterdekim.hearthhack.entity.RoomPlayer; import com.alterdekim.hearthhack.service.RoomPlayerService; import com.alterdekim.hearthhack.service.RoomService; import com.alterdekim.hearthhack.service.UserService; +import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -26,22 +27,30 @@ public class GamePool { @Autowired private RoomPlayerService roomPlayerService; - private ConcurrentHashMap games = new ConcurrentHashMap<>(); + private final ConcurrentHashMap games = new ConcurrentHashMap<>(); - private static final int PLAYERS_COUNT = 2; + private static final int PLAYERS_COUNT = 1; // TODO: MAKE 2 PLAYERS FOR PRODUCTION - @Scheduled(fixedRate = 1000) + @Scheduled(fixedRate = 200) private void refreshRooms() { roomService.getAll() .forEach(r -> { if( roomPlayerService.findByRoomId(r.getId()).size() != PLAYERS_COUNT ) return; + log.info("Got room!"); List players = roomPlayerService.findByRoomId(r.getId()); + log.info("Put room by id: {}", r.getId()); + games.put(r.getId(), new GameRoom(players, userService, r.getRoomPassword())); roomPlayerService.removeByRoomId(r.getId()); roomService.removeRoom(r.getId()); - games.put(r.getId(), new GameRoom(players, userService)); }); } + @PostConstruct + private void clearRooms() { + roomService.clear(); + roomPlayerService.clear(); + } + public Boolean containsPlayer(Long userId) { return games.keySet() .stream() @@ -64,4 +73,8 @@ public class GamePool { ) .findFirst(); } + + public GameRoom getGameRoomById(Long id) { + return games.get(id); + } } diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java b/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java index 9f65c53..b50f1bb 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java @@ -1,19 +1,29 @@ package com.alterdekim.hearthhack.component; import com.alterdekim.hearthhack.entity.RoomPlayer; -import com.alterdekim.hearthhack.entity.User; import com.alterdekim.hearthhack.service.UserService; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.ToString; import lombok.extern.slf4j.Slf4j; import java.util.List; +@ToString @Slf4j -@AllArgsConstructor public class GameRoom { @Getter - private List players; + private final List players; - private UserService userService; + private final UserService userService; + + @Getter + private final String password; + + public GameRoom(List players, UserService userService, String password) { + this.players = players; + this.userService = userService; + this.password = password; + log.info("New GameRoom!"); + } } diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameServer.java b/src/main/java/com/alterdekim/hearthhack/component/GameServer.java index 51c7a39..c449e0b 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameServer.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameServer.java @@ -1,6 +1,7 @@ package com.alterdekim.hearthhack.component; import com.alterdekim.hearthhack.config.ServerConfig; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -25,6 +26,10 @@ public class GameServer { @Autowired private ServerConfig serverConfig; + @Getter + @Autowired + private GamePool gamePool; + @Scheduled(fixedDelay = 5000) private void start() { try { @@ -34,7 +39,7 @@ public class GameServer { while(true) { Socket client = this.serverSocket.accept(); log.info("New WOW Connection Established From {}", client.getInetAddress().toString()); - GameConnection c = new GameConnection(client); + GameConnection c = new GameConnection(client, this); this.connections.add(c); c.start(); } diff --git a/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java b/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java index 2055094..157e6b6 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java +++ b/src/main/java/com/alterdekim/hearthhack/component/StartupListener.java @@ -4,14 +4,11 @@ import com.alterdekim.hearthhack.config.ObjectConfig; import com.alterdekim.hearthhack.config.FS; import com.alterdekim.hearthhack.config.ServerConfig; import com.alterdekim.hearthhack.dbf.CardsDBF; -import com.alterdekim.hearthhack.game.GameTag; import com.alterdekim.hearthhack.parser.CardsXmlParser; import com.alterdekim.hearthhack.parser.DBFParser; import com.alterdekim.hearthhack.util.CardsObject; import com.alterdekim.hearthhack.util.FormattedCards; import com.alterdekim.hearthhack.xml.CardsXML; -import com.alterdekim.hearthhack.xml.XMLEntity; -import com.alterdekim.hearthhack.xml.XMLTag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.jdbc.DataSourceBuilder; @@ -24,7 +21,6 @@ import javax.sql.DataSource; import java.io.File; import java.io.IOException; import java.nio.file.*; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; diff --git a/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java b/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java index a02aa13..4b2d420 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java +++ b/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java @@ -2,6 +2,8 @@ package com.alterdekim.hearthhack.component; import com.alterdekim.hearthhack.component.processor.*; import com.alterdekim.hearthhack.config.ObjectConfig; +import com.alterdekim.hearthhack.service.RoomPlayerService; +import com.alterdekim.hearthhack.service.RoomService; import com.alterdekim.hearthhack.service.UserService; import com.alterdekim.hearthhack.util.BattleNetPacket; import lombok.Getter; @@ -35,6 +37,12 @@ public class TcpConnection extends Thread { @Getter private final UserService userService; + @Getter + private final RoomService roomService; + + @Getter + private final RoomPlayerService roomPlayerService; + @Getter @Setter private Long userId; diff --git a/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java b/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java index d7a962c..a42c60b 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java +++ b/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java @@ -5,6 +5,8 @@ import com.alterdekim.hearthhack.component.processor.Processor; import com.alterdekim.hearthhack.config.ObjectConfig; import com.alterdekim.hearthhack.config.ServerConfig; import com.alterdekim.hearthhack.reflect.ReflectionLoader; +import com.alterdekim.hearthhack.service.RoomPlayerService; +import com.alterdekim.hearthhack.service.RoomService; import com.alterdekim.hearthhack.service.UserService; import com.alterdekim.hearthhack.util.Util; import lombok.extern.slf4j.Slf4j; @@ -36,6 +38,12 @@ public class TcpServer extends ReflectionLoader { @Autowired private UserService userService; + @Autowired + private RoomPlayerService roomPlayerService; + + @Autowired + private RoomService roomService; + @Scheduled(fixedDelay = 5000) private void start() { try { @@ -55,7 +63,7 @@ public class TcpServer extends ReflectionLoader { while(true) { SSLSocket s = (SSLSocket) serverSocket.accept(); - TcpConnection c = new TcpConnection(s, this.getParsers(), dbfConfig, userService); + TcpConnection c = new TcpConnection(s, this.getParsers(), dbfConfig, userService, roomService, roomPlayerService); connections.add(c); c.start(); log.info("New Connection Established From {}", s.getInetAddress().toString()); diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/AccountProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/AccountProcessor.java index b9e046c..c722974 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/AccountProcessor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/AccountProcessor.java @@ -5,10 +5,7 @@ import com.alterdekim.Protocol; import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.Util; -import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; @Slf4j public class AccountProcessor extends Processor { diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/ChannelProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/ChannelProcessor.java index 8b49909..8245486 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/ChannelProcessor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/ChannelProcessor.java @@ -4,10 +4,7 @@ package com.alterdekim.hearthhack.component.processor; import com.alterdekim.Protocol; import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.util.BattleNetPacket; -import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; @Slf4j public class ChannelProcessor extends Processor { diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/ConnectionProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/ConnectionProcessor.java index 647d421..3b550c8 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/ConnectionProcessor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/ConnectionProcessor.java @@ -5,7 +5,6 @@ import com.alterdekim.Protocol; import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.Util; -import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.Set; diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java index 6e039ad..b098af9 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java @@ -2,15 +2,13 @@ package com.alterdekim.hearthhack.component.processor; import com.alterdekim.Protocol; import com.alterdekim.hearthhack.component.TcpConnection; +import com.alterdekim.hearthhack.entity.Room; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.GameType; -import com.alterdekim.hearthhack.util.Util; import com.google.protobuf.ByteString; import lombok.extern.slf4j.Slf4j; -import java.nio.charset.StandardCharsets; - -import static com.alterdekim.hearthhack.util.GameUtilities.generateSmallNotification; +import java.util.UUID; @Slf4j public class GameMasterProcessor extends Processor { @@ -84,6 +82,9 @@ public class GameMasterProcessor extends Processor { n.getAttributeList().stream().filter(p -> p.hasName() && p.getName().equals("connection_info")).findFirst().get().getValue().getMessageValue() ); log.info("GGGG: {}", ci);*/ + String pwd = UUID.randomUUID().toString(); + Long roomId = conn.getRoomService().createRoom(new Room(pwd)); // TODO: make 1 player rooms check. + conn.getRoomPlayerService().joinRoom(roomId, conn.getUserId()); // TODO: make 1 player rooms check. Protocol.Notification n1 = Protocol.Notification.newBuilder() .setType("G_RESULT") @@ -127,7 +128,7 @@ public class GameMasterProcessor extends Processor { ) .setHost("192.168.0.9") .setPort(3724) - .setToken(ByteString.copyFromUtf8("EjcDeI")) + .setToken(ByteString.copyFromUtf8(pwd)) // password .addAttribute(Protocol.Attribute .newBuilder() .setName("version") @@ -135,7 +136,7 @@ public class GameMasterProcessor extends Processor { .addAttribute(Protocol.Attribute .newBuilder() .setName("game") - .setValue(Protocol.Variant.newBuilder().setIntValue(13697066L))) + .setValue(Protocol.Variant.newBuilder().setIntValue(roomId))) // game_id .addAttribute(Protocol.Attribute .newBuilder() .setName("player") @@ -143,7 +144,7 @@ public class GameMasterProcessor extends Processor { .addAttribute(Protocol.Attribute .newBuilder() .setName("id") - .setValue(Protocol.Variant.newBuilder().setIntValue(59414578L))) + .setValue(Protocol.Variant.newBuilder().setIntValue(conn.getUserId()))) .addAttribute(Protocol.Attribute .newBuilder() .setName("resumable") diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java index 3f7f173..1d62132 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/GameUtilitiesProcessor.java @@ -8,7 +8,7 @@ import com.alterdekim.hearthhack.reflect.ReflectionLoader; import com.alterdekim.hearthhack.util.*; import com.google.protobuf.InvalidProtocolBufferException; import lombok.extern.slf4j.Slf4j; -import java.util.Map; + import java.util.Optional; diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/Processor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/Processor.java index 154ec3a..4293bed 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/Processor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/Processor.java @@ -5,7 +5,6 @@ import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.reflect.AbstractParser; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.Compute32; -import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetAchieves.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetAchieves.java index 7b2816a..49aaf21 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetAchieves.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetAchieves.java @@ -4,11 +4,9 @@ import com.alterdekim.Protocol; import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.ClientRequestBody; -import com.alterdekim.hearthhack.util.Util; import java.util.stream.IntStream; -import static com.alterdekim.hearthhack.util.GameUtilities.generateEmptyNotification; import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification; public class GetAchieves extends ClientRequestParser { @@ -37,7 +35,7 @@ public class GetAchieves extends ClientRequestParser { achieves.addList(Protocol.Achieve.newBuilder() .setId(79) - .setProgress(10) + .setProgress(11) .setActive(false) .setAckProgress(10) .setDoNotAck(true) diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetDeck.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetDeck.java index 9b9eb35..f7d6bb6 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetDeck.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/GetDeck.java @@ -5,16 +5,11 @@ import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.component.processor.Processor; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.ClientRequestBody; -import com.alterdekim.hearthhack.util.Util; -import com.google.protobuf.ByteString; import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification; - @Slf4j public class GetDeck extends ClientRequestParser { @Override diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/SetCardSeen.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/SetCardSeen.java index ff000ca..9cb8a54 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/SetCardSeen.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/SetCardSeen.java @@ -5,8 +5,6 @@ import com.alterdekim.hearthhack.component.TcpConnection; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.ClientRequestBody; -import java.util.List; - public class SetCardSeen extends ClientRequestParser { @Override public void parse(BattleNetPacket packet, ClientRequestBody body, TcpConnection conn) throws Exception { diff --git a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java index 761aeb2..54a5900 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/client/request/generic/Collection.java @@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.stream.Collectors; -import static com.alterdekim.hearthhack.util.GameUtilities.generateEmptyNotification; import static com.alterdekim.hearthhack.util.GameUtilities.generateNotification; import static com.alterdekim.hearthhack.util.GetAccountInfoRequest.COLLECTION; diff --git a/src/main/java/com/alterdekim/hearthhack/config/ObjectConfig.java b/src/main/java/com/alterdekim/hearthhack/config/ObjectConfig.java index b406368..9763668 100644 --- a/src/main/java/com/alterdekim/hearthhack/config/ObjectConfig.java +++ b/src/main/java/com/alterdekim/hearthhack/config/ObjectConfig.java @@ -1,7 +1,6 @@ package com.alterdekim.hearthhack.config; import com.alterdekim.hearthhack.dbf.CardsDBF; -import com.alterdekim.hearthhack.util.CardsObject; import com.alterdekim.hearthhack.util.FormattedCards; import com.alterdekim.hearthhack.xml.CardsXML; import lombok.Data; diff --git a/src/main/java/com/alterdekim/hearthhack/entity/Room.java b/src/main/java/com/alterdekim/hearthhack/entity/Room.java index 767e7f4..eeb4d84 100644 --- a/src/main/java/com/alterdekim/hearthhack/entity/Room.java +++ b/src/main/java/com/alterdekim/hearthhack/entity/Room.java @@ -19,5 +19,9 @@ public class Room { @Column(nullable = false) private String roomPassword; + + public Room(String roomPassword) { + this.roomPassword = roomPassword; + } } diff --git a/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java b/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java index 4454132..1830ce9 100644 --- a/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java +++ b/src/main/java/com/alterdekim/hearthhack/entity/UserCard.java @@ -1,6 +1,5 @@ package com.alterdekim.hearthhack.entity; -import com.alterdekim.hearthhack.dto.BoosterDTO; import com.alterdekim.hearthhack.dto.UserCardDTO; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/alterdekim/hearthhack/reflect/ReflectionLoader.java b/src/main/java/com/alterdekim/hearthhack/reflect/ReflectionLoader.java index d9c2a95..3ad1e13 100644 --- a/src/main/java/com/alterdekim/hearthhack/reflect/ReflectionLoader.java +++ b/src/main/java/com/alterdekim/hearthhack/reflect/ReflectionLoader.java @@ -1,6 +1,5 @@ package com.alterdekim.hearthhack.reflect; -import com.alterdekim.hearthhack.component.processor.Processor; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.reflections.Reflections; diff --git a/src/main/java/com/alterdekim/hearthhack/repository/BoosterRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/BoosterRepository.java index 42a6016..f6fe3d3 100644 --- a/src/main/java/com/alterdekim/hearthhack/repository/BoosterRepository.java +++ b/src/main/java/com/alterdekim/hearthhack/repository/BoosterRepository.java @@ -2,7 +2,6 @@ package com.alterdekim.hearthhack.repository; import com.alterdekim.hearthhack.dto.BoosterDTO; import com.alterdekim.hearthhack.entity.Booster; -import com.alterdekim.hearthhack.entity.HeroXP; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/com/alterdekim/hearthhack/repository/CardBackRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/CardBackRepository.java index 4dc7638..fcbb2e5 100644 --- a/src/main/java/com/alterdekim/hearthhack/repository/CardBackRepository.java +++ b/src/main/java/com/alterdekim/hearthhack/repository/CardBackRepository.java @@ -1,10 +1,7 @@ package com.alterdekim.hearthhack.repository; import com.alterdekim.hearthhack.entity.CardBack; -import com.alterdekim.hearthhack.entity.HeroXP; -import jakarta.transaction.Transactional; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/alterdekim/hearthhack/repository/DeckContentRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/DeckContentRepository.java index 1e44c78..e40cd77 100644 --- a/src/main/java/com/alterdekim/hearthhack/repository/DeckContentRepository.java +++ b/src/main/java/com/alterdekim/hearthhack/repository/DeckContentRepository.java @@ -1,6 +1,5 @@ package com.alterdekim.hearthhack.repository; -import com.alterdekim.hearthhack.entity.Deck; import com.alterdekim.hearthhack.entity.DeckContent; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; diff --git a/src/main/java/com/alterdekim/hearthhack/repository/DeckRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/DeckRepository.java index deec844..9ba320c 100644 --- a/src/main/java/com/alterdekim/hearthhack/repository/DeckRepository.java +++ b/src/main/java/com/alterdekim/hearthhack/repository/DeckRepository.java @@ -1,7 +1,6 @@ package com.alterdekim.hearthhack.repository; import com.alterdekim.hearthhack.entity.Deck; -import com.alterdekim.hearthhack.entity.HeroXP; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java index 95424ef..c9d33c1 100644 --- a/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java +++ b/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java @@ -8,8 +8,6 @@ import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @Repository public interface RoomRepository extends JpaRepository { diff --git a/src/main/java/com/alterdekim/hearthhack/repository/UserCardRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/UserCardRepository.java index 4c28873..3bd6a74 100644 --- a/src/main/java/com/alterdekim/hearthhack/repository/UserCardRepository.java +++ b/src/main/java/com/alterdekim/hearthhack/repository/UserCardRepository.java @@ -1,7 +1,6 @@ package com.alterdekim.hearthhack.repository; import com.alterdekim.hearthhack.dto.UserCardDTO; -import com.alterdekim.hearthhack.entity.User; import com.alterdekim.hearthhack.entity.UserCard; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; diff --git a/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java b/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java index 20a22f5..34cd121 100644 --- a/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java +++ b/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java @@ -36,5 +36,9 @@ public class RoomPlayerService implements IService { public void removeByRoomId(Long roomId) { repository.removeByRoomId(roomId); } + + public void clear() { + repository.deleteAll(); + } } diff --git a/src/main/java/com/alterdekim/hearthhack/service/RoomService.java b/src/main/java/com/alterdekim/hearthhack/service/RoomService.java index 0161130..5f9c2a2 100644 --- a/src/main/java/com/alterdekim/hearthhack/service/RoomService.java +++ b/src/main/java/com/alterdekim/hearthhack/service/RoomService.java @@ -32,4 +32,8 @@ public class RoomService implements IService { public void removeRoom(Long roomId) { roomRepository.deleteById(roomId); } + + public void clear() { + roomRepository.deleteAll(); + } } diff --git a/src/main/java/com/alterdekim/hearthhack/service/UserService.java b/src/main/java/com/alterdekim/hearthhack/service/UserService.java index 0884b20..c812dc4 100644 --- a/src/main/java/com/alterdekim/hearthhack/service/UserService.java +++ b/src/main/java/com/alterdekim/hearthhack/service/UserService.java @@ -7,7 +7,6 @@ import com.alterdekim.hearthhack.dto.UserDTO; import com.alterdekim.hearthhack.entity.*; import com.alterdekim.hearthhack.repository.*; import lombok.RequiredArgsConstructor; -import org.checkerframework.checker.units.qual.C; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java b/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java index c860846..65b57e6 100644 --- a/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java +++ b/src/main/java/com/alterdekim/hearthhack/xml/CardsXML.java @@ -1,13 +1,10 @@ package com.alterdekim.hearthhack.xml; -import com.alterdekim.hearthhack.game.GameTag; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import lombok.*; import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; @ToString @Getter diff --git a/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java b/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java index f0bd376..8ef8f09 100644 --- a/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java +++ b/src/main/java/com/alterdekim/hearthhack/xml/XMLEntity.java @@ -3,7 +3,6 @@ package com.alterdekim.hearthhack.xml; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText; import lombok.*; import java.util.List;