mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2026-11-03 16:44:05 +00:00
Make ServerBrowser handle game_server_list event by refreshing all displayed servers, added button for future direct connect support (disabled atm), a few small tweaks.
This commit is contained in:
@@ -3,6 +3,7 @@ module W3DHubLauncher
|
|||||||
|
|
||||||
ROOT_PATH = Dir.pwd
|
ROOT_PATH = Dir.pwd
|
||||||
CONFIG_PATH = "#{Dir.home}/.config/#{DIRECTORY_NAME}".freeze
|
CONFIG_PATH = "#{Dir.home}/.config/#{DIRECTORY_NAME}".freeze
|
||||||
|
SETTINGS_FILE_PATH = "#{CONFIG_PATH}/settings.json".freeze
|
||||||
CACHE_PATH = "#{Dir.home}/.cache/#{DIRECTORY_NAME}".freeze
|
CACHE_PATH = "#{Dir.home}/.cache/#{DIRECTORY_NAME}".freeze
|
||||||
DEFAULT_PACKAGE_CACHE_PATH = "#{CACHE_PATH}/packages".freeze
|
DEFAULT_PACKAGE_CACHE_PATH = "#{CACHE_PATH}/packages".freeze
|
||||||
DEFAULT_APPLICATIONS_PATH = "#{Dir.home}/.local/share/#{DIRECTORY_NAME}/applications".freeze
|
DEFAULT_APPLICATIONS_PATH = "#{Dir.home}/.local/share/#{DIRECTORY_NAME}/applications".freeze
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ module W3DHubLauncher
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# FIXME: Ask worker to start websocket connections...
|
||||||
|
# WORKER.connect
|
||||||
|
|
||||||
next_step
|
next_step
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ module W3DHubLauncher
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
button(safe_get_image("#{ROOT_PATH}/media/icons/target.png"), image_height: 1.0, tip: "Direct Connect", padding: HALF_PADDING, enabled: false, margin_left: PADDING) do
|
||||||
|
dialog(Dialog::DirectConnect)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# game content container
|
# game content container
|
||||||
@@ -57,6 +61,7 @@ module W3DHubLauncher
|
|||||||
def focus
|
def focus
|
||||||
CyberarmEngine::EventBus.subscribe("game_server_pings", self, :handle_game_server_pings)
|
CyberarmEngine::EventBus.subscribe("game_server_pings", self, :handle_game_server_pings)
|
||||||
|
|
||||||
|
CyberarmEngine::EventBus.subscribe("game_server_list", self, :handle_game_server_list)
|
||||||
CyberarmEngine::EventBus.subscribe("game_server_added", self, :handle_game_server_updated) # <- not a typo
|
CyberarmEngine::EventBus.subscribe("game_server_added", self, :handle_game_server_updated) # <- not a typo
|
||||||
CyberarmEngine::EventBus.subscribe("game_server_updated", self, :handle_game_server_updated)
|
CyberarmEngine::EventBus.subscribe("game_server_updated", self, :handle_game_server_updated)
|
||||||
CyberarmEngine::EventBus.subscribe("game_server_removed", self, :handle_game_server_removed)
|
CyberarmEngine::EventBus.subscribe("game_server_removed", self, :handle_game_server_removed)
|
||||||
@@ -67,6 +72,7 @@ module W3DHubLauncher
|
|||||||
def blur
|
def blur
|
||||||
CyberarmEngine::EventBus.unsubscribe("game_server_pings", self)
|
CyberarmEngine::EventBus.unsubscribe("game_server_pings", self)
|
||||||
|
|
||||||
|
CyberarmEngine::EventBus.unsubscribe("game_server_list", self)
|
||||||
CyberarmEngine::EventBus.unsubscribe("game_server_added", self)
|
CyberarmEngine::EventBus.unsubscribe("game_server_added", self)
|
||||||
CyberarmEngine::EventBus.unsubscribe("game_server_updated", self)
|
CyberarmEngine::EventBus.unsubscribe("game_server_updated", self)
|
||||||
CyberarmEngine::EventBus.unsubscribe("game_server_removed", self)
|
CyberarmEngine::EventBus.unsubscribe("game_server_removed", self)
|
||||||
@@ -77,7 +83,7 @@ module W3DHubLauncher
|
|||||||
def handle_game_server_pings(payload)
|
def handle_game_server_pings(payload)
|
||||||
addresses = payload.keys
|
addresses = payload.keys
|
||||||
|
|
||||||
MemCache[:servers]&.select { |s| addresses.include?(s.address) }.each do |server|
|
MemCache[:servers]&.select { |s| addresses.include?(s.address) }&.each do |server|
|
||||||
w = find_element_by_tag(@servers_container, :"server_#{server.id}")
|
w = find_element_by_tag(@servers_container, :"server_#{server.id}")
|
||||||
ping_label = find_element_by_tag(w, :ping_label)
|
ping_label = find_element_by_tag(w, :ping_label)
|
||||||
ping_bar = find_element_by_tag(w, :ping_bar)
|
ping_bar = find_element_by_tag(w, :ping_bar)
|
||||||
@@ -95,6 +101,12 @@ module W3DHubLauncher
|
|||||||
# TODO: Sort servers?
|
# TODO: Sort servers?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def handle_game_server_list
|
||||||
|
after(1_000) do
|
||||||
|
populate_server_list
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def handle_game_server_updated(payload)
|
def handle_game_server_updated(payload)
|
||||||
game_server = Worker::Api::GameServer.new(payload)
|
game_server = Worker::Api::GameServer.new(payload)
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ module W3DHubLauncher
|
|||||||
attr_reader :w3dhub_api, :settings
|
attr_reader :w3dhub_api, :settings
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
|
@queue = []
|
||||||
end
|
end
|
||||||
|
|
||||||
def connect
|
def connect
|
||||||
@@ -18,6 +19,10 @@ module W3DHubLauncher
|
|||||||
|
|
||||||
@buffer = StringIO.new
|
@buffer = StringIO.new
|
||||||
@socket = UNIXSocket.new(IPC_PATH)
|
@socket = UNIXSocket.new(IPC_PATH)
|
||||||
|
|
||||||
|
while (payload = @queue.shift)
|
||||||
|
@socket.puts(payload)
|
||||||
|
end
|
||||||
rescue Errno::ENOENT
|
rescue Errno::ENOENT
|
||||||
sleep 1
|
sleep 1
|
||||||
retry
|
retry
|
||||||
@@ -239,10 +244,12 @@ module W3DHubLauncher
|
|||||||
# pp [:client_request, query]
|
# pp [:client_request, query]
|
||||||
payload = { type: query.type, request_id: query.request_id, data: query.data }.to_json
|
payload = { type: query.type, request_id: query.request_id, data: query.data }.to_json
|
||||||
|
|
||||||
if respond_to?(query.type)
|
raise "UNKNOWN REQUEST: #{query}" unless respond_to?(query.type)
|
||||||
|
|
||||||
|
if connected?
|
||||||
@socket.puts(payload)
|
@socket.puts(payload)
|
||||||
else
|
else
|
||||||
raise "UNKNOWN REQUEST: #{query}"
|
@queue << payload
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -497,7 +504,7 @@ module W3DHubLauncher
|
|||||||
begin
|
begin
|
||||||
@settings = Api::Settings.new(JSON.parse(query.data))
|
@settings = Api::Settings.new(JSON.parse(query.data))
|
||||||
FileUtils.mkdir_p(W3DHubLauncher::CONFIG_PATH)
|
FileUtils.mkdir_p(W3DHubLauncher::CONFIG_PATH)
|
||||||
File.write("#{W3DHubLauncher::CONFIG_PATH}/settings.json", query.data)
|
File.write(W3DHubLauncher::SETTINGS_FILE_PATH, query.data)
|
||||||
|
|
||||||
result.data = query.data
|
result.data = query.data
|
||||||
rescue => e
|
rescue => e
|
||||||
|
|||||||
Reference in New Issue
Block a user