1
0
mirror of https://github.com/JezuzLizard/BO2-Reimagined.git synced 2025-06-07 21:59:49 -05:00

HUD: convert game mode score to LUI

Containment and Meat: show scoring team HUD as gray and faded when inactive
This commit is contained in:
Jbleezy 2024-06-25 02:29:24 -07:00
parent c75e0051bf
commit 4d1b1b4c4b
6 changed files with 354 additions and 197 deletions

View File

@ -94,6 +94,9 @@ LANG_ENGLISH "ZONE NAME"
REFERENCE MENU_GAME_MODE_NAME_CAPS REFERENCE MENU_GAME_MODE_NAME_CAPS
LANG_ENGLISH "GAME MODE NAME" LANG_ENGLISH "GAME MODE NAME"
REFERENCE MENU_GAME_MODE_SCORE_CAPS
LANG_ENGLISH "GAME MODE SCORE"
REFERENCE MENU_CONTAINMENT_ZONE_TIME_CAPS REFERENCE MENU_CONTAINMENT_ZONE_TIME_CAPS
LANG_ENGLISH "CONTAINMENT ZONE/TIME" LANG_ENGLISH "CONTAINMENT ZONE/TIME"

View File

@ -773,6 +773,21 @@ lui_notify_events()
self luinotifyevent(&"hud_fade_in_quest_timer"); self luinotifyevent(&"hud_fade_in_quest_timer");
} }
if (isdefined(level.game_mode_name_hud_value))
{
self luinotifyevent(&"hud_update_game_mode_name", 1, level.game_mode_name_hud_value);
}
if (isdefined(level.game_mode_player_count_hud_value))
{
self luinotifyevent(&"hud_update_player_count", 2, level.game_mode_player_count_hud_value[self.team], level.game_mode_player_count_hud_value[getotherteam(self.team)]);
}
if (isdefined(level.game_mode_scoring_team_hud_value))
{
self luinotifyevent(&"hud_update_scoring_team", 1, level.game_mode_scoring_team_hud_value[self.team]);
}
if (isdefined(level.containment_zone_hud_value)) if (isdefined(level.containment_zone_hud_value))
{ {
self luinotifyevent(&"hud_update_containment_zone", 1, level.containment_zone_hud_value); self luinotifyevent(&"hud_update_containment_zone", 1, level.containment_zone_hud_value);
@ -782,11 +797,6 @@ lui_notify_events()
{ {
self luinotifyevent(&"hud_update_containment_time", 1, level.containment_time_hud_value); self luinotifyevent(&"hud_update_containment_time", 1, level.containment_time_hud_value);
} }
if (isdefined(level.game_mode_name_hud_value))
{
self luinotifyevent(&"hud_update_game_mode_name", 1, level.game_mode_name_hud_value);
}
} }
enemy_counter_hud() enemy_counter_hud()

View File

@ -47,7 +47,6 @@ init()
precacheStatusIcon(level.item_meat_status_icon_name); precacheStatusIcon(level.item_meat_status_icon_name);
precacheshader("waypoint_target");
precacheshader("white_waypoint_target"); precacheshader("white_waypoint_target");
precacheshader("white_waypoint_capture"); precacheshader("white_waypoint_capture");
precacheshader("white_waypoint_defend"); precacheshader("white_waypoint_defend");
@ -55,13 +54,10 @@ init()
precacheshader("white_waypoint_grab"); precacheshader("white_waypoint_grab");
precacheshader("white_waypoint_kill"); precacheshader("white_waypoint_kill");
precacheshader("white_waypoint_escort"); precacheshader("white_waypoint_escort");
precacheshader("chalkmarks_hellcatraz_1");
precacheshader("chalkmarks_hellcatraz_2");
precacheshader("chalkmarks_hellcatraz_3");
precacheshader("chalkmarks_hellcatraz_4");
precacheshader("chalkmarks_hellcatraz_5");
precacheString(&"hud_update_game_mode_name"); precacheString(&"hud_update_game_mode_name");
precacheString(&"hud_update_player_count");
precacheString(&"hud_update_scoring_team");
precacheString(&"hud_update_containment_zone"); precacheString(&"hud_update_containment_zone");
precacheString(&"hud_update_containment_time"); precacheString(&"hud_update_containment_time");
precacheString(istring(toupper("ZMUI_" + level.scr_zm_ui_gametype_obj))); precacheString(istring(toupper("ZMUI_" + level.scr_zm_ui_gametype_obj)));
@ -102,7 +98,6 @@ init()
level.player_suicide_func = ::player_suicide; level.player_suicide_func = ::player_suicide;
level thread grief_gamemode_name_hud(); level thread grief_gamemode_name_hud();
level thread grief_gamemode_score_hud();
level thread grief_intro_msg(); level thread grief_intro_msg();
level thread round_start_wait(5, true); level thread round_start_wait(5, true);
level thread remove_round_number(); level thread remove_round_number();
@ -142,185 +137,96 @@ grief_gamemode_name_hud()
} }
} }
grief_gamemode_score_hud()
{
if (level.script == "zm_prison")
{
game["icons"]["axis"] = "faction_inmates";
game["icons"]["allies"] = "faction_guards";
}
level.grief_score_hud = [];
foreach (team1 in level.teams)
{
level.grief_score_hud[team1] = spawnStruct();
foreach (team2 in level.teams)
{
level.grief_score_hud[team1].icon[team2] = newTeamHudElem(team1);
level.grief_score_hud[team1].icon[team2].alignx = "center";
level.grief_score_hud[team1].icon[team2].aligny = "top";
level.grief_score_hud[team1].icon[team2].horzalign = "user_center";
level.grief_score_hud[team1].icon[team2].vertalign = "user_top";
level.grief_score_hud[team1].icon[team2].y += 16;
level.grief_score_hud[team1].icon[team2].width = 32;
level.grief_score_hud[team1].icon[team2].height = 32;
level.grief_score_hud[team1].icon[team2].hidewheninmenu = 1;
level.grief_score_hud[team1].icon[team2].foreground = 1;
level.grief_score_hud[team1].icon[team2].alpha = 0;
level.grief_score_hud[team1].icon[team2] setShader(game["icons"][team2], level.grief_score_hud[team1].icon[team2].width, level.grief_score_hud[team1].icon[team2].height);
level.grief_score_hud[team1].score[team2] = newTeamHudElem(team1);
level.grief_score_hud[team1].score[team2].alignx = "center";
level.grief_score_hud[team1].score[team2].aligny = "top";
level.grief_score_hud[team1].score[team2].horzalign = "user_center";
level.grief_score_hud[team1].score[team2].vertalign = "user_top";
level.grief_score_hud[team1].score[team2].y += 10;
level.grief_score_hud[team1].score[team2].fontscale = 3.5;
level.grief_score_hud[team1].score[team2].color = (0.21, 0, 0);
level.grief_score_hud[team1].score[team2].hidewheninmenu = 1;
level.grief_score_hud[team1].score[team2].foreground = 1;
level.grief_score_hud[team1].score[team2].alpha = 0;
level.grief_score_hud[team1].score[team2] setValue(0);
if (team1 == team2)
{
level.grief_score_hud[team1].icon[team2].x -= 72.5;
level.grief_score_hud[team1].score[team2].x -= 27.5;
}
else
{
level.grief_score_hud[team1].icon[team2].x += 72.5;
level.grief_score_hud[team1].score[team2].x += 27.5;
}
level.grief_score_hud[team1].icon[team2] thread scripts\zm\_zm_reimagined::destroy_on_intermission();
level.grief_score_hud[team1].score[team2] thread scripts\zm\_zm_reimagined::destroy_on_intermission();
if (level.scr_zm_ui_gametype_obj == "zsnr" || level.scr_zm_ui_gametype_obj == "zcontainment")
{
level.grief_score_hud[team1].player_count[team2] = newTeamHudElem(team1);
level.grief_score_hud[team1].player_count[team2].alignx = "center";
level.grief_score_hud[team1].player_count[team2].aligny = "top";
level.grief_score_hud[team1].player_count[team2].horzalign = "user_center";
level.grief_score_hud[team1].player_count[team2].vertalign = "user_top";
level.grief_score_hud[team1].player_count[team2].y += 50;
level.grief_score_hud[team1].player_count[team2].width = 32;
level.grief_score_hud[team1].player_count[team2].height = 32;
level.grief_score_hud[team1].player_count[team2].color = (0.21, 0, 0);
level.grief_score_hud[team1].player_count[team2].hidewheninmenu = 1;
level.grief_score_hud[team1].player_count[team2].foreground = 1;
level.grief_score_hud[team1].player_count[team2].archived = 0;
level.grief_score_hud[team1].player_count[team2].alpha = 0;
if (team1 == team2)
{
level.grief_score_hud[team1].player_count[team2].x -= 27.5;
}
else
{
level.grief_score_hud[team1].player_count[team2].x += 27.5;
}
level.grief_score_hud[team1].player_count[team2].og_x = level.grief_score_hud[team1].player_count[team2].x;
level.grief_score_hud[team1].player_count[team2] thread scripts\zm\_zm_reimagined::destroy_on_end_game();
}
}
if (level.scr_zm_ui_gametype_obj == "zcontainment" || level.scr_zm_ui_gametype_obj == "zmeat")
{
level.grief_score_hud[team1].obj_icon = newTeamHudElem(team1);
level.grief_score_hud[team1].obj_icon.alignx = "center";
level.grief_score_hud[team1].obj_icon.aligny = "top";
level.grief_score_hud[team1].obj_icon.horzalign = "user_center";
level.grief_score_hud[team1].obj_icon.vertalign = "user_top";
level.grief_score_hud[team1].obj_icon.y += 50;
level.grief_score_hud[team1].obj_icon.width = 20;
level.grief_score_hud[team1].obj_icon.height = 20;
level.grief_score_hud[team1].obj_icon.hidewheninmenu = 1;
level.grief_score_hud[team1].obj_icon.foreground = 1;
level.grief_score_hud[team1].obj_icon.archived = 0;
level.grief_score_hud[team1].obj_icon.alpha = 0;
level.grief_score_hud[team1].obj_icon setShader("waypoint_target", level.grief_score_hud[team1].obj_icon.width, level.grief_score_hud[team1].obj_icon.height);
level.grief_score_hud[team1].obj_icon.og_x = level.grief_score_hud[team1].obj_icon.x;
level.grief_score_hud[team1].obj_icon thread scripts\zm\_zm_reimagined::destroy_on_end_game();
}
}
level thread grief_score_hud_wait_and_show();
}
grief_score_hud_wait_and_show()
{
flag_wait("hud_visible");
foreach (team1 in level.teams)
{
foreach (team2 in level.teams)
{
level.grief_score_hud[team1].icon[team2].alpha = 1;
level.grief_score_hud[team1].score[team2].alpha = 1;
}
}
}
grief_score_hud_set_player_count(team, num = get_number_of_valid_players_team(team)) grief_score_hud_set_player_count(team, num = get_number_of_valid_players_team(team))
{ {
foreach (team1 in level.teams) if (!isdefined(level.game_mode_player_count_hud_value))
{ {
if (num == 0) level.game_mode_player_count_hud_value = [];
{ level.game_mode_player_count_hud_value["allies"] = -1;
level.grief_score_hud[team1].player_count[team].alpha = 0; level.game_mode_player_count_hud_value["axis"] = -1;
continue; }
}
level.grief_score_hud[team1].player_count[team].alpha = 1; if (level.game_mode_player_count_hud_value[team] == num)
{
return;
}
offset = (4 - num) * (level.grief_score_hud[team1].player_count[team].width / 8); level.game_mode_player_count_hud_value[team] = num;
level.grief_score_hud[team1].player_count[team].x = level.grief_score_hud[team1].player_count[team].og_x + offset;
level.grief_score_hud[team1].player_count[team] setShader("chalkmarks_hellcatraz_" + num, level.grief_score_hud[team1].player_count[team].width, level.grief_score_hud[team1].player_count[team].height); players = get_players("allies");
foreach (player in players)
{
player luinotifyevent(&"hud_update_player_count", 2, level.game_mode_player_count_hud_value["allies"], level.game_mode_player_count_hud_value["axis"]);
}
players = get_players("axis");
foreach (player in players)
{
player luinotifyevent(&"hud_update_player_count", 2, level.game_mode_player_count_hud_value["axis"], level.game_mode_player_count_hud_value["allies"]);
} }
} }
grief_score_hud_set_obj_icon(team) grief_score_hud_set_scoring_team(team)
{ {
dist = 72.5; if (!isdefined(level.game_mode_scoring_team_hud_value))
foreach (team1 in level.teams)
{ {
if (team == "none") level.game_mode_scoring_team_hud_value = [];
{ level.game_mode_scoring_team_hud_value["allies"] = -1;
level.grief_score_hud[team1].obj_icon.alpha = 0; level.game_mode_scoring_team_hud_value["axis"] = -1;
continue; }
}
level.grief_score_hud[team1].obj_icon.alpha = 1; value = [];
value["allies"] = 0;
value["axis"] = 0;
if (team == "neutral") if (team == "neutral")
{ {
level.grief_score_hud[team1].obj_icon.x = level.grief_score_hud[team1].obj_icon.og_x; value["allies"] = 0;
level.grief_score_hud[team1].obj_icon.color = (1, 1, 1); value["axis"] = 0;
} }
else if (team == "contested") else if (team == "allies")
{ {
level.grief_score_hud[team1].obj_icon.x = level.grief_score_hud[team1].obj_icon.og_x; value["allies"] = 1;
level.grief_score_hud[team1].obj_icon.color = (1, 1, 0); value["axis"] = 2;
} }
else if (team1 == team) else if (team == "axis")
{ {
level.grief_score_hud[team1].obj_icon.x = level.grief_score_hud[team1].obj_icon.og_x - dist; value["allies"] = 2;
level.grief_score_hud[team1].obj_icon.color = (0, 1, 0); value["axis"] = 1;
} }
else else if (team == "contested")
{ {
level.grief_score_hud[team1].obj_icon.x = level.grief_score_hud[team1].obj_icon.og_x + dist; value["allies"] = 3;
level.grief_score_hud[team1].obj_icon.color = (1, 0, 0); value["axis"] = 3;
} }
else if (team == "none")
{
value["allies"] = 4;
value["axis"] = 4;
}
if (level.game_mode_scoring_team_hud_value["allies"] == value["allies"] && level.game_mode_scoring_team_hud_value["axis"] == value["axis"])
{
return;
}
level.game_mode_scoring_team_hud_value["allies"] = value["allies"];
level.game_mode_scoring_team_hud_value["axis"] = value["axis"];
players = get_players("allies");
foreach (player in players)
{
player luinotifyevent(&"hud_update_scoring_team", 1, level.game_mode_scoring_team_hud_value["allies"]);
}
players = get_players("axis");
foreach (player in players)
{
player luinotifyevent(&"hud_update_scoring_team", 1, level.game_mode_scoring_team_hud_value["axis"]);
} }
} }
@ -2425,6 +2331,10 @@ containment_think()
} }
} }
flag_wait("initial_blackscreen_passed");
grief_score_hud_set_scoring_team("none");
level waittill("restart_round_start"); level waittill("restart_round_start");
start_time = getTime(); start_time = getTime();
@ -2635,7 +2545,7 @@ containment_think()
player containment_set_obj_waypoint_icon("white_waypoint_contested"); player containment_set_obj_waypoint_icon("white_waypoint_contested");
} }
grief_score_hud_set_obj_icon("contested"); grief_score_hud_set_scoring_team("contested");
if (held_prev != "cont") if (held_prev != "cont")
{ {
@ -2672,7 +2582,7 @@ containment_think()
} }
} }
grief_score_hud_set_obj_icon("axis"); grief_score_hud_set_scoring_team("axis");
if (held_prev != "axis") if (held_prev != "axis")
{ {
@ -2715,7 +2625,7 @@ containment_think()
} }
} }
grief_score_hud_set_obj_icon("allies"); grief_score_hud_set_scoring_team("allies");
if (held_prev != "allies") if (held_prev != "allies")
{ {
@ -2758,7 +2668,7 @@ containment_think()
player containment_set_obj_waypoint_icon("white_waypoint_target"); player containment_set_obj_waypoint_icon("white_waypoint_target");
} }
grief_score_hud_set_obj_icon("neutral"); grief_score_hud_set_scoring_team("neutral");
if (held_prev != "none") if (held_prev != "none")
{ {
@ -3204,6 +3114,12 @@ meat_think()
{ {
level endon("end_game"); level endon("end_game");
flag_wait("initial_blackscreen_passed");
grief_score_hud_set_scoring_team("none");
level waittill("restart_round_start");
held_time = undefined; held_time = undefined;
obj_time = 1000; obj_time = 1000;
@ -3218,7 +3134,7 @@ meat_think()
held_time = getTime(); held_time = getTime();
} }
grief_score_hud_set_obj_icon(level.meat_player.team); grief_score_hud_set_scoring_team(level.meat_player.team);
foreach (player in players) foreach (player in players)
{ {
@ -3272,7 +3188,7 @@ meat_think()
level.item_meat.obj_waypoint_origin.origin = level.item_meat.origin + (0, 0, 32); level.item_meat.obj_waypoint_origin.origin = level.item_meat.origin + (0, 0, 32);
grief_score_hud_set_obj_icon("neutral"); grief_score_hud_set_scoring_team("neutral");
foreach (player in players) foreach (player in players)
{ {
@ -3292,7 +3208,7 @@ meat_think()
level.meat_powerup thread meat_waypoint_origin_destroy_on_death(); level.meat_powerup thread meat_waypoint_origin_destroy_on_death();
} }
grief_score_hud_set_obj_icon("neutral"); grief_score_hud_set_scoring_team("neutral");
foreach (player in players) foreach (player in players)
{ {
@ -3304,7 +3220,7 @@ meat_think()
} }
else else
{ {
grief_score_hud_set_obj_icon("none"); grief_score_hud_set_scoring_team("none");
foreach (player in players) foreach (player in players)
{ {
@ -3368,11 +3284,6 @@ increment_score(team, amount = 1, show_lead_msg = true, score_msg)
level.grief_score[encounters_team] = get_gamemode_winning_score(); level.grief_score[encounters_team] = get_gamemode_winning_score();
} }
foreach (hud_team in level.teams)
{
level.grief_score_hud[hud_team].score[team] setValue(level.grief_score[encounters_team]);
}
setteamscore(team, level.grief_score[encounters_team]); setteamscore(team, level.grief_score[encounters_team]);
if (level.grief_score[encounters_team] >= get_gamemode_winning_score()) if (level.grief_score[encounters_team] >= get_gamemode_winning_score())

View File

@ -661,6 +661,10 @@ CoD.OptionsSettings.CreateModTab = function(ModTab, LocalClientIndex)
GameModeNameSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_DISABLED_CAPS"), 0, nil, CoD.OptionsSettings.Button_ApplyDvarChanged) GameModeNameSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_DISABLED_CAPS"), 0, nil, CoD.OptionsSettings.Button_ApplyDvarChanged)
GameModeNameSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChanged) GameModeNameSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChanged)
local GameModeScoreSelector = ModTabButtonList:addDvarLeftRightSelector(LocalClientIndex, Engine.Localize("MENU_GAME_MODE_SCORE_CAPS"), "ui_hud_game_mode_score")
GameModeScoreSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_DISABLED_CAPS"), 0, nil, CoD.OptionsSettings.Button_ApplyDvarChanged)
GameModeScoreSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChanged)
local ContainmentSelector = ModTabButtonList:addDvarLeftRightSelector(LocalClientIndex, Engine.Localize("MENU_CONTAINMENT_ZONE_TIME_CAPS"), "ui_hud_containment") local ContainmentSelector = ModTabButtonList:addDvarLeftRightSelector(LocalClientIndex, Engine.Localize("MENU_CONTAINMENT_ZONE_TIME_CAPS"), "ui_hud_containment")
ContainmentSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_DISABLED_CAPS"), 0, nil, CoD.OptionsSettings.Button_ApplyDvarChanged) ContainmentSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_DISABLED_CAPS"), 0, nil, CoD.OptionsSettings.Button_ApplyDvarChanged)
ContainmentSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChanged) ContainmentSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChanged)

View File

@ -203,6 +203,10 @@ CoD.InitCustomDvars = function()
Engine.Exec(nil, "seta ui_hud_game_mode_name 1") Engine.Exec(nil, "seta ui_hud_game_mode_name 1")
end end
if UIExpression.DvarString(nil, "ui_hud_game_mode_score") == "" then
Engine.Exec(nil, "seta ui_hud_game_mode_score 1")
end
if UIExpression.DvarString(nil, "ui_hud_containment") == "" then if UIExpression.DvarString(nil, "ui_hud_containment") == "" then
Engine.Exec(nil, "seta ui_hud_containment 1") Engine.Exec(nil, "seta ui_hud_containment 1")
end end

View File

@ -249,12 +249,6 @@ LUI.createMenu.ReimaginedArea = function(LocalClientIndex)
gameModeNameText:setTopBottom(true, false, 0, CoD.textSize.ExtraSmall) gameModeNameText:setTopBottom(true, false, 0, CoD.textSize.ExtraSmall)
gameModeNameText:setFont(CoD.fonts.Big) gameModeNameText:setFont(CoD.fonts.Big)
gameModeNameText:setAlignment(LUI.Alignment.Center) gameModeNameText:setAlignment(LUI.Alignment.Center)
gameModeNameText:registerAnimationState("fade_out", {
alpha = 0,
})
gameModeNameText:registerAnimationState("fade_in", {
alpha = 1,
})
gameModeNameWidget:addElement(gameModeNameText) gameModeNameWidget:addElement(gameModeNameText)
gameModeNameWidget.gameModeNameText = gameModeNameText gameModeNameWidget.gameModeNameText = gameModeNameText
@ -276,6 +270,91 @@ LUI.createMenu.ReimaginedArea = function(LocalClientIndex)
gameModeNameWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_PLAYER_ZOMBIE, CoD.Reimagined.GameModeNameArea.UpdateVisibility) gameModeNameWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_PLAYER_ZOMBIE, CoD.Reimagined.GameModeNameArea.UpdateVisibility)
gameModeNameWidget:registerEventHandler("hud_update_game_mode_name", CoD.Reimagined.GameModeNameArea.UpdateGameModeName) gameModeNameWidget:registerEventHandler("hud_update_game_mode_name", CoD.Reimagined.GameModeNameArea.UpdateGameModeName)
local gameModeScoreWidget = LUI.UIElement.new()
gameModeScoreWidget:setLeftRight(true, true, 0, 0)
gameModeScoreWidget:setTopBottom(true, false, 26, 26)
gameModeScoreWidget:setAlpha(0)
gameModeScoreWidget.iconSize = 42
safeArea:addElement(gameModeScoreWidget)
local gameModeScoreFriendlyIcon = LUI.UIImage.new()
gameModeScoreFriendlyIcon:setLeftRight(false, false, -105 - (gameModeScoreWidget.iconSize / 2), -105 + (gameModeScoreWidget.iconSize / 2))
gameModeScoreFriendlyIcon:setTopBottom(true, false, 0, gameModeScoreWidget.iconSize)
gameModeScoreFriendlyIcon:setAlpha(0)
gameModeScoreWidget:addElement(gameModeScoreFriendlyIcon)
gameModeScoreWidget.gameModeScoreFriendlyIcon = gameModeScoreFriendlyIcon
local gameModeScoreEnemyIcon = LUI.UIImage.new()
gameModeScoreEnemyIcon:setLeftRight(false, false, 105 - (gameModeScoreWidget.iconSize / 2), 105 + (gameModeScoreWidget.iconSize / 2))
gameModeScoreEnemyIcon:setTopBottom(true, false, 0, gameModeScoreWidget.iconSize)
gameModeScoreEnemyIcon:setAlpha(0)
gameModeScoreWidget:addElement(gameModeScoreEnemyIcon)
gameModeScoreWidget.gameModeScoreEnemyIcon = gameModeScoreEnemyIcon
local gameModeScoreFriendlyText = LUI.UIText.new()
gameModeScoreFriendlyText:setLeftRight(true, true, -40, -40)
gameModeScoreFriendlyText:setTopBottom(true, false, -10, -10 + CoD.textSize.Morris)
gameModeScoreFriendlyText:setFont(CoD.fonts.Morris)
gameModeScoreFriendlyText:setAlignment(LUI.Alignment.Center)
gameModeScoreFriendlyText:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b)
gameModeScoreWidget:addElement(gameModeScoreFriendlyText)
gameModeScoreWidget.gameModeScoreFriendlyText = gameModeScoreFriendlyText
local gameModeScoreEnemyText = LUI.UIText.new()
gameModeScoreEnemyText:setLeftRight(true, true, 40, 40)
gameModeScoreEnemyText:setTopBottom(true, false, -10, -10 + CoD.textSize.Morris)
gameModeScoreEnemyText:setFont(CoD.fonts.Morris)
gameModeScoreEnemyText:setAlignment(LUI.Alignment.Center)
gameModeScoreEnemyText:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b)
gameModeScoreWidget:addElement(gameModeScoreEnemyText)
gameModeScoreWidget.gameModeScoreEnemyText = gameModeScoreEnemyText
local gameModeScoreFriendlyPlayerCount = LUI.UIImage.new()
gameModeScoreFriendlyPlayerCount:setLeftRight(false, false, -40 - (gameModeScoreWidget.iconSize / 2), -40 + (gameModeScoreWidget.iconSize / 2))
gameModeScoreFriendlyPlayerCount:setTopBottom(true, false, 46, 46 + gameModeScoreWidget.iconSize)
gameModeScoreFriendlyPlayerCount:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b)
gameModeScoreFriendlyPlayerCount:setAlpha(0)
gameModeScoreWidget:addElement(gameModeScoreFriendlyPlayerCount)
gameModeScoreWidget.gameModeScoreFriendlyPlayerCount = gameModeScoreFriendlyPlayerCount
local gameModeScoreEnemyPlayerCount = LUI.UIImage.new()
gameModeScoreEnemyPlayerCount:setLeftRight(false, false, 40 - (gameModeScoreWidget.iconSize / 2), 40 + (gameModeScoreWidget.iconSize / 2))
gameModeScoreEnemyPlayerCount:setTopBottom(true, false, 46, 46 + gameModeScoreWidget.iconSize)
gameModeScoreEnemyPlayerCount:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b)
gameModeScoreEnemyPlayerCount:setAlpha(0)
gameModeScoreWidget:addElement(gameModeScoreEnemyPlayerCount)
gameModeScoreWidget.gameModeScoreEnemyPlayerCount = gameModeScoreEnemyPlayerCount
local gameModeScoreScoringTeam = LUI.UIImage.new()
gameModeScoreScoringTeam.iconSize = gameModeScoreWidget.iconSize / 2
gameModeScoreScoringTeam:setLeftRight(false, false, 0 - (gameModeScoreScoringTeam.iconSize / 2), 0 + (gameModeScoreScoringTeam.iconSize / 2))
gameModeScoreScoringTeam:setTopBottom(true, false, 46, 46 + gameModeScoreScoringTeam.iconSize)
gameModeScoreScoringTeam:setImage(RegisterMaterial("waypoint_target"))
gameModeScoreScoringTeam:setAlpha(0)
gameModeScoreWidget:addElement(gameModeScoreScoringTeam)
gameModeScoreWidget.gameModeScoreScoringTeam = gameModeScoreScoringTeam
gameModeScoreWidget:registerEventHandler("hud_update_refresh", CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_HUD_VISIBLE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_EMP_ACTIVE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_CAMERA_MODE_MOVIECAM, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_ALL_GAME_HUD_HIDDEN, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_VEHICLE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_GUIDED_MISSILE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_REMOTE_KILLSTREAK_STATIC, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_AMMO_COUNTER_HIDE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_FLASH_BANGED, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_UI_ACTIVE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SPECTATING_CLIENT, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SCOREBOARD_OPEN, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_PLAYER_DEAD, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_SCOPED, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_PLAYER_ZOMBIE, CoD.Reimagined.GameModeScoreArea.UpdateVisibility)
gameModeScoreWidget:registerEventHandler("hud_update_team_change", CoD.Reimagined.GameModeScoreArea.UpdateTeamChange)
gameModeScoreWidget:registerEventHandler("hud_update_scores", CoD.Reimagined.GameModeScoreArea.UpdateScores)
gameModeScoreWidget:registerEventHandler("hud_update_player_count", CoD.Reimagined.GameModeScoreArea.UpdatePlayerCount)
gameModeScoreWidget:registerEventHandler("hud_update_scoring_team", CoD.Reimagined.GameModeScoreArea.UpdateScoringTeam)
local containmentWidget = LUI.UIElement.new() local containmentWidget = LUI.UIElement.new()
containmentWidget:setLeftRight(true, true, 7, 7) containmentWidget:setLeftRight(true, true, 7, 7)
containmentWidget:setTopBottom(true, false, 3, 3) containmentWidget:setTopBottom(true, false, 3, 3)
@ -527,6 +606,142 @@ CoD.Reimagined.GameModeNameArea.UpdateGameModeName = function(Menu, ClientInstan
Menu.gameModeNameText:setText(gameModeNameName) Menu.gameModeNameText:setText(gameModeNameName)
end end
CoD.Reimagined.GameModeScoreArea = {}
CoD.Reimagined.GameModeScoreArea.UpdateVisibility = function(Menu, ClientInstance)
local controller = ClientInstance.controller
if UIExpression.DvarBool(nil, "ui_hud_game_mode_score") == 1 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_HUD_VISIBLE) == 1 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_EMP_ACTIVE) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_DEMO_CAMERA_MODE_MOVIECAM) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_DEMO_ALL_GAME_HUD_HIDDEN) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IN_VEHICLE) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IN_GUIDED_MISSILE) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IN_REMOTE_KILLSTREAK_STATIC) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_AMMO_COUNTER_HIDE) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IS_FLASH_BANGED) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_UI_ACTIVE) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_SCOREBOARD_OPEN) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IN_KILLCAM) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IS_SCOPED) == 0 and UIExpression.IsVisibilityBitSet(controller, CoD.BIT_IS_PLAYER_ZOMBIE) == 0 and (not CoD.IsShoutcaster(controller) or CoD.ExeProfileVarBool(controller, "shoutcaster_scorestreaks") and Engine.IsSpectatingActiveClient(controller)) and CoD.FSM_VISIBILITY(controller) == 0 then
if Menu.visible ~= true then
Menu:setAlpha(1)
Menu.visible = true
end
elseif Menu.visible == true then
Menu:setAlpha(0)
Menu.visible = nil
end
end
CoD.Reimagined.GameModeScoreArea.UpdateTeamChange = function(Menu, ClientInstance)
if UIExpression.DvarString(nil, "ui_zm_gamemodegroup") ~= CoD.Zombie.GAMETYPEGROUP_ZENCOUNTER then
return
end
if Menu.team ~= ClientInstance.team then
Menu.team = ClientInstance.team
local FactionTeam = Engine.GetFactionForTeam(ClientInstance.team)
local EnemyFactionTeam = Engine.GetFactionForTeam(CoD.Reimagined.GetOtherTeam(ClientInstance.team))
if FactionTeam ~= "" then
Menu.gameModeScoreFriendlyIcon:setImage(RegisterMaterial("faction_" .. FactionTeam))
Menu.gameModeScoreFriendlyIcon:setAlpha(1)
Menu.gameModeScoreEnemyIcon:setImage(RegisterMaterial("faction_" .. EnemyFactionTeam))
Menu.gameModeScoreEnemyIcon:setAlpha(1)
if Menu.yourScore ~= nil and Menu.enemyScore ~= nil then
Menu.yourScore, Menu.enemyScore = Menu.enemyScore, Menu.yourScore
CoD.Reimagined.GameModeScoreArea.UpdateScores(Menu, ClientInstance)
end
if Menu.yourPlayerCount ~= nil and Menu.enemyPlayerCount ~= nil then
Menu.yourPlayerCount, Menu.enemyPlayerCount = Menu.enemyPlayerCount, Menu.yourPlayerCount
CoD.Reimagined.GameModeScoreArea.UpdatePlayerCount(Menu, ClientInstance)
end
if Menu.scoringTeam ~= nil then
if Menu.scoringTeam == 1 then
Menu.scoringTeam = 2
elseif Menu.scoringTeam == 2 then
Menu.scoringTeam = 1
end
CoD.Reimagined.GameModeScoreArea.UpdateScoringTeam(Menu, ClientInstance)
end
else
Menu.gameModeScoreFriendlyIcon:setAlpha(0)
Menu.gameModeScoreEnemyIcon:setAlpha(0)
end
end
end
CoD.Reimagined.GameModeScoreArea.UpdateScores = function(Menu, ClientInstance)
if UIExpression.DvarString(nil, "ui_zm_gamemodegroup") ~= CoD.Zombie.GAMETYPEGROUP_ZENCOUNTER then
return
end
if ClientInstance.yourScore ~= nil and ClientInstance.enemyScore ~= nil then
Menu.yourScore = ClientInstance.yourScore
Menu.enemyScore = ClientInstance.enemyScore
end
Menu.gameModeScoreFriendlyText:setText(Menu.yourScore)
Menu.gameModeScoreEnemyText:setText(Menu.enemyScore)
end
CoD.Reimagined.GameModeScoreArea.UpdatePlayerCount = function(Menu, ClientInstance)
if UIExpression.DvarString(nil, "ui_zm_gamemodegroup") ~= CoD.Zombie.GAMETYPEGROUP_ZENCOUNTER then
return
end
if ClientInstance.data ~= nil then
Menu.yourPlayerCount = ClientInstance.data[1]
Menu.enemyPlayerCount = ClientInstance.data[2]
end
if Menu.yourPlayerCount > 0 then
local offset = (4 - Menu.yourPlayerCount) * (Menu.iconSize / 8)
Menu.gameModeScoreFriendlyPlayerCount:setLeftRight(false, false, -40 + offset - (Menu.iconSize / 2), -40 + offset + (Menu.iconSize / 2))
Menu.gameModeScoreFriendlyPlayerCount:setImage(RegisterMaterial("chalkmarks_hellcatraz_" .. Menu.yourPlayerCount))
Menu.gameModeScoreFriendlyPlayerCount:setAlpha(1)
else
Menu.gameModeScoreFriendlyPlayerCount:setAlpha(0)
end
if Menu.enemyPlayerCount > 0 then
local offset = (4 - Menu.enemyPlayerCount) * (Menu.iconSize / 8)
Menu.gameModeScoreEnemyPlayerCount:setLeftRight(false, false, 40 + offset - (Menu.iconSize / 2), 40 + offset + (Menu.iconSize / 2))
Menu.gameModeScoreEnemyPlayerCount:setImage(RegisterMaterial("chalkmarks_hellcatraz_" .. Menu.enemyPlayerCount))
Menu.gameModeScoreEnemyPlayerCount:setAlpha(1)
else
Menu.gameModeScoreEnemyPlayerCount:setAlpha(0)
end
end
CoD.Reimagined.GameModeScoreArea.UpdateScoringTeam = function(Menu, ClientInstance)
if UIExpression.DvarString(nil, "ui_zm_gamemodegroup") ~= CoD.Zombie.GAMETYPEGROUP_ZENCOUNTER then
return
end
if ClientInstance.data ~= nil then
Menu.scoringTeam = ClientInstance.data[1]
end
if Menu.scoringTeam == 0 then
Menu.gameModeScoreScoringTeam:setLeftRight(false, false, 0 - (Menu.gameModeScoreScoringTeam.iconSize / 2), 0 + (Menu.gameModeScoreScoringTeam.iconSize / 2))
Menu.gameModeScoreScoringTeam:setRGB(1, 1, 1)
Menu.gameModeScoreScoringTeam:setAlpha(1)
elseif Menu.scoringTeam == 1 then
Menu.gameModeScoreScoringTeam:setLeftRight(false, false, -105 - (Menu.gameModeScoreScoringTeam.iconSize / 2), -105 + (Menu.gameModeScoreScoringTeam.iconSize / 2))
Menu.gameModeScoreScoringTeam:setRGB(0, 1, 0)
Menu.gameModeScoreScoringTeam:setAlpha(1)
elseif Menu.scoringTeam == 2 then
Menu.gameModeScoreScoringTeam:setLeftRight(false, false, 105 - (Menu.gameModeScoreScoringTeam.iconSize / 2), 105 + (Menu.gameModeScoreScoringTeam.iconSize / 2))
Menu.gameModeScoreScoringTeam:setRGB(1, 0, 0)
Menu.gameModeScoreScoringTeam:setAlpha(1)
elseif Menu.scoringTeam == 3 then
Menu.gameModeScoreScoringTeam:setLeftRight(false, false, 0 - (Menu.gameModeScoreScoringTeam.iconSize / 2), 0 + (Menu.gameModeScoreScoringTeam.iconSize / 2))
Menu.gameModeScoreScoringTeam:setRGB(1, 1, 0)
Menu.gameModeScoreScoringTeam:setAlpha(1)
elseif Menu.scoringTeam == 4 then
Menu.gameModeScoreScoringTeam:setLeftRight(false, false, 0 - (Menu.gameModeScoreScoringTeam.iconSize / 2), 0 + (Menu.gameModeScoreScoringTeam.iconSize / 2))
Menu.gameModeScoreScoringTeam:setRGB(0.5, 0.5, 0.5)
Menu.gameModeScoreScoringTeam:setAlpha(0.5)
else
Menu.gameModeScoreScoringTeam:setAlpha(0)
end
end
CoD.Reimagined.ContainmentArea = {} CoD.Reimagined.ContainmentArea = {}
CoD.Reimagined.ContainmentArea.UpdateVisibility = function(Menu, ClientInstance) CoD.Reimagined.ContainmentArea.UpdateVisibility = function(Menu, ClientInstance)
local controller = ClientInstance.controller local controller = ClientInstance.controller
@ -586,3 +801,13 @@ CoD.Reimagined.ConvertNumToTime = function(num)
return time return time
end end
CoD.Reimagined.GetOtherTeam = function(team)
if team == CoD.TEAM_ALLIES then
return CoD.TEAM_AXIS
elseif team == CoD.TEAM_AXIS then
return CoD.TEAM_ALLIES
end
return team
end