Method: Api::DebugSetUnitValue#_encode

Defined in:
lib/sc2ai/protocol/debug_pb.rb

#_encode(buff) ⇒ Object



11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
# File 'lib/sc2ai/protocol/debug_pb.rb', line 11088

def _encode(buff)
  val = @unit_value
  if has_unit_value?
    buff << 0x08

    loop do
      byte = val & 0x7F

      val >>= 7
      # This drops the top bits,
      # Otherwise, with a signed right shift,
      # we get infinity one bits at the top
      val &= (1 << 57) - 1

      byte |= 0x80 if val != 0
      buff << byte
      break if val == 0
    end
  end

  val = @value
  if has_value?
    buff << 0x15

    [val].pack("e", buffer: buff)
  end

  val = @unit_tag
  if has_unit_tag?
    buff << 0x18

    loop do
      byte = val & 0x7F
      val >>= 7
      byte |= 0x80 if val > 0
      buff << byte
      break if val == 0
    end
  end
  buff << @_unknown_fields if @_unknown_fields
  buff
end