From e67325e8310fadfd2e02519186eeaf768db2efd2 Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Wed, 9 Oct 2019 20:43:14 -0500 Subject: [PATCH] Give Connection some use, added magic comment to i-mic-rts.rb --- i-mic-rts.rb | 2 ++ lib/connection.rb | 14 ++++++++++++++ lib/director.rb | 8 ++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) mode change 100644 => 100755 i-mic-rts.rb diff --git a/i-mic-rts.rb b/i-mic-rts.rb old mode 100644 new mode 100755 index 3914365..1593c61 --- a/i-mic-rts.rb +++ b/i-mic-rts.rb @@ -1,3 +1,5 @@ +#!/usr/bin/env ruby + begin require_relative "../cyberarm_engine/lib/cyberarm_engine" rescue LoadError diff --git a/lib/connection.rb b/lib/connection.rb index 224f63c..44f9f8b 100644 --- a/lib/connection.rb +++ b/lib/connection.rb @@ -1,9 +1,23 @@ class IMICRTS class Connection def initialize(*args) + @pending_orders = [] + end + + def add_order(order) + @pending_orders.push(order) end def update + data = @pending_orders.sort_by { |order| order.tick_id }.map do |order| + + # Order serialized size in bytes + serialized order data + [order.serialized_order.length].pack("n") + order.serialized_order + end.join + + # p data if data.length > 0 + + @pending_orders.clear end end end \ No newline at end of file diff --git a/lib/director.rb b/lib/director.rb index f1abb96..118f6fe 100644 --- a/lib/director.rb +++ b/lib/director.rb @@ -61,7 +61,9 @@ class IMICRTS if order = Order.get(order_id) struct = order.struct(args) - player(struct.player_id).orders.push(Player::ScheduledOrder.new( order_id, @current_tick + 1, order.serialize(struct, self) )) + scheduled_order = Player::ScheduledOrder.new( order_id, @current_tick + 1, order.serialize(struct, self) ) + @connection.add_order(scheduled_order) + player(struct.player_id).orders.push(scheduled_order) else raise "Undefined order: #{Order.order_name(order_id)}" end @@ -73,7 +75,9 @@ class IMICRTS pp Order.order_name(order_id) - player(struct.player_id).orders.push(Player::ScheduledOrder.new( order_id, @current_tick + 2, order.serialize(struct, self) )) + scheduled_order = Player::ScheduledOrder.new( order_id, @current_tick + 2, order.serialize(struct, self) ) + @connection.add_order(scheduled_order) + player(struct.player_id).orders.push(scheduled_order) else raise "Undefined order: #{Order.order_name(order_id)}" end