register blocks on the event client object

remove running attribute reader
This commit is contained in:
onyx-and-iris 2023-08-27 17:24:25 +01:00
parent 9e84d02707
commit 8d2cc774ac
2 changed files with 15 additions and 21 deletions

View File

@ -2,4 +2,4 @@
source "https://rubygems.org" source "https://rubygems.org"
gem "obsws", "~> 0.4.0" gem "obsws", "~> 0.5.8"

View File

@ -4,34 +4,28 @@ require "yaml"
require "pathname" require "pathname"
class Main class Main
attr_reader :running
def initialize(vm, **kwargs) def initialize(vm, **kwargs)
@vm = vm @vm = vm
@obsws = OBSWS::Events::Client.new(**kwargs) @obsws = OBSWS::Events::Client.new(**kwargs)
@obsws.register([
method(:on_current_program_scene_changed),
method(:on_exit_started)
])
@running = true
end
def run @obsws.on :on_current_program_scene_changed do |data|
sleep(0.1) while running scene = data.scene_name
end puts "Switched to scene #{scene}"
if respond_to?("on_#{scene.downcase}")
send("on_#{scene.downcase}")
end
end
def on_current_program_scene_changed(data) @obsws.on :on_exit_started do |data|
scene = data.scene_name puts "OBS closing!"
puts "Switched to scene #{scene}" @obsws.close
if respond_to?("on_#{scene.downcase}") @running = false
send("on_#{scene.downcase}")
end end
end end
def on_exit_started def run
puts "OBS closing!" @running = true
@obsws.close sleep(0.1) while @running
@running = false
end end
def on_start def on_start