mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-16 08:02:36 +00:00
Added rubocop config, more work on CyberarmEngine Netcode; basic sending and receiving of packets is now functional
This commit is contained in:
32
lib/networking/backend/packets/control_packet.rb
Normal file
32
lib/networking/backend/packets/control_packet.rb
Normal 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
|
||||
@@ -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
|
||||
0
lib/networking/backend/packets/frament_packet.rb
Normal file
0
lib/networking/backend/packets/frament_packet.rb
Normal file
30
lib/networking/backend/packets/raw_packet.rb
Normal file
30
lib/networking/backend/packets/raw_packet.rb
Normal 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
|
||||
32
lib/networking/backend/packets/reliable_packet.rb
Normal file
32
lib/networking/backend/packets/reliable_packet.rb
Normal 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
|
||||
Reference in New Issue
Block a user