|
@ -80,146 +80,81 @@ EnumMap<PacketType> const PacketTypeNames{ |
|
|
Packet::~Packet() {} |
|
|
Packet::~Packet() {} |
|
|
|
|
|
|
|
|
PacketPtr createPacket(PacketType type) { |
|
|
PacketPtr createPacket(PacketType type) { |
|
|
if (type == PacketType::ProtocolRequest) |
|
|
// not as good really any better, but at least it's somewhat easier to expand.
|
|
|
return make_shared<ProtocolRequestPacket>(); |
|
|
switch(type) { |
|
|
else if (type == PacketType::ProtocolResponse) |
|
|
case PacketType::ProtocolRequest: return make_shared<ProtocolRequestPacket>(); |
|
|
return make_shared<ProtocolResponsePacket>(); |
|
|
case PacketType::ProtocolResponse: return make_shared<ProtocolResponsePacket>(); |
|
|
else if (type == PacketType::ServerDisconnect) |
|
|
case PacketType::ServerDisconnect: return make_shared<ServerDisconnectPacket>(); |
|
|
return make_shared<ServerDisconnectPacket>(); |
|
|
case PacketType::ConnectSuccess: return make_shared<ConnectSuccessPacket>(); |
|
|
else if (type == PacketType::ConnectSuccess) |
|
|
case PacketType::ConnectFailure: return make_shared<ConnectFailurePacket>(); |
|
|
return make_shared<ConnectSuccessPacket>(); |
|
|
case PacketType::HandshakeChallenge: return make_shared<HandshakeChallengePacket>(); |
|
|
else if (type == PacketType::ConnectFailure) |
|
|
case PacketType::ChatReceive: return make_shared<ChatReceivePacket>(); |
|
|
return make_shared<ConnectFailurePacket>(); |
|
|
case PacketType::UniverseTimeUpdate: return make_shared<UniverseTimeUpdatePacket>(); |
|
|
else if (type == PacketType::HandshakeChallenge) |
|
|
case PacketType::CelestialResponse: return make_shared<CelestialResponsePacket>(); |
|
|
return make_shared<HandshakeChallengePacket>(); |
|
|
case PacketType::PlayerWarpResult: return make_shared<PlayerWarpResultPacket>(); |
|
|
else if (type == PacketType::ChatReceive) |
|
|
case PacketType::PlanetTypeUpdate: return make_shared<PlanetTypeUpdatePacket>(); |
|
|
return make_shared<ChatReceivePacket>(); |
|
|
case PacketType::Pause: return make_shared<PausePacket>(); |
|
|
else if (type == PacketType::UniverseTimeUpdate) |
|
|
case PacketType::ServerInfo: return make_shared<ServerInfoPacket>(); |
|
|
return make_shared<UniverseTimeUpdatePacket>(); |
|
|
case PacketType::ClientConnect: return make_shared<ClientConnectPacket>(); |
|
|
else if (type == PacketType::CelestialResponse) |
|
|
case PacketType::ClientDisconnectRequest: return make_shared<ClientDisconnectRequestPacket>(); |
|
|
return make_shared<CelestialResponsePacket>(); |
|
|
case PacketType::HandshakeResponse: return make_shared<HandshakeResponsePacket>(); |
|
|
else if (type == PacketType::PlayerWarpResult) |
|
|
case PacketType::PlayerWarp: return make_shared<PlayerWarpPacket>(); |
|
|
return make_shared<PlayerWarpResultPacket>(); |
|
|
case PacketType::FlyShip: return make_shared<FlyShipPacket>(); |
|
|
else if (type == PacketType::PlanetTypeUpdate) |
|
|
case PacketType::ChatSend: return make_shared<ChatSendPacket>(); |
|
|
return make_shared<PlanetTypeUpdatePacket>(); |
|
|
case PacketType::CelestialRequest: return make_shared<CelestialRequestPacket>(); |
|
|
else if (type == PacketType::Pause) |
|
|
case PacketType::ClientContextUpdate: return make_shared<ClientContextUpdatePacket>(); |
|
|
return make_shared<PausePacket>(); |
|
|
case PacketType::WorldStart: return make_shared<WorldStartPacket>(); |
|
|
else if (type == PacketType::ServerInfo) |
|
|
case PacketType::WorldStop: return make_shared<WorldStopPacket>(); |
|
|
return make_shared<ServerInfoPacket>(); |
|
|
case PacketType::WorldLayoutUpdate: return make_shared<WorldLayoutUpdatePacket>(); |
|
|
else if (type == PacketType::ClientConnect) |
|
|
case PacketType::WorldParametersUpdate: return make_shared<WorldParametersUpdatePacket>(); |
|
|
return make_shared<ClientConnectPacket>(); |
|
|
case PacketType::CentralStructureUpdate: return make_shared<CentralStructureUpdatePacket>(); |
|
|
else if (type == PacketType::ClientDisconnectRequest) |
|
|
case PacketType::TileArrayUpdate: return make_shared<TileArrayUpdatePacket>(); |
|
|
return make_shared<ClientDisconnectRequestPacket>(); |
|
|
case PacketType::TileUpdate: return make_shared<TileUpdatePacket>(); |
|
|
else if (type == PacketType::HandshakeResponse) |
|
|
case PacketType::TileLiquidUpdate: return make_shared<TileLiquidUpdatePacket>(); |
|
|
return make_shared<HandshakeResponsePacket>(); |
|
|
case PacketType::TileDamageUpdate: return make_shared<TileDamageUpdatePacket>(); |
|
|
else if (type == PacketType::PlayerWarp) |
|
|
case PacketType::TileModificationFailure: return make_shared<TileModificationFailurePacket>(); |
|
|
return make_shared<PlayerWarpPacket>(); |
|
|
case PacketType::GiveItem: return make_shared<GiveItemPacket>(); |
|
|
else if (type == PacketType::FlyShip) |
|
|
case PacketType::EnvironmentUpdate: return make_shared<EnvironmentUpdatePacket>(); |
|
|
return make_shared<FlyShipPacket>(); |
|
|
case PacketType::ModifyTileList: return make_shared<ModifyTileListPacket>(); |
|
|
else if (type == PacketType::ChatSend) |
|
|
case PacketType::DamageTileGroup: return make_shared<DamageTileGroupPacket>(); |
|
|
return make_shared<ChatSendPacket>(); |
|
|
case PacketType::CollectLiquid: return make_shared<CollectLiquidPacket>(); |
|
|
else if (type == PacketType::CelestialRequest) |
|
|
case PacketType::RequestDrop: return make_shared<RequestDropPacket>(); |
|
|
return make_shared<CelestialRequestPacket>(); |
|
|
case PacketType::SpawnEntity: return make_shared<SpawnEntityPacket>(); |
|
|
else if (type == PacketType::ClientContextUpdate) |
|
|
case PacketType::EntityInteract: return make_shared<EntityInteractPacket>(); |
|
|
return make_shared<ClientContextUpdatePacket>(); |
|
|
case PacketType::EntityInteractResult: return make_shared<EntityInteractResultPacket>(); |
|
|
else if (type == PacketType::WorldStart) |
|
|
case PacketType::UpdateTileProtection: return make_shared<UpdateTileProtectionPacket>(); |
|
|
return make_shared<WorldStartPacket>(); |
|
|
case PacketType::SetDungeonGravity: return make_shared<SetDungeonGravityPacket>(); |
|
|
else if (type == PacketType::WorldStop) |
|
|
case PacketType::SetDungeonBreathable: return make_shared<SetDungeonBreathablePacket>(); |
|
|
return make_shared<WorldStopPacket>(); |
|
|
case PacketType::SetPlayerStart: return make_shared<SetPlayerStartPacket>(); |
|
|
else if (type == PacketType::WorldLayoutUpdate) |
|
|
case PacketType::FindUniqueEntityResponse: return make_shared<FindUniqueEntityResponsePacket>(); |
|
|
return make_shared<WorldLayoutUpdatePacket>(); |
|
|
case PacketType::Pong: return make_shared<PongPacket>(); |
|
|
else if (type == PacketType::WorldParametersUpdate) |
|
|
case PacketType::ConnectWire: return make_shared<ConnectWirePacket>(); |
|
|
return make_shared<WorldParametersUpdatePacket>(); |
|
|
case PacketType::DisconnectAllWires: return make_shared<DisconnectAllWiresPacket>(); |
|
|
else if (type == PacketType::CentralStructureUpdate) |
|
|
case PacketType::WorldClientStateUpdate: return make_shared<WorldClientStateUpdatePacket>(); |
|
|
return make_shared<CentralStructureUpdatePacket>(); |
|
|
case PacketType::FindUniqueEntity: return make_shared<FindUniqueEntityPacket>(); |
|
|
else if (type == PacketType::TileArrayUpdate) |
|
|
case PacketType::WorldStartAcknowledge: return make_shared<WorldStartAcknowledgePacket>(); |
|
|
return make_shared<TileArrayUpdatePacket>(); |
|
|
case PacketType::Ping: return make_shared<PingPacket>(); |
|
|
else if (type == PacketType::TileUpdate) |
|
|
case PacketType::EntityCreate: return make_shared<EntityCreatePacket>(); |
|
|
return make_shared<TileUpdatePacket>(); |
|
|
case PacketType::EntityUpdateSet: return make_shared<EntityUpdateSetPacket>(); |
|
|
else if (type == PacketType::TileLiquidUpdate) |
|
|
case PacketType::EntityDestroy: return make_shared<EntityDestroyPacket>(); |
|
|
return make_shared<TileLiquidUpdatePacket>(); |
|
|
case PacketType::HitRequest: return make_shared<HitRequestPacket>(); |
|
|
else if (type == PacketType::TileDamageUpdate) |
|
|
case PacketType::DamageRequest: return make_shared<DamageRequestPacket>(); |
|
|
return make_shared<TileDamageUpdatePacket>(); |
|
|
case PacketType::DamageNotification: return make_shared<DamageNotificationPacket>(); |
|
|
else if (type == PacketType::TileModificationFailure) |
|
|
case PacketType::EntityMessage: return make_shared<EntityMessagePacket>(); |
|
|
return make_shared<TileModificationFailurePacket>(); |
|
|
case PacketType::EntityMessageResponse: return make_shared<EntityMessageResponsePacket>(); |
|
|
else if (type == PacketType::GiveItem) |
|
|
case PacketType::UpdateWorldProperties: return make_shared<UpdateWorldPropertiesPacket>(); |
|
|
return make_shared<GiveItemPacket>(); |
|
|
case PacketType::StepUpdate: return make_shared<StepUpdatePacket>(); |
|
|
else if (type == PacketType::EnvironmentUpdate) |
|
|
case PacketType::SystemWorldStart: return make_shared<SystemWorldStartPacket>(); |
|
|
return make_shared<EnvironmentUpdatePacket>(); |
|
|
case PacketType::SystemWorldUpdate: return make_shared<SystemWorldUpdatePacket>(); |
|
|
else if (type == PacketType::ModifyTileList) |
|
|
case PacketType::SystemObjectCreate: return make_shared<SystemObjectCreatePacket>(); |
|
|
return make_shared<ModifyTileListPacket>(); |
|
|
case PacketType::SystemObjectDestroy: return make_shared<SystemObjectDestroyPacket>(); |
|
|
else if (type == PacketType::DamageTileGroup) |
|
|
case PacketType::SystemShipCreate: return make_shared<SystemShipCreatePacket>(); |
|
|
return make_shared<DamageTileGroupPacket>(); |
|
|
case PacketType::SystemShipDestroy: return make_shared<SystemShipDestroyPacket>(); |
|
|
else if (type == PacketType::CollectLiquid) |
|
|
case PacketType::SystemObjectSpawn: return make_shared<SystemObjectSpawnPacket>(); |
|
|
return make_shared<CollectLiquidPacket>(); |
|
|
default: throw StarPacketException(strf("Unrecognized packet type %s", (unsigned)type)); |
|
|
else if (type == PacketType::RequestDrop) |
|
|
} |
|
|
return make_shared<RequestDropPacket>(); |
|
|
|
|
|
else if (type == PacketType::SpawnEntity) |
|
|
return nullptr; |
|
|
return make_shared<SpawnEntityPacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityInteract) |
|
|
|
|
|
return make_shared<EntityInteractPacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityInteractResult) |
|
|
|
|
|
return make_shared<EntityInteractResultPacket>(); |
|
|
|
|
|
else if (type == PacketType::UpdateTileProtection) |
|
|
|
|
|
return make_shared<UpdateTileProtectionPacket>(); |
|
|
|
|
|
else if (type == PacketType::SetDungeonGravity) |
|
|
|
|
|
return make_shared<SetDungeonGravityPacket>(); |
|
|
|
|
|
else if (type == PacketType::SetDungeonBreathable) |
|
|
|
|
|
return make_shared<SetDungeonBreathablePacket>(); |
|
|
|
|
|
else if (type == PacketType::SetPlayerStart) |
|
|
|
|
|
return make_shared<SetPlayerStartPacket>(); |
|
|
|
|
|
else if (type == PacketType::FindUniqueEntityResponse) |
|
|
|
|
|
return make_shared<FindUniqueEntityResponsePacket>(); |
|
|
|
|
|
else if (type == PacketType::Pong) |
|
|
|
|
|
return make_shared<PongPacket>(); |
|
|
|
|
|
else if (type == PacketType::ConnectWire) |
|
|
|
|
|
return make_shared<ConnectWirePacket>(); |
|
|
|
|
|
else if (type == PacketType::DisconnectAllWires) |
|
|
|
|
|
return make_shared<DisconnectAllWiresPacket>(); |
|
|
|
|
|
else if (type == PacketType::WorldClientStateUpdate) |
|
|
|
|
|
return make_shared<WorldClientStateUpdatePacket>(); |
|
|
|
|
|
else if (type == PacketType::FindUniqueEntity) |
|
|
|
|
|
return make_shared<FindUniqueEntityPacket>(); |
|
|
|
|
|
else if (type == PacketType::WorldStartAcknowledge) |
|
|
|
|
|
return make_shared<WorldStartAcknowledgePacket>(); |
|
|
|
|
|
else if (type == PacketType::Ping) |
|
|
|
|
|
return make_shared<PingPacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityCreate) |
|
|
|
|
|
return make_shared<EntityCreatePacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityUpdateSet) |
|
|
|
|
|
return make_shared<EntityUpdateSetPacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityDestroy) |
|
|
|
|
|
return make_shared<EntityDestroyPacket>(); |
|
|
|
|
|
else if (type == PacketType::HitRequest) |
|
|
|
|
|
return make_shared<HitRequestPacket>(); |
|
|
|
|
|
else if (type == PacketType::DamageRequest) |
|
|
|
|
|
return make_shared<DamageRequestPacket>(); |
|
|
|
|
|
else if (type == PacketType::DamageNotification) |
|
|
|
|
|
return make_shared<DamageNotificationPacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityMessage) |
|
|
|
|
|
return make_shared<EntityMessagePacket>(); |
|
|
|
|
|
else if (type == PacketType::EntityMessageResponse) |
|
|
|
|
|
return make_shared<EntityMessageResponsePacket>(); |
|
|
|
|
|
else if (type == PacketType::UpdateWorldProperties) |
|
|
|
|
|
return make_shared<UpdateWorldPropertiesPacket>(); |
|
|
|
|
|
else if (type == PacketType::StepUpdate) |
|
|
|
|
|
return make_shared<StepUpdatePacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemWorldStart) |
|
|
|
|
|
return make_shared<SystemWorldStartPacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemWorldUpdate) |
|
|
|
|
|
return make_shared<SystemWorldUpdatePacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemObjectCreate) |
|
|
|
|
|
return make_shared<SystemObjectCreatePacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemObjectDestroy) |
|
|
|
|
|
return make_shared<SystemObjectDestroyPacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemShipCreate) |
|
|
|
|
|
return make_shared<SystemShipCreatePacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemShipDestroy) |
|
|
|
|
|
return make_shared<SystemShipDestroyPacket>(); |
|
|
|
|
|
else if (type == PacketType::SystemObjectSpawn) |
|
|
|
|
|
return make_shared<SystemObjectSpawnPacket>(); |
|
|
|
|
|
else |
|
|
|
|
|
throw StarPacketException(strf("Unrecognized packet type %s", (unsigned)type)); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ProtocolRequestPacket::ProtocolRequestPacket() |
|
|
ProtocolRequestPacket::ProtocolRequestPacket() |
|
|