class W3DHub class Window < CyberarmEngine::Window def setup self.caption = I18n.t(:app_name) Store[:server_list] = [] Store[:settings] = Settings.new Store[:application_manager] = ApplicationManager.new Store.settings.save_settings begin I18n.locale = Store.settings[:language] rescue I18n::InvalidLocale I18n.locale = :en end # push_state(W3DHub::States::DemoInputDelay) push_state(W3DHub::States::Boot) end def update super Store.application_manager.start_next_available_task if Store.application_manager.idle? current = Async::Task.current? current&.yield end def gain_focus self.update_interval = 1000.0 / 60 end def lose_focus self.update_interval = 1000.0 / 10 end def close Store.settings.save_settings current_state_options = current_state&.instance_variable_get(:@options) if Store.application_manager.idle? || current_state_options&.dig(:tag_as) == :closer super else push_state( States::ConfirmDialog, tag_as: :closer, title: I18n.t(:app_name), message: "An application management task is currently running, are you sure you want to exit?", accept_callback: method(:close!) ) end end def main_thread_queue if current_state.is_a?(W3DHub::States::Interface) current_state.main_thread_queue else warn "Task will not be run for:" warn caller [] end end end end