mirror of
https://github.com/cyberarm/w3d_hub_linux_launcher.git
synced 2026-11-03 16:44:05 +00:00
Update worker game server updater to prefix eventbus events with 'game_', make Window handle worker's game server updater events
This commit is contained in:
@@ -10,6 +10,38 @@ module W3DHubLauncher
|
||||
MemCache[:game_server_pings] = payload
|
||||
end
|
||||
|
||||
CyberarmEngine::EventBus.subscribe("game_server_list", self) do |payload|
|
||||
MemCache[:servers] = payload.map { |server| Worker::Api::GameServer.new(server) }
|
||||
end
|
||||
|
||||
CyberarmEngine::EventBus.subscribe("game_server_added", self) do |payload|
|
||||
existing_game_server = MemCache[:servers]&.find { |s| s.id == payload["id"] }
|
||||
game_server = Worker::Api::GameServer.new(payload)
|
||||
|
||||
if existing_game_server
|
||||
MemCache[:servers][MemCache[:servers].index(existing_game_server)] = game_server
|
||||
else
|
||||
MemCache[:servers] << game_server
|
||||
end
|
||||
end
|
||||
|
||||
CyberarmEngine::EventBus.subscribe("game_server_updated", self) do |payload|
|
||||
existing_game_server = MemCache[:servers]&.find { |s| s.id == payload["id"] }
|
||||
game_server = Worker::Api::GameServer.new(payload)
|
||||
|
||||
if existing_game_server
|
||||
MemCache[:servers][MemCache[:servers].index(existing_game_server)] = game_server
|
||||
else
|
||||
MemCache[:servers] << game_server
|
||||
end
|
||||
end
|
||||
|
||||
CyberarmEngine::EventBus.subscribe("game_server_removed", self) do |payload|
|
||||
game_server = MemCache[:servers]&.find { |s| s.id == payload["id"] }
|
||||
|
||||
MemCache[:servers].delete(game_server) if game_server
|
||||
end
|
||||
|
||||
push_state(States::Boot)
|
||||
# push_state(States::Interface)
|
||||
end
|
||||
|
||||
@@ -136,12 +136,12 @@ module W3DHubLauncher
|
||||
else # add
|
||||
@game_servers << game_server
|
||||
end
|
||||
broadcast(hash["type"].to_sym, data: hash["data"])
|
||||
broadcast(:"game_#{hash["type"]}", data: hash["data"])
|
||||
|
||||
when "server_removed"
|
||||
game_server = @game_servers.find { |s| s.id == hash["data"]["id"] }
|
||||
@game_servers.delete(game_server) if game_server
|
||||
broadcast(hash["type"].to_sym, data: hash["data"]["id"])
|
||||
broadcast(:"game_#{hash["type"]}", data: hash["data"])
|
||||
|
||||
when "server_details"
|
||||
# TODO
|
||||
|
||||
Reference in New Issue
Block a user