diff --git a/lib/pages/server_browser.rb b/lib/pages/server_browser.rb index 81468d9..28c4c26 100644 --- a/lib/pages/server_browser.rb +++ b/lib/pages/server_browser.rb @@ -262,12 +262,16 @@ class W3DHub end end + game_balance_icon = server_game_balance_icon(server) + flow(width: 1.0, height: 0.05) do - stack(width: 0.5, height: 1.0) do + stack(width: 0.465, height: 1.0) do para "#{server.status.teams[0].name}", width: 1.0, text_align: :center end - stack(width: 0.5, height: 1.0) do + image game_balance_icon, height: 1.0, tip: "Estimate of game balance based on score" + + stack(width: 0.46, height: 1.0) do para "#{server.status.teams[1].name}", width: 1.0, text_align: :center end end @@ -348,6 +352,27 @@ class W3DHub Store.applications.games.detect { |g| g.id == game }&.name end + def server_game_balance_icon(server) + # team 0 is left side + team_0_score = server.status.players.select { |ply| ply.team == 0 }.map(&:score).sum.to_f + + # team 1 is right side + team_1_score = server.status.players.select { |ply| ply.team == 1 }.map(&:score).sum.to_f + + ratio = 1.0 / (team_0_score / team_1_score) + ratio = 1.0 if ratio.to_s == "NaN" + + if team_0_score + team_1_score < 2_500 + "#{GAME_ROOT_PATH}/media/ui_icons/question.png" + elsif ratio.between?(0.75, 1.25) + "#{GAME_ROOT_PATH}/media/ui_icons/checkmark.png" + elsif ratio < 0.75 + "#{GAME_ROOT_PATH}/media/ui_icons/arrowRight.png" + else + "#{GAME_ROOT_PATH}/media/ui_icons/arrowLeft.png" + end + end + def prompt_for_nickname(accept_callback: nil, cancel_callback: nil) push_state( W3DHub::States::PromptDialog, diff --git a/media/ui_icons/arrowLeft.png b/media/ui_icons/arrowLeft.png new file mode 100644 index 0000000..5d5bf2e Binary files /dev/null and b/media/ui_icons/arrowLeft.png differ diff --git a/media/ui_icons/arrowRight.png b/media/ui_icons/arrowRight.png new file mode 100644 index 0000000..f0c041b Binary files /dev/null and b/media/ui_icons/arrowRight.png differ