mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-14 07:12:34 +00:00
Orders are now de/serializable, and scheduleable, Entities now show a circle around themselves when selected and draw a line to their target
This commit is contained in:
@@ -1,5 +1,21 @@
|
||||
IMICRTS::Order.define_handler(IMICRTS::Order::SELECTED_UNITS, arguments: [:player_id, :ids]) do |order, director|
|
||||
IMICRTS::Order.define_handler(IMICRTS::Order::SELECTED_UNITS, arguments: [:player_id, :entities]) do |order, director|
|
||||
director.player(order.player_id).selected_entities.clear
|
||||
director.player(order.player_id).selected_entities.push(*order.ids)
|
||||
director.player(order.player_id).selected_entities.push(*order.entities)
|
||||
end
|
||||
|
||||
IMICRTS::Order.define_serializer(IMICRTS::Order::SELECTED_UNITS) do |order, director|
|
||||
# Order ID | Player ID | Entity IDs
|
||||
# char | char | integers
|
||||
|
||||
[IMICRTS::Order::SELECTED_UNITS, order.player_id].pack("CC") + order.entities.map { |ent| ent.id }.pack("N*")
|
||||
end
|
||||
|
||||
IMICRTS::Order.define_deserializer(IMICRTS::Order::SELECTED_UNITS) do |string, director|
|
||||
# String fed into deserializer has Order ID removed
|
||||
# Player ID | Entity IDs
|
||||
# char | integers
|
||||
player_id = string.unpack("C").first
|
||||
entities = string[1..string.length - 1].unpack("N*").map { |ent_id| director.player(player_id).entity(ent_id) }
|
||||
|
||||
[player_id, entities]
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user