r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
rnp Namespace Reference

Classes

class  EndianUtils
 Utility class for endianness conversion. More...
 
struct  EntityState
 Entity state for WORLD_STATE packet. More...
 
struct  EventRecord
 Event record for ENTITY_EVENT packets (TLV format) More...
 
class  HandlerPacket
 Main packet handler class. More...
 
struct  HandlerStats
 Statistics for packet handling. More...
 
struct  LobbyInfo
 Lobby information structure. More...
 
struct  PacketConnect
 CONNECT packet payload. More...
 
struct  PacketConnectAccept
 CONNECT_ACCEPT packet payload. More...
 
struct  PacketContext
 Context information for packet processing. More...
 
struct  PacketDisconnect
 DISCONNECT packet payload. More...
 
struct  PacketError
 ERROR packet payload. More...
 
struct  PacketGameStart
 GAME_START packet payload. More...
 
struct  PacketHeader
 Packet header according to RNP specification (Big Endian) Total size: 7 bytes (1 + 2 + 4) More...
 
struct  PacketLobbyCreate
 LOBBY_CREATE packet payload. More...
 
struct  PacketLobbyCreateResponse
 LOBBY_CREATE_RESPONSE packet payload. More...
 
struct  PacketLobbyJoin
 LOBBY_JOIN packet payload. More...
 
struct  PacketLobbyJoinResponse
 LOBBY_JOIN_RESPONSE packet payload. More...
 
struct  PacketLobbyListResponse
 LOBBY_LIST_RESPONSE packet payload. More...
 
struct  PacketLobbyUpdate
 LOBBY_UPDATE packet payload. More...
 
struct  PacketPingPong
 PING/PONG packet payload. More...
 
struct  PacketStartGameRequest
 START_GAME_REQUEST packet payload (client requests to start game) More...
 
struct  PacketWorldState
 WORLD_STATE packet payload. More...
 
class  Serializer
 Binary serializer for RNP protocol packets. More...
 

Typedefs

using ConnectHandler = std::function<HandlerResult(const PacketConnect &, const PacketContext &)>
 
using ConnectAcceptHandler = std::function<HandlerResult(const PacketConnectAccept &, const PacketContext &)>
 
using DisconnectHandler = std::function<HandlerResult(const PacketDisconnect &, const PacketContext &)>
 
using WorldStateHandler = std::function<HandlerResult(const PacketWorldState &, const PacketContext &)>
 
using PingHandler = std::function<HandlerResult(const PacketPingPong &, const PacketContext &)>
 
using PongHandler = std::function<HandlerResult(const PacketPingPong &, const PacketContext &)>
 
using ErrorHandler = std::function<HandlerResult(const PacketError &, const PacketContext &)>
 
using EntityEventHandler = std::function<HandlerResult(const std::vector<EventRecord> &, const PacketContext &)>
 
using AckHandler = std::function<HandlerResult(std::uint32_t sequenceId, const PacketContext &)>
 
using LobbyListRequestHandler = std::function<HandlerResult(const PacketContext &)>
 
using LobbyListResponseHandler
 
using LobbyCreateHandler = std::function<HandlerResult(const PacketLobbyCreate &, const PacketContext &)>
 
using LobbyCreateResponseHandler
 
using LobbyJoinHandler = std::function<HandlerResult(const PacketLobbyJoin &, const PacketContext &)>
 
using LobbyJoinResponseHandler
 
using LobbyLeaveHandler = std::function<HandlerResult(const PacketContext &)>
 
using LobbyUpdateHandler = std::function<HandlerResult(const PacketLobbyUpdate &, const PacketContext &)>
 
using GameStartHandler = std::function<HandlerResult(const PacketGameStart &, const PacketContext &)>
 
using StartGameRequestHandler = std::function<HandlerResult(const PacketStartGameRequest &, const PacketContext &)>
 

Enumerations

enum class  HandlerResult {
  SUCCESS , INVALID_PACKET , UNSUPPORTED_TYPE , PROCESSING_ERROR ,
  SESSION_INVALID , RATE_LIMITED
}
 Packet processing result. More...
 
enum class  PacketType : std::uint8_t {
  CONNECT = 0x01 , DISCONNECT = 0x02 , WORLD_STATE = 0x03 , PING = 0x04 ,
  PONG = 0x05 , PACKET_ERROR = 0x06 , ENTITY_EVENT = 0x07 , CONNECT_ACCEPT = 0x08 ,
  LOBBY_LIST_REQUEST = 0x09 , LOBBY_LIST_RESPONSE = 0x0A , LOBBY_CREATE = 0x0B , LOBBY_CREATE_RESPONSE = 0x0C ,
  LOBBY_JOIN = 0x0D , LOBBY_JOIN_RESPONSE = 0x0E , LOBBY_LEAVE = 0x0F , LOBBY_UPDATE = 0x10 ,
  GAME_START = 0x11 , START_GAME_REQUEST = 0x12 , GAME_OVER = 0x13
}
 Packet types according to RNP specification. More...
 
enum class  PacketFlags : std::uint16_t { NONE = 0x0000 , RELIABLE = 0x0001 , COMPRESSED = 0x0002 }
 Packet flags for reliability and fragmentation. More...
 
enum class  DisconnectReason : std::uint16_t {
  UNSPECIFIED = 0 , CLIENT_REQUEST = 1 , TIMEOUT = 2 , PROTOCOL_ERROR = 3 ,
  SERVER_SHUTDOWN = 4 , SERVER_FULL = 5 , BANNED = 6
}
 Disconnect reason codes. More...
 
enum class  ErrorCode : std::uint16_t {
  NONE = 0 , INVALID_PAYLOAD = 1 , UNAUTHORIZED_SESSION = 2 , RATE_LIMITED = 3 ,
  INTERNAL_ERROR = 4 , LOBBY_NOT_FOUND = 5 , LOBBY_FULL = 6 , ALREADY_IN_LOBBY = 7 ,
  NOT_IN_LOBBY = 8 , NOT_LOBBY_HOST = 9
}
 Error codes. More...
 
enum class  EventType : std::uint8_t {
  SPAWN = 0x01 , DESPAWN = 0x02 , DAMAGE = 0x03 , SCORE = 0x04 ,
  POWERUP = 0x05 , INPUT = 0x06 , CUSTOM = 0xFF
}
 Event types for ENTITY_EVENT packets. More...
 
enum class  EntityType : std::uint16_t { PLAYER = 0x01 , ENEMY = 0x02 , PROJECTILE = 0x03 , BOSS = 0x04 }
 Entity types for world state. More...
 
enum class  EntitySubtype : std::uint8_t {
  NONE = 0 , ENEMY_BASIC = 1 , ENEMY_ADVANCED = 2 , ENEMY_BOSS = 3 ,
  PROJECTILE_PLAYER = 10 , PROJECTILE_PLAYER_SUPERCHARGED = 11 , PROJECTILE_ENEMY = 12
}
 Entity subtype enumeration. More...
 
enum class  LobbyStatus : std::uint8_t { WAITING = 0 , IN_GAME = 1 , FINISHED = 2 }
 Lobby status enumeration. More...
 

Variables

constexpr std::size_t MAX_PAYLOAD = 512
 

Typedef Documentation

◆ AckHandler

using rnp::AckHandler = std::function<HandlerResult(std::uint32_t sequenceId, const PacketContext &)>

Definition at line 59 of file HandlerPacket.hpp.

◆ ConnectAcceptHandler

Definition at line 52 of file HandlerPacket.hpp.

◆ ConnectHandler

using rnp::ConnectHandler = std::function<HandlerResult(const PacketConnect &, const PacketContext &)>

Definition at line 51 of file HandlerPacket.hpp.

◆ DisconnectHandler

using rnp::DisconnectHandler = std::function<HandlerResult(const PacketDisconnect &, const PacketContext &)>

Definition at line 53 of file HandlerPacket.hpp.

◆ EntityEventHandler

using rnp::EntityEventHandler = std::function<HandlerResult(const std::vector<EventRecord> &, const PacketContext &)>

Definition at line 58 of file HandlerPacket.hpp.

◆ ErrorHandler

using rnp::ErrorHandler = std::function<HandlerResult(const PacketError &, const PacketContext &)>

Definition at line 57 of file HandlerPacket.hpp.

◆ GameStartHandler

using rnp::GameStartHandler = std::function<HandlerResult(const PacketGameStart &, const PacketContext &)>

Definition at line 73 of file HandlerPacket.hpp.

◆ LobbyCreateHandler

using rnp::LobbyCreateHandler = std::function<HandlerResult(const PacketLobbyCreate &, const PacketContext &)>

Definition at line 65 of file HandlerPacket.hpp.

◆ LobbyCreateResponseHandler

Initial value:
std::function<HandlerResult(const PacketLobbyCreateResponse &, const PacketContext &)>
HandlerResult
Packet processing result.

Definition at line 66 of file HandlerPacket.hpp.

◆ LobbyJoinHandler

using rnp::LobbyJoinHandler = std::function<HandlerResult(const PacketLobbyJoin &, const PacketContext &)>

Definition at line 68 of file HandlerPacket.hpp.

◆ LobbyJoinResponseHandler

Initial value:
std::function<HandlerResult(const PacketLobbyJoinResponse &, const PacketContext &)>

Definition at line 69 of file HandlerPacket.hpp.

◆ LobbyLeaveHandler

using rnp::LobbyLeaveHandler = std::function<HandlerResult(const PacketContext &)>

Definition at line 71 of file HandlerPacket.hpp.

◆ LobbyListRequestHandler

using rnp::LobbyListRequestHandler = std::function<HandlerResult(const PacketContext &)>

Definition at line 62 of file HandlerPacket.hpp.

◆ LobbyListResponseHandler

Initial value:
std::function<HandlerResult(const PacketLobbyListResponse &, const PacketContext &)>

Definition at line 63 of file HandlerPacket.hpp.

◆ LobbyUpdateHandler

using rnp::LobbyUpdateHandler = std::function<HandlerResult(const PacketLobbyUpdate &, const PacketContext &)>

Definition at line 72 of file HandlerPacket.hpp.

◆ PingHandler

using rnp::PingHandler = std::function<HandlerResult(const PacketPingPong &, const PacketContext &)>

Definition at line 55 of file HandlerPacket.hpp.

◆ PongHandler

using rnp::PongHandler = std::function<HandlerResult(const PacketPingPong &, const PacketContext &)>

Definition at line 56 of file HandlerPacket.hpp.

◆ StartGameRequestHandler

Definition at line 74 of file HandlerPacket.hpp.

◆ WorldStateHandler

using rnp::WorldStateHandler = std::function<HandlerResult(const PacketWorldState &, const PacketContext &)>

Definition at line 54 of file HandlerPacket.hpp.

Enumeration Type Documentation

◆ DisconnectReason

enum class rnp::DisconnectReason : std::uint16_t
strong

Disconnect reason codes.

Enumerator
UNSPECIFIED 
CLIENT_REQUEST 
TIMEOUT 
PROTOCOL_ERROR 
SERVER_SHUTDOWN 
SERVER_FULL 
BANNED 

Definition at line 60 of file Protocol.hpp.

◆ EntitySubtype

enum class rnp::EntitySubtype : std::uint8_t
strong

Entity subtype enumeration.

Enumerator
NONE 
ENEMY_BASIC 
ENEMY_ADVANCED 
ENEMY_BOSS 
PROJECTILE_PLAYER 
PROJECTILE_PLAYER_SUPERCHARGED 
PROJECTILE_ENEMY 

Definition at line 166 of file Protocol.hpp.

◆ EntityType

enum class rnp::EntityType : std::uint16_t
strong

Entity types for world state.

Enumerator
PLAYER 
ENEMY 
PROJECTILE 
BOSS 

Definition at line 105 of file Protocol.hpp.

◆ ErrorCode

enum class rnp::ErrorCode : std::uint16_t
strong

Error codes.

Enumerator
NONE 
INVALID_PAYLOAD 
UNAUTHORIZED_SESSION 
RATE_LIMITED 
INTERNAL_ERROR 
LOBBY_NOT_FOUND 
LOBBY_FULL 
ALREADY_IN_LOBBY 
NOT_IN_LOBBY 
NOT_LOBBY_HOST 

Definition at line 74 of file Protocol.hpp.

◆ EventType

enum class rnp::EventType : std::uint8_t
strong

Event types for ENTITY_EVENT packets.

Enumerator
SPAWN 
DESPAWN 
DAMAGE 
SCORE 
POWERUP 
INPUT 
CUSTOM 

Definition at line 91 of file Protocol.hpp.

◆ HandlerResult

enum class rnp::HandlerResult
strong

Packet processing result.

Enumerator
SUCCESS 
INVALID_PACKET 
UNSUPPORTED_TYPE 
PROCESSING_ERROR 
SESSION_INVALID 
RATE_LIMITED 

Definition at line 23 of file HandlerPacket.hpp.

◆ LobbyStatus

enum class rnp::LobbyStatus : std::uint8_t
strong

Lobby status enumeration.

Enumerator
WAITING 
IN_GAME 
FINISHED 

Definition at line 226 of file Protocol.hpp.

◆ PacketFlags

enum class rnp::PacketFlags : std::uint16_t
strong

Packet flags for reliability and fragmentation.

Enumerator
NONE 
RELIABLE 
COMPRESSED 

Definition at line 50 of file Protocol.hpp.

◆ PacketType

enum class rnp::PacketType : std::uint8_t
strong

Packet types according to RNP specification.

Enumerator
CONNECT 
DISCONNECT 
WORLD_STATE 
PING 
PONG 
PACKET_ERROR 
ENTITY_EVENT 
CONNECT_ACCEPT 
LOBBY_LIST_REQUEST 
LOBBY_LIST_RESPONSE 
LOBBY_CREATE 
LOBBY_CREATE_RESPONSE 
LOBBY_JOIN 
LOBBY_JOIN_RESPONSE 
LOBBY_LEAVE 
LOBBY_UPDATE 
GAME_START 
START_GAME_REQUEST 
GAME_OVER 

Definition at line 23 of file Protocol.hpp.

Variable Documentation

◆ MAX_PAYLOAD

std::size_t rnp::MAX_PAYLOAD = 512
inlineconstexpr