Added rubocop config, more work on CyberarmEngine Netcode; basic sending and receiving of packets is now functional

This commit is contained in:
2020-11-30 15:41:20 -06:00
parent 85ec285263
commit ecbbc77ca7
15 changed files with 566 additions and 133 deletions

View File

@@ -0,0 +1,32 @@
module CyberarmEngine
module Networking
class ControlPacket
attr_reader :message, :type, :control_type
HEADER_PACKER = "CC"
HEADER_LENGTH = 1 + 1 # bytes
def self.decode(raw_message)
header = raw_message.unpack(HEADER_PACKER)
message = raw_message[HEADER_LENGTH..raw_message.length - 1]
ControlPacket.new(type: header[0], control_type: header[1], message: message)
end
def initialize(control_type:, message: nil, type: Protocol::PACKET_CONTROL)
@type = type
@control_type = control_type
@message = message
end
def encode
header = [
@type,
@control_type
].pack(HEADER_PACKER)
"#{header}#{@message}"
end
end
end
end

View File

@@ -1,37 +0,0 @@
module CyberarmEngine
module Networking
class DataPacket < Packet
HEADER_PACKER = "CCn"
HEADER_LENGTH = 1 + 1 + 4 # bytes
def self.type
Protocol::DATA
end
def self.decode(raw_message)
header = raw_message.unpack(HEADER_PACKER)
message = raw_message[HEADER_LENGTH..raw_message.length - 1]
DataPacket.new(protocol_version: header[0], type: header[1], message: message)
end
def initialize(protocol_version:, type:, peer_id:, message:)
@protocol_version = protocol_version
@type = type
@peer_id = peer_id
@message = message
end
def encode
header = [
Protocol::PROTOCOL_VERSION,
@type,
@peer_id,
].pack(HEADER_PACKER)
"#{header}#{message}"
end
end
end
end

View File

@@ -0,0 +1,30 @@
module CyberarmEngine
module Networking
class RawPacket
attr_reader :message, :type
HEADER_PACKER = "C"
HEADER_LENGTH = 1 # bytes
def self.decode(raw_message)
header = raw_message.unpack(HEADER_PACKER)
message = raw_message[HEADER_LENGTH..raw_message.length - 1]
RawPacket.new(type: header[0], message: message)
end
def initialize(message:, type: Protocol::PACKET_RAW)
@type = type
@message = message
end
def encode
header = [
@type
].pack(HEADER_PACKER)
"#{header}#{@message}"
end
end
end
end

View File

@@ -0,0 +1,32 @@
module CyberarmEngine
module Networking
class ReliablePacket
attr_reader :message, :type, :control_type
HEADER_PACKER = "Cn"
HEADER_LENGTH = 1 + 2 # bytes
def self.decode(raw_message)
header = raw_message.unpack(HEADER_PACKER)
message = raw_message[HEADER_LENGTH..raw_message.length - 1]
ReliablePacket.new(type: header[0], control_type: header[1], message: message)
end
def initialize(sequence_number:, message:, type: Protocol::PACKET_RELIABLE)
@type = type
@sequence_number = sequence_number
@message = message
end
def encode
header = [
@type,
@control_type
].pack(HEADER_PACKER)
"#{header}#{@message}"
end
end
end
end