public static void DrawLobby(UIElement uie, Vector2 pos) { float name_offset = -250f; float highlight_width = 285f; float org_x = pos.x; int max_row_count = NetworkMatch.GetMaxPlayersForMatch() + MPTeams.NetworkMatchTeamCount; int cur_row_count = NetworkMatch.m_players.Count() + MPTeams.NetworkMatchTeamCount; bool split = max_row_count > 10; if (split) { pos.x -= 300f; pos.y += 50f + 24f; } float org_y = pos.y; float first_y = org_y; int rows_per_col = split ? (cur_row_count + 1) / 2 : cur_row_count; int row_num = 0; foreach (var team in Teams) { if (row_num >= rows_per_col) { first_y = pos.y; pos.x += 300f * 2; pos.y = org_y; rows_per_col = cur_row_count; // no more split row_num = 0; } DrawTeamHeader(uie, pos, team, 255f); pos.y += 24f; row_num++; int num = 0; foreach (var value in NetworkMatch.m_players.Values) { if (value.m_team == team) { uie.DrawPlayerName(pos, value, num % 2 == 0, highlight_width, name_offset, -1f); pos.y += 20f; num++; row_num++; } } pos.y += 10f; } pos.y = Mathf.Max(first_y, pos.y) + 10f; pos.x = org_x; if (MenuManager.m_menu_micro_state != 2 && MenuManager.m_mp_private_match) { float alpha_mod = (MenuManager.m_mp_cst_timer > 0f) ? 0.2f : 1f; uie.DrawStringSmall(ScriptTutorialMessage.ControlString(CCInput.MENU_DELETE) + " - " + Loc.LS("CHANGE TEAMS"), pos, 0.45f, StringOffset.CENTER, UIManager.m_col_ui0, alpha_mod, -1f); } }
static void DrawDeathSummary(UIElement uie) { Vector2 pos; if (MPDeathReview.stickyDeathReview) { pos = new Vector2(UIManager.UI_LEFT + 160f, UIManager.UI_TOP + 250f); } else { pos = new Vector2((UIManager.UI_LEFT + UIManager.UI_RIGHT) / 2f, UIManager.UI_TOP + 180f); } var killer = Overload.NetworkManager.m_Players.FirstOrDefault(x => x.netId == MPDeathReview.lastDeathReview.m_killer_id); var assister = Overload.NetworkManager.m_Players.FirstOrDefault(x => x.netId == MPDeathReview.lastDeathReview.m_assister_id); var c = UIManager.m_col_red; var alpha_mod = 1f; var w = 120f; if ((!MPDeathReview.stickyDeathReview || MPDeathReview.showDeathReviewDetails) && killer && killer != GameManager.m_local_player) { UIManager.DrawQuadBarHorizontal(pos - Vector2.down * 24f, 103f, 36f, 36f, 0.3f * UIManager.m_col_black, 199); c = NetworkMatch.IsTeamMode(NetworkMatch.GetMode()) ? MPTeams.TeamColor(killer.m_mp_team, 0) : UIManager.m_col_red; var damages = MPDeathReview.lastDeathReview.players.FirstOrDefault(x => x.Key == killer.netId).Value; DrawHeader(uie, pos, $"KILLER: {killer.m_mp_name}", $"[{(damages.Sum(x => x.damage) / MPDeathReview.lastDeathReview.players.SelectMany(x => x.Value).Sum(x => x.damage)):P0}]", w, c, 0.35f); pos.y += 32f; DrawDamageSummary(uie, pos, c, 0.45f, alpha_mod, damages); pos.y += 40f; } if (MPDeathReview.showDeathReviewDetails && assister != null && assister.netId != killer.netId) { UIManager.DrawQuadBarHorizontal(pos - Vector2.down * 24f, 103f, 36f, 36f, 0.3f * UIManager.m_col_black, 199); c = NetworkMatch.IsTeamMode(NetworkMatch.GetMode()) ? MPTeams.TeamColor(assister.m_mp_team, 0) : UIManager.m_col_white; var damages = MPDeathReview.lastDeathReview.players.FirstOrDefault(x => x.Key == assister.netId).Value; DrawHeader(uie, pos, $"ASSIST: {assister.m_mp_name}", $"[{(damages.Sum(x => x.damage) / MPDeathReview.lastDeathReview.players.SelectMany(x => x.Value).Sum(x => x.damage)):P0}]", w, c, 0.35f); pos.y += 32f; DrawDamageSummary(uie, pos, c, 0.45f, alpha_mod, damages); pos.y += 40f; } // Other enemy damage not contributed by killer/assister var otherIds = Overload.NetworkManager.m_Players.Where(x => x.netId != GameManager.m_local_player.netId && x != killer && x != assister && (x.m_mp_team == MpTeam.ANARCHY || x.m_mp_team != GameManager.m_local_player.m_mp_team)).Select(x => x.netId); if (MPDeathReview.showDeathReviewDetails && MPDeathReview.lastDeathReview.players.Any(x => otherIds.Contains(x.Key))) { UIManager.DrawQuadBarHorizontal(pos - Vector2.down * 24f, 103f, 36f, 36f, 0.3f * UIManager.m_col_black, 199); var otherDamages = MPDeathReview.lastDeathReview.players.Where(x => otherIds.Contains(x.Key)).SelectMany(x => x.Value); c = NetworkMatch.IsTeamMode(NetworkMatch.GetMode()) ? MPTeams.TeamColor(GameManager.m_local_player.m_mp_team, 0) : UIManager.m_col_white; DrawHeader(uie, pos, "OTHER", $"[{(otherDamages.Sum(x => x.damage) / MPDeathReview.lastDeathReview.players.SelectMany(x => x.Value).Sum(x => x.damage)):P0}]", w, c, 0.35f); pos.y += 32f; DrawDamageSummary(uie, pos, c, 0.45f, alpha_mod, otherDamages); pos.y += 40f; } // Self and misc damage var selfIds = Overload.NetworkManager.m_Players.Where(x => x.netId == GameManager.m_local_player.netId || (NetworkMatch.GetMode() == MatchMode.TEAM_ANARCHY && x.m_mp_team == GameManager.m_local_player.m_mp_team)).Select(x => x.netId); if ((MPDeathReview.showDeathReviewDetails || killer == GameManager.m_local_player && !MPDeathReview.stickyDeathReview) && MPDeathReview.lastDeathReview.players.Any(x => selfIds.Contains(x.Key))) { UIManager.DrawQuadBarHorizontal(pos - Vector2.down * 24f, 103f, 36f, 36f, 0.3f * UIManager.m_col_black, 199); var selfDamages = MPDeathReview.lastDeathReview.players.Where(x => selfIds.Contains(x.Key)).SelectMany(x => x.Value); c = NetworkMatch.IsTeamMode(NetworkMatch.GetMode()) ? MPTeams.TeamColor(GameManager.m_local_player.m_mp_team, 0) : UIManager.m_col_white; DrawHeader(uie, pos, "SELF/MISC", $"[{(selfDamages.Sum(x => x.damage) / MPDeathReview.lastDeathReview.players.SelectMany(x => x.Value).Sum(x => x.damage)):P0}]", w, c, 0.35f); pos.y += 32f; DrawDamageSummary(uie, pos, c, 0.45f, alpha_mod, selfDamages); pos.y += 40f; } if (MPDeathReview.stickyDeathReview || (!MPDeathReview.showDeathReviewDetails && ((assister != null && assister.netId != killer.netId) || MPDeathReview.lastDeathReview.players.Any(x => otherIds.Contains(x.Key)) || (killer != GameManager.m_local_player && MPDeathReview.lastDeathReview.players.Any(x => selfIds.Contains(x.Key)))))) { if (MPDeathReview.stickyDeathReview && !MPDeathReview.showDeathReviewDetails) { pos.y = 100f; } uie.DrawStringSmall(ScriptTutorialMessage.ControlString(CCInput.USE_BOOST) + " - SHOW MORE DETAILS", pos + Vector2.down * 18f, 0.3f, StringOffset.CENTER, UIManager.m_col_ui5 * 0.7f, alpha_mod, -1f); } }