diff --git a/lib/voicemeeter/iremote.rb b/lib/voicemeeter/iremote.rb new file mode 100644 index 0000000..0cbf403 --- /dev/null +++ b/lib/voicemeeter/iremote.rb @@ -0,0 +1,37 @@ +require_relative "errors" + +module Voicemeeter + class IRemote + " + Common interface between base class and higher classes. + " + def initialize(remote, i = nil) + @remote = remote + @index = i + end + + def to_s + "#{self.class.name.split("::").last}#{@index}#{@remote.kind}" + end + + def getter(param, is_string = false) + @remote.get(_cmd(param), is_string) + end + + def setter(param, value) + @remote.set(_cmd(param), value) + end + + def _cmd(param) + param.empty? ? "#{self.identifier}" : "#{self.identifier}.#{param}" + end + + def identifier + raise "Called abstract method: identifier" + end + + def apply(params) + params.each { |key, val| self.send(key, val) } + end + end +end