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