Sha256: 3ddd0556e21e8edfc34e5591fa4ffa32001bc6d50a8c48b06d1e0746dc22249e

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

# ボタンを押しているか判断するクラス。バイナリの書き換えはしない
class ProconBypassMan::Procon::UserOperation
  attr_reader :binary

  ASCII_ENCODING = "ASCII-8BIT"

  # @param [String] binary
  def initialize(binary)
    unless binary.encoding.name == ASCII_ENCODING
      raise "おかしいです"
    end

    @binary = ProconBypassMan::Domains::ProcessingProconBinary.new(binary: binary)
  end

  def set_no_action!
    binary.set_no_action!
  end

  def apply_left_analog_stick_cap(cap: )
    binary.write_as_apply_left_analog_stick_cap(cap: cap)
  end

  # @param [Symbol] button
  def unpress_button(button)
    return if not pressing_button?(button)
    binary.write_as_unpress_button(button)
  end

  # @param [Symbol] button
  def press_button(button)
    return if pressing_button?(button)
    binary.write_as_press_button(button)
  end

  # @param [Symbol] button
  def press_button_only(button)
    binary.write_as_press_button_only(button)
  end

  # @return [void]
  def merge(target_binary)
    binary.write_as_merge!(
      ProconBypassMan::Domains::ProcessingProconBinary.new(binary: target_binary)
    )
  end

  # @param [Symbol] button
  # @return [Boolean]
  def pressing_button?(button)
    ProconBypassMan::PressButtonAware.new(@binary.raw).pressing_button?(button)
  end

  # @param [Array<Symbol>] buttons
  # @return [Boolean]
  def pressing_all_buttons?(buttons)
    aware = ProconBypassMan::PressButtonAware.new(@binary.raw)
    buttons.all? { |b| aware.pressing_button?(b) }
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.17 lib/procon_bypass_man/procon/user_operation.rb
procon_bypass_man-0.1.16.1 lib/procon_bypass_man/procon/user_operation.rb
procon_bypass_man-0.1.16 lib/procon_bypass_man/procon/user_operation.rb