From 8c2053e0fb4d6c96b049f25a314b6925d925c201 Mon Sep 17 00:00:00 2001 From: alterdekim Date: Tue, 25 Jun 2024 03:32:18 +0300 Subject: [PATCH] Ladder continuation x2 --- .../hearthhack/component/GameConnection.java | 1841 ++++++++++++++--- .../hearthhack/component/GamePool.java | 35 +- .../hearthhack/component/GameRoom.java | 6 +- .../hearthhack/component/TcpConnection.java | 4 - .../hearthhack/component/TcpServer.java | 6 +- .../processor/GameMasterProcessor.java | 8 +- .../{entity/Room.java => dto/RoomDTO.java} | 19 +- .../hearthhack/dto/RoomPlayerDTO.java | 14 + .../hearthhack/entity/RoomPlayer.java | 31 - .../repository/RoomPlayerRepository.java | 32 - .../hearthhack/repository/RoomRepository.java | 18 - .../hearthhack/service/RoomPlayerService.java | 44 - .../hearthhack/service/RoomService.java | 46 +- 13 files changed, 1674 insertions(+), 430 deletions(-) rename src/main/java/com/alterdekim/hearthhack/{entity/Room.java => dto/RoomDTO.java} (51%) create mode 100644 src/main/java/com/alterdekim/hearthhack/dto/RoomPlayerDTO.java delete mode 100644 src/main/java/com/alterdekim/hearthhack/entity/RoomPlayer.java delete mode 100644 src/main/java/com/alterdekim/hearthhack/repository/RoomPlayerRepository.java delete mode 100644 src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java delete mode 100644 src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java b/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java index 4511bea..2187703 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameConnection.java @@ -72,250 +72,1621 @@ public class GameConnection extends Thread { 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)) + .setCreateGame(PegasusGame.PowerHistoryCreateGame.newBuilder() + .setGameEntity(PegasusGame.Entity.newBuilder() + .setId(1) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(1) ) - .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()) + .addTags(PegasusGame.Tag.newBuilder() + .setName(198) + .setValue(4) ) - .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()) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) ) - + .addTags(PegasusGame.Tag.newBuilder() + .setName(204) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(20) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(10) + .setValue(85) + ) + ) + .addPlayers(PegasusGame.Player.newBuilder() + .setId(2) + .setGameAccountId(PegasusShared.BnetId.newBuilder() + .setHi(144115198130930503L) + .setLo(78330215) + ) + .setCardBack(0) + .setEntity(PegasusGame.Entity.newBuilder() + .setId(3) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(399) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(176) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(7) + .setValue(75) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(272) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(29) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(28) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(30) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(31) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(23) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(17) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(27) + .setValue(66) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(24) + .setValue(1) + ) + ) + ) + .addPlayers(PegasusGame.Player.newBuilder() + .setId(1) + .setGameAccountId(PegasusShared.BnetId.newBuilder() + .setHi(144115198130930503L) + .setLo(77500085) + ) + .setCardBack(0) + .setEntity(PegasusGame.Entity.newBuilder() + .setId(2) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(399) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(176) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(7) + .setValue(75) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(272) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(29) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(28) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(30) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(31) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(17) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(27) + .setValue(64) + ) + ) + ) ) ) - .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() + .setEntity(34) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(34) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) ) - .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() + .setEntity(35) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(35) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) ) - .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() + .setEntity(36) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(36) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) ) - .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()) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(37) + .setName("EX1_593") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(37) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(321) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(218) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(45) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(47) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(48) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(203) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(201) + .setValue(3) + ) + ) ) - .build(); - + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(38) + .setName("EX1_383") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(38) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(251) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(194) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(321) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(190) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(330) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(331) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(45) + .setValue(16) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(47) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(114) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(48) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(199) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(203) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(217) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(201) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(39) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(39) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(40) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(40) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(41) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(41) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(42) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(42) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(43) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(43) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(44) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(44) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(45) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(45) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(46) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(46) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(47) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(47) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(48) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(48) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(49) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(49) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(50) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(50) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(51) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(51) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(52) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(52) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(53) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(53) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(54) + .setName("LOEA16_9") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(54) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(48) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(330) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(331) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(20) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(55) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(55) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(56) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(56) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(57) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(57) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(58) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(58) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(59) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(59) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(60) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(60) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(61) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(61) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(62) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(62) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(63) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(63) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(4) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(5) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(6) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(6) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(7) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(7) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(8) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(8) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(9) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(9) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(10) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(11) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(11) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(4) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(12) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(12) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(13) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(13) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(14) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(14) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(15) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(15) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(16) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(16) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(17) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(17) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(18) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(18) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(19) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(19) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(20) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(20) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(21) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(21) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(22) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(22) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(23) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(23) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(24) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(24) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(25) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(25) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(26) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(26) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(27) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(27) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(28) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(28) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(29) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(29) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(30) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(30) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(31) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(31) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(32) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(32) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(33) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(33) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(2) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(66) + .setName("LOEA04_01") + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(66) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(20) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(380) + .setValue(16231) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(330) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(331) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(45) + .setValue(30) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(67) + .setName("CS1h_001") + .addTags(PegasusGame.Tag.newBuilder() + .setName(313) + .setValue(66) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(67) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(251) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(48) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(199) + .setValue(6) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(203) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(201) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(64) + .setName("TB_SPT_Boss") + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(64) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(47) + .setValue(0) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(45) + .setValue(30) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(3) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(18) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(380) + .setValue(39537) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(65) + .setName("CS1h_001") + .addTags(PegasusGame.Tag.newBuilder() + .setName(313) + .setValue(64) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(65) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(251) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(183) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(48) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(199) + .setValue(6) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(202) + .setValue(10) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(203) + .setValue(2) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(201) + .setValue(3) + ) + ) + ) + .addList(PegasusGame.PowerHistoryData.newBuilder() + .setFullEntity(PegasusGame.PowerHistoryEntity.newBuilder() + .setEntity(68) + .setName("") + .addTags(PegasusGame.Tag.newBuilder() + .setName(53) + .setValue(68) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(50) + .setValue(1) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(263) + .setValue(5) + ) + .addTags(PegasusGame.Tag.newBuilder() + .setName(49) + .setValue(3) + ) + ) + ).build(); + log.info("Packet: {}", powerHistory); this.send(new PegasusPacket(19, 0, powerHistory.toByteArray())); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/alterdekim/hearthhack/component/GamePool.java b/src/main/java/com/alterdekim/hearthhack/component/GamePool.java index a3bbc6d..f32b91a 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GamePool.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GamePool.java @@ -1,7 +1,6 @@ package com.alterdekim.hearthhack.component; -import com.alterdekim.hearthhack.entity.RoomPlayer; -import com.alterdekim.hearthhack.service.RoomPlayerService; +import com.alterdekim.hearthhack.dto.RoomPlayerDTO; import com.alterdekim.hearthhack.service.RoomService; import com.alterdekim.hearthhack.service.UserService; import jakarta.annotation.PostConstruct; @@ -24,9 +23,6 @@ public class GamePool { @Autowired private RoomService roomService; - @Autowired - private RoomPlayerService roomPlayerService; - private final ConcurrentHashMap games = new ConcurrentHashMap<>(); private static final int PLAYERS_COUNT = 1; // TODO: MAKE 2 PLAYERS FOR PRODUCTION @@ -35,12 +31,11 @@ public class GamePool { private void refreshRooms() { roomService.getAll() .forEach(r -> { - if( roomPlayerService.findByRoomId(r.getId()).size() != PLAYERS_COUNT ) return; + if( r.getPlayers().size() != PLAYERS_COUNT ) return; log.info("Got room!"); - List players = roomPlayerService.findByRoomId(r.getId()); + List players = r.getPlayers(); 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()); }); } @@ -48,30 +43,6 @@ public class GamePool { @PostConstruct private void clearRooms() { roomService.clear(); - roomPlayerService.clear(); - } - - public Boolean containsPlayer(Long userId) { - return games.keySet() - .stream() - .anyMatch(k -> games.get(k) - .getPlayers() - .stream() - .anyMatch(p -> p.getId().longValue() == userId.longValue() - ) - ); - } - - public Optional getGameIdByPlayerId(Long userId) { - return games.keySet() - .stream() - .filter(k -> games.get(k) - .getPlayers() - .stream() - .anyMatch(p -> p.getId().longValue() == userId.longValue() - ) - ) - .findFirst(); } public GameRoom getGameRoomById(Long id) { diff --git a/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java b/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java index b50f1bb..606d5fe 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java +++ b/src/main/java/com/alterdekim/hearthhack/component/GameRoom.java @@ -1,6 +1,6 @@ package com.alterdekim.hearthhack.component; -import com.alterdekim.hearthhack.entity.RoomPlayer; +import com.alterdekim.hearthhack.dto.RoomPlayerDTO; import com.alterdekim.hearthhack.service.UserService; import lombok.AllArgsConstructor; import lombok.Getter; @@ -13,14 +13,14 @@ import java.util.List; @Slf4j public class GameRoom { @Getter - private final List players; + private final List players; private final UserService userService; @Getter private final String password; - public GameRoom(List players, UserService userService, String password) { + public GameRoom(List players, UserService userService, String password) { this.players = players; this.userService = userService; this.password = password; diff --git a/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java b/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java index 4b2d420..d6b8f88 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java +++ b/src/main/java/com/alterdekim/hearthhack/component/TcpConnection.java @@ -2,7 +2,6 @@ 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; @@ -40,9 +39,6 @@ public class TcpConnection extends Thread { @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 a42c60b..2b91ebe 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java +++ b/src/main/java/com/alterdekim/hearthhack/component/TcpServer.java @@ -5,7 +5,6 @@ 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; @@ -38,9 +37,6 @@ public class TcpServer extends ReflectionLoader { @Autowired private UserService userService; - @Autowired - private RoomPlayerService roomPlayerService; - @Autowired private RoomService roomService; @@ -63,7 +59,7 @@ public class TcpServer extends ReflectionLoader { while(true) { SSLSocket s = (SSLSocket) serverSocket.accept(); - TcpConnection c = new TcpConnection(s, this.getParsers(), dbfConfig, userService, roomService, roomPlayerService); + TcpConnection c = new TcpConnection(s, this.getParsers(), dbfConfig, userService, roomService); 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/GameMasterProcessor.java b/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java index b098af9..4837b77 100644 --- a/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java +++ b/src/main/java/com/alterdekim/hearthhack/component/processor/GameMasterProcessor.java @@ -2,7 +2,7 @@ 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.dto.RoomDTO; import com.alterdekim.hearthhack.util.BattleNetPacket; import com.alterdekim.hearthhack.util.GameType; import com.google.protobuf.ByteString; @@ -83,8 +83,10 @@ public class GameMasterProcessor extends Processor { ); 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. + Long roomId = conn.getRoomService().createRoom(new RoomDTO(pwd)); // TODO: make 1 player rooms check. + conn.getRoomService().joinRoom(roomId, conn.getUserId()); // TODO: make 1 player rooms check. + + Thread.sleep(1000L); Protocol.Notification n1 = Protocol.Notification.newBuilder() .setType("G_RESULT") diff --git a/src/main/java/com/alterdekim/hearthhack/entity/Room.java b/src/main/java/com/alterdekim/hearthhack/dto/RoomDTO.java similarity index 51% rename from src/main/java/com/alterdekim/hearthhack/entity/Room.java rename to src/main/java/com/alterdekim/hearthhack/dto/RoomDTO.java index eeb4d84..54dec32 100644 --- a/src/main/java/com/alterdekim/hearthhack/entity/Room.java +++ b/src/main/java/com/alterdekim/hearthhack/dto/RoomDTO.java @@ -1,27 +1,26 @@ -package com.alterdekim.hearthhack.entity; +package com.alterdekim.hearthhack.dto; -import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import java.util.ArrayList; +import java.util.List; + @Getter @Setter @NoArgsConstructor @AllArgsConstructor -@Entity -@Table(name = "room") -public class Room { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +public class RoomDTO { private Long id; - @Column(nullable = false) + private List players; + private String roomPassword; - public Room(String roomPassword) { + public RoomDTO(String roomPassword) { + this.players = new ArrayList<>(); this.roomPassword = roomPassword; } } - diff --git a/src/main/java/com/alterdekim/hearthhack/dto/RoomPlayerDTO.java b/src/main/java/com/alterdekim/hearthhack/dto/RoomPlayerDTO.java new file mode 100644 index 0000000..4d4dfd1 --- /dev/null +++ b/src/main/java/com/alterdekim/hearthhack/dto/RoomPlayerDTO.java @@ -0,0 +1,14 @@ +package com.alterdekim.hearthhack.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@AllArgsConstructor +@Getter +@Setter +@ToString +public class RoomPlayerDTO { + private Long userId; +} diff --git a/src/main/java/com/alterdekim/hearthhack/entity/RoomPlayer.java b/src/main/java/com/alterdekim/hearthhack/entity/RoomPlayer.java deleted file mode 100644 index c8beb59..0000000 --- a/src/main/java/com/alterdekim/hearthhack/entity/RoomPlayer.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.alterdekim.hearthhack.entity; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@Entity -@Table(name = "room_player") -public class RoomPlayer { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(nullable = false) - private Long roomId; - - @Column(nullable = false) - private Long userId; - - public RoomPlayer(Long roomId, Long userId) { - this.roomId = roomId; - this.userId = userId; - } -} - diff --git a/src/main/java/com/alterdekim/hearthhack/repository/RoomPlayerRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/RoomPlayerRepository.java deleted file mode 100644 index 1a21f7d..0000000 --- a/src/main/java/com/alterdekim/hearthhack/repository/RoomPlayerRepository.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.alterdekim.hearthhack.repository; - -import com.alterdekim.hearthhack.entity.RoomPlayer; -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; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Repository -public interface RoomPlayerRepository extends JpaRepository { - - @Query(value = "SELECT new RoomPlayer(r.id, r.roomId, r.userId) FROM RoomPlayer r WHERE r.roomId = :roomId ORDER BY r.userId ASC") - List findByRoomId(@Param("roomId") Long roomId); - - @Transactional - @Modifying - @Query(value = "DELETE FROM RoomPlayer r WHERE r.userId = :userId") - void deleteAllByUserId(@Param("userId") Long userId); - - @Transactional - @Modifying - @Query(value = "DELETE FROM RoomPlayer r WHERE r.roomId = :roomId") - void removeByRoomId(@Param("roomId") Long roomId); - - @Query(value = "SELECT r.roomId FROM RoomPlayer r WHERE r.userId = :userId ORDER BY r.roomId ASC LIMIT 1") - Long hasUserId(@Param("userId") Long userId); -} - diff --git a/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java b/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java deleted file mode 100644 index c9d33c1..0000000 --- a/src/main/java/com/alterdekim/hearthhack/repository/RoomRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alterdekim.hearthhack.repository; - -import com.alterdekim.hearthhack.entity.Room; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -@Repository -public interface RoomRepository extends JpaRepository { - - @Transactional(propagation = Propagation.REQUIRES_NEW) - @Modifying - @Query(value = "DELETE FROM room WHERE room.id NOT IN (SELECT t.room_id FROM (SELECT COUNT(id) as UID, room_id FROM room_player GROUP BY room_id) t)", nativeQuery = true) - void clearEmptyRooms(); -} diff --git a/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java b/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java deleted file mode 100644 index 34cd121..0000000 --- a/src/main/java/com/alterdekim/hearthhack/service/RoomPlayerService.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.alterdekim.hearthhack.service; - -import com.alterdekim.hearthhack.entity.RoomPlayer; -import com.alterdekim.hearthhack.repository.RoomPlayerRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -@RequiredArgsConstructor -public class RoomPlayerService implements IService { - - private final RoomPlayerRepository repository; - - public List getAll() { - return repository.findAll(); - } - - public List findByRoomId(Long roomId) { - return repository.findByRoomId(roomId); - } - - public void joinRoom(Long id, Long userId) { - repository.save(new RoomPlayer(id, userId)); - } - - public void leaveByUserId(Long userId) { - repository.deleteAllByUserId(userId); - } - - public Long hasUserId(Long userId) { - return repository.hasUserId(userId); - } - - 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 5f9c2a2..271ca5c 100644 --- a/src/main/java/com/alterdekim/hearthhack/service/RoomService.java +++ b/src/main/java/com/alterdekim/hearthhack/service/RoomService.java @@ -1,39 +1,59 @@ package com.alterdekim.hearthhack.service; -import com.alterdekim.hearthhack.entity.Room; -import com.alterdekim.hearthhack.repository.RoomRepository; +import com.alterdekim.hearthhack.dto.RoomDTO; +import com.alterdekim.hearthhack.dto.RoomPlayerDTO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.stream.Collectors; -@RequiredArgsConstructor @Service public class RoomService implements IService { - private final RoomRepository roomRepository; - public List getAll() { - return roomRepository.findAll(); + private ConcurrentMap map; + private Long _id = 0L; + + public RoomService() { + this.map = new ConcurrentHashMap<>(); } - public Optional findById(Long id) { - return roomRepository.findById(id); + public List getAll() { + return new ArrayList<>(map.values()); } - public Long createRoom(Room room) { - return roomRepository.save(room).getId(); + public Optional findById(Long id) { + return Optional.ofNullable(map.get(id)); + } + + public Long createRoom(RoomDTO room) { + this._id++; + room.setId(_id); + this.map.put(_id, room); + return this._id; } public void clearEmptyRooms() { - roomRepository.clearEmptyRooms(); + this.map.keySet().stream() + .filter(k -> map.get(k).getPlayers().isEmpty()) + .forEach(k -> map.remove(k)); } public void removeRoom(Long roomId) { - roomRepository.deleteById(roomId); + this.map.remove(roomId); } public void clear() { - roomRepository.deleteAll(); + map = new ConcurrentHashMap<>(); + } + + public void joinRoom(Long roomId, Long userId) { + RoomDTO r = map.get(roomId); + r.getPlayers().add(new RoomPlayerDTO(userId)); + map.put(roomId, r); } }