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