1776 lines
116 KiB
Java

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;
private boolean isLoggedIn = false;
public void stopListeningAndDisconnect() {
try {
this.client.close();
this.interrupt();
} catch (IOException e) {
log.error(e.getMessage());
}
}
private void processPacket( PegasusPacket packet ) throws Exception {
log.info("PegasusPacket: type={}, context={}, size={}", packet.getType(), packet.getContext(), packet.getSize());
if( !isLoggedIn && packet.getType() != 168 ) stopListeningAndDisconnect();
switch (packet.getType()) {
case 168:
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)
.setMaxSecretsPerPlayer(5)
.setKeepAliveFrequencySeconds(30)
.setDisconnectWhenStuckSeconds(500)
.build();
PegasusPacket result = new PegasusPacket(16, 0, setup);
this.send(result);
this.isLoggedIn = true;
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(53)
.setValue(1)
)
.addTags(PegasusGame.Tag.newBuilder()
.setName(198)
.setValue(4)
)
.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()
.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()
.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()
.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()
.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)
)
)
)
.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();
}
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("0A0822060801100A18550A092207080110CA0118010A0822060801101418010A092207080110CC0118020A0822060801103118010A092207080110C60118040A0822060801103518010A0822060801101318040A0822060802101B18400A0822060802101118010A0822060802103118010A0822060802101F18010A0822060802101E18010A0822060802101C180A0A0822060802101D18040A092207080210900218010A092207080210CA0118020A08220608021007184B0A092207080210B001180A0A0922070802108F0318040A0822060802103518020A0822060802103218010A092207080210B10218010A0822060803101818010A0822060803101B18420A0822060803101118010A0822060803101718010A0822060803101F18020A0822060803101E18020A0822060803101C180A0A0822060803101D18040A092207080310900218010A092207080310CA0118020A0822060803103118010A08220608031007184B0A092207080310B001180A0A0922070803108F0318030A0822060803103518030A0822060803103218020A133211080510FFFFFFFFFFFFFFFFFF0118012000")));
this.send(new PegasusPacket( 17, 0, Util.hexStringToByteArray("0801100120002803320336262538014002")));
this.send(new PegasusPacket( 17, 0, Util.hexStringToByteArray("08011001200028053205441A15110B38014001")));
this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A092207080310B1021801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A08001000181A2000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018152000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A08001000181A2000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018112000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A08001000180B2000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018112000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018002000280010001801")));
this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A092207080310B10218020A0A320808051006180320000A092207080310B10218030A023A000A0A320808051007180320000A092207080310B10218040A023A00")));
this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A092207080210B10218020A0A320808051006180220000A092207080210B10218030A023A000A0A320808051007180220000A092207080210B10218040A092207080110C60118060A023A00")));
this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A0822060801101318060A0A320808051001180320000A0822060803101A18010A0922070803108F0318000A092207080110C60118110A023A000A0822060801101318110A0A320808051008180320000A092207080110C60118090A023A000A0822060801101318090A0A320808051000180320000A441242083C12074756475F3031301A0508C10210011A0508B701100D1A0508CA0210001A0508CB0210001A04083010001A0508C70110061A0508CA0110051A0508CB0110010A082206083C103118030A092207083C10870218040A0922070803108F0318010A092207080110C601180A0A023A000A08220608011013180A0A0A320808051002180320000A092207080110C601180C0A023A00")));
this.send(new PegasusPacket( 14, 0, Util.hexStringToByteArray("080112020802120A0803120608431A024042120608031202083C12060803120208361206080312020826")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018402000280010001801")));
this.send(new PegasusPacket( 15, 0, Util.hexStringToByteArray("0A0A0800100018002000280010001801")));
this.send(new PegasusPacket( 19, 0, Util.hexStringToByteArray("0A0A320808071000182620000A0822060826102B18010A092207082510870218020A092207083610870218010A092207083C10870218030A133211080310FFFFFFFFFFFFFFFFFF01180020000A023A000A3E0A3C084512094353325F31303365321A04083510451A04083210021A0508CB0210001A0508CA0210001A0508C701100A1A0508CA0110061A0508B70110020A0822060845102818260A092207084510870218000A0822060845103118060A0822060826103118010A092207082610870218010A0822060826102B18010A023A00")));
this.send(new PegasusPacket( 14, 0, Util.hexStringToByteArray("080112020802120B0803120708431A03404226120608031202083C1206080312020836")));
break;
case 115:
pong();
break;
default:
break;
}
}
private void pong() throws Exception {
this.send(new PegasusPacket(116, 0, PegasusGame.Pong.newBuilder().build()));
}
public void send(PegasusPacket pp) throws Exception {
this.outToClient.write(pp.Encode());
this.outToClient.flush();
}
public void sendRaw(byte[] data) throws Exception {
this.outToClient.write(data);
this.outToClient.flush();
}
@Override
public void run() {
try {
InputStream is = client.getInputStream();
outToClient = client.getOutputStream();
while (true) {
try {
int count;
byte[] buffer = new byte[4096]; // or 4096, or more
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((count = is.read(buffer)) > 0) {
baos.write(buffer, 0, count);
byte[] r = baos.toByteArray();
PegasusPacket pp = new PegasusPacket();
int offset = 0;
while( offset < r.length ) {
offset += pp.Decode(r, offset, r.length);
processPacket(pp);
}
baos.reset();
}
baos.close();
} catch (Exception e) {
log.error(e.getMessage());
break;
}
}
} catch (Exception e) {
log.error(e.getMessage());
}
}
}