10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
|
# File 'lib/sc2ai/protocol/spatial_pb.rb', line 10861
def _encode(buff)
val = @ability_id
if has_ability_id?
buff << 0x08
loop do
byte = val & 0x7F
val >>= 7
val &= (1 << 57) - 1
byte |= 0x80 if val != 0
buff << byte
break if val == 0
end
end
val = @target_screen_coord
if val
buff << 0x12
current_len = buff.bytesize
buff << 42 val._encode(buff)
submessage_size = buff.bytesize - current_len - 1
byte = submessage_size & 0x7F
submessage_size >>= 7
byte |= 0x80 if submessage_size > 0
buff.setbyte(current_len, byte)
if submessage_size > 0
current_len += 1
encoded_int_len = 0
remaining_size = submessage_size
while remaining_size != 0
remaining_size >>= 7
encoded_int_len += 1
end
buff.bytesplice(current_len, 0, "*********", 0, encoded_int_len)
while submessage_size != 0
byte = submessage_size & 0x7F
submessage_size >>= 7
byte |= 0x80 if submessage_size > 0
buff.setbyte(current_len, byte)
current_len += 1
end
end
buff
end
val = @target_minimap_coord
if val
buff << 0x1a
current_len = buff.bytesize
buff << 42 val._encode(buff)
submessage_size = buff.bytesize - current_len - 1
byte = submessage_size & 0x7F
submessage_size >>= 7
byte |= 0x80 if submessage_size > 0
buff.setbyte(current_len, byte)
if submessage_size > 0
current_len += 1
encoded_int_len = 0
remaining_size = submessage_size
while remaining_size != 0
remaining_size >>= 7
encoded_int_len += 1
end
buff.bytesplice(current_len, 0, "*********", 0, encoded_int_len)
while submessage_size != 0
byte = submessage_size & 0x7F
submessage_size >>= 7
byte |= 0x80 if submessage_size > 0
buff.setbyte(current_len, byte)
current_len += 1
end
end
buff
end
if has_queue_command?
val = @queue_command
buff << 0x20
if val == true
buff << 1
elsif val == false
buff << 0
end
end
buff << @_unknown_fields if @_unknown_fields
buff
end
|