Sha256: c72c9ce8dad062d65e0cfd422a7a0b6308b21f6503b3c0f5750c695e3ce3a5b6

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

class ProconBypassMan::Procon::MacroRegistry2
  attr_accessor :plugins

  PRESETS = {
    null: [],
  }

  def initialize
    self.plugins = ProconBypassMan::Procon::MacroPluginMap.new
  end

  def install_plugin(klass, steps: nil, macro_type: :normal)
    if plugins.fetch([klass.to_s.to_sym, macro_type], nil)
      Kernel.warn "#{klass} macro is already registered"
      return
    end

    plugins.store(
      [klass.to_s.to_sym, macro_type], ->{
        ProconBypassMan::Procon::MacroBuilder.new(steps || klass.steps).build
      }
    )
  end

  # @return [ProconBypassMan::Procon::Macro]
  def load(name, macro_type: :normal, force_neutral_buttons: [], &after_callback_block)
    if(steps = PRESETS[name] || plugins.fetch([name.to_s.to_sym, macro_type], nil)&.call)
      return ProconBypassMan::Procon::Macro.new(name: name, steps: steps.dup, force_neutral_buttons: force_neutral_buttons, &after_callback_block)
    else
      warn "installされていないマクロ(#{name})を使うことはできません"
      return self.load(:null)
    end
  end


  def cleanup_remote_macros!
    remote_keys = plugins.original_keys.select { |_, y| y == :remote }
    remote_keys.each do |remote_key|
      plugins.delete(remote_key)
    end
    plugins
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
procon_bypass_man-0.3.12 lib/procon_bypass_man/procon/macro_registry2.rb