From eb6fb4f4095cd186c08bce8f6332f7351c3b198a Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Mon, 24 Jun 2024 00:20:17 -0700 Subject: [PATCH] HUD: convert Containment zone and time to LUI Containment: remove Containment zone HUD on 1 zone maps --- english/localizedstrings/reimagined.str | 3 + scripts/zm/_zm_reimagined.gsc | 12 ++++ scripts/zm/zgrief/zgrief_reimagined.gsc | 95 +++++++++++++------------ ui/t6/menus/optionssettings.lua | 6 ++ ui_mp/t6/main.lua | 4 ++ ui_mp/t6/zombie/hudreimagined.lua | 73 +++++++++++++++++++ 6 files changed, 146 insertions(+), 47 deletions(-) diff --git a/english/localizedstrings/reimagined.str b/english/localizedstrings/reimagined.str index cb8daa3d..c883b54f 100644 --- a/english/localizedstrings/reimagined.str +++ b/english/localizedstrings/reimagined.str @@ -91,6 +91,9 @@ LANG_ENGLISH "HEALTH BAR" REFERENCE MENU_ZONE_NAME_CAPS LANG_ENGLISH "ZONE NAME" +REFERENCE MENU_CONTAINMENT_ZONE_TIME_CAPS +LANG_ENGLISH "CONTAINMENT ZONE/TIME" + REFERENCE MENU_FOG_CAPS LANG_ENGLISH "FOG" diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index f9d8590a..04217f85 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -197,6 +197,8 @@ precache_strings() precacheString(&"hud_update_health_bar"); precacheString(&"hud_update_zone_name"); precacheString(&"hud_update_quest_timer"); + precacheString(&"hud_update_containment_zone"); + precacheString(&"hud_update_containment_time"); precacheString(&"hud_fade_out_zone_name"); precacheString(&"hud_fade_in_zone_name"); @@ -772,6 +774,16 @@ lui_notify_events() self luinotifyevent(&"hud_update_quest_timer", 1, level.quest_timer_hud_value); self luinotifyevent(&"hud_fade_in_quest_timer"); } + + if (isdefined(level.containment_zone_hud_value)) + { + self luinotifyevent(&"hud_update_containment_zone", 1, level.containment_zone_hud_value); + } + + if (isdefined(level.containment_time_hud_value)) + { + self luinotifyevent(&"hud_update_containment_time", 1, level.containment_time_hud_value); + } } enemy_counter_hud() diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 3db999a8..0ca05459 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -2410,51 +2410,9 @@ race_check_for_kills() containment_init() { - level.containment_zone_hud = newHudElem(); - level.containment_zone_hud.alignx = "left"; - level.containment_zone_hud.aligny = "top"; - level.containment_zone_hud.horzalign = "user_left"; - level.containment_zone_hud.vertalign = "user_top"; - level.containment_zone_hud.x += 7; - level.containment_zone_hud.y += 2; - level.containment_zone_hud.fontscale = 1.4; - level.containment_zone_hud.alpha = 0; - level.containment_zone_hud.color = (1, 1, 1); - level.containment_zone_hud.hidewheninmenu = 1; - level.containment_zone_hud.foreground = 1; - level.containment_zone_hud.label = &"ZOMBIE_HUD_CONTAINMENT_ZONE"; - - level.containment_time_hud = newHudElem(); - level.containment_time_hud.alignx = "left"; - level.containment_time_hud.aligny = "top"; - level.containment_time_hud.horzalign = "user_left"; - level.containment_time_hud.vertalign = "user_top"; - level.containment_time_hud.x += 7; - level.containment_time_hud.y += 17; - level.containment_time_hud.fontscale = 1.4; - level.containment_time_hud.alpha = 0; - level.containment_time_hud.color = (1, 1, 1); - level.containment_time_hud.hidewheninmenu = 1; - level.containment_time_hud.foreground = 1; - level.containment_time_hud.label = &"ZOMBIE_HUD_CONTAINMENT_TIME"; - - level thread containment_hud_destroy_on_end_game(); level thread containment_think(); } -containment_hud_destroy_on_end_game() -{ - level waittill("end_game"); - - level.containment_zone_hud setText(""); - level.containment_time_hud setText(""); - - level waittill("intermission"); - - level.containment_zone_hud destroy(); - level.containment_time_hud destroy(); -} - containment_think() { level endon("end_game"); @@ -2464,11 +2422,18 @@ containment_think() ind = 0; containment_zones = containment_get_zones(); - level.containment_zone_hud.alpha = 1; - if (containment_zones.size > 1) { - level.containment_time_hud.alpha = 1; + players = get_players(); + + level.containment_zone_hud_value = &""; + level.containment_time_hud_value = -1; + + foreach (player in players) + { + player luinotifyevent(&"hud_update_containment_zone", 1, level.containment_zone_hud_value); + player luinotifyevent(&"hud_update_containment_time", 1, level.containment_time_hud_value); + } } level waittill("restart_round_start"); @@ -2540,8 +2505,17 @@ containment_think() player thread show_grief_hud_msg(&"ZOMBIE_NEW_CONTAINMENT_ZONE"); } - level.containment_zone_hud setText(zone_display_name); - level.containment_time_hud setTimer(60); + if (containment_zones.size > 1) + { + level.containment_zone_hud_value = zone_display_name; + + foreach (player in players) + { + player luinotifyevent(&"hud_update_containment_zone", 1, level.containment_zone_hud_value); + } + + level thread containment_time_hud_countdown(60); + } zone_time = 60000; next_obj_waypoint_time = 10000; @@ -3108,6 +3082,33 @@ containment_set_obj_waypoint_icon(icon, next_obj = false) } } +containment_time_hud_countdown(time) +{ + level notify("containment_time_hud_countdown"); + level endon("containment_time_hud_countdown"); + + level.containment_time_hud_value = time; + + while (1) + { + players = get_players(); + + foreach (player in players) + { + player luinotifyevent(&"hud_update_containment_time", 1, level.containment_time_hud_value); + } + + if (level.containment_time_hud_value <= 0) + { + return; + } + + wait 1; + + level.containment_time_hud_value--; + } +} + print_containment_msg(hint_string) { self iprintln(hint_string); diff --git a/ui/t6/menus/optionssettings.lua b/ui/t6/menus/optionssettings.lua index c83b3f8f..78a0e59c 100644 --- a/ui/t6/menus/optionssettings.lua +++ b/ui/t6/menus/optionssettings.lua @@ -657,6 +657,12 @@ CoD.OptionsSettings.CreateModTab = function(ModTab, LocalClientIndex) ModTabButtonList:addSpacer(CoD.CoD9Button.Height / 2) + 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_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChanged) + + ModTabButtonList:addSpacer(CoD.CoD9Button.Height / 2) + local FogSelector = ModTabButtonList:addDvarLeftRightSelector(LocalClientIndex, Engine.Localize("MENU_FOG_CAPS"), "r_fog_settings") FogSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_DISABLED_CAPS"), 0, nil, CoD.OptionsSettings.Button_ApplyDvarChangedFog) FogSelector:addChoice(LocalClientIndex, Engine.Localize("MENU_ENABLED_CAPS"), 1, nil, CoD.OptionsSettings.Button_ApplyDvarChangedFog) diff --git a/ui_mp/t6/main.lua b/ui_mp/t6/main.lua index 2d02988d..81bea5c0 100644 --- a/ui_mp/t6/main.lua +++ b/ui_mp/t6/main.lua @@ -199,6 +199,10 @@ CoD.InitCustomDvars = function() Engine.Exec(nil, "seta ui_hud_zone_name 1") end + if UIExpression.DvarString(nil, "ui_hud_containment") == "" then + Engine.Exec(nil, "seta ui_hud_containment 1") + end + if UIExpression.DvarString(nil, "r_fog_settings") == "" then Engine.Exec(nil, "seta r_fog_settings 0") end diff --git a/ui_mp/t6/zombie/hudreimagined.lua b/ui_mp/t6/zombie/hudreimagined.lua index 354119f6..35a95d3d 100644 --- a/ui_mp/t6/zombie/hudreimagined.lua +++ b/ui_mp/t6/zombie/hudreimagined.lua @@ -238,6 +238,47 @@ LUI.createMenu.ReimaginedArea = function(LocalClientIndex) questTimerWidget:registerEventHandler("hud_fade_out_quest_timer", CoD.Reimagined.QuestTimerArea.FadeOutQuestTimer) questTimerWidget:registerEventHandler("hud_fade_in_quest_timer", CoD.Reimagined.QuestTimerArea.FadeInQuestTimer) + local containmentWidget = LUI.UIElement.new() + containmentWidget:setLeftRight(true, true, 7, 7) + containmentWidget:setTopBottom(true, false, 3, 3) + containmentWidget:setAlpha(0) + safeArea:addElement(containmentWidget) + + local containmentZoneText = LUI.UIText.new() + containmentZoneText:setLeftRight(true, true, 0, 0) + containmentZoneText:setTopBottom(true, false, 0, CoD.textSize.Default) + containmentZoneText:setFont(CoD.fonts.Big) + containmentZoneText:setAlignment(LUI.Alignment.Left) + containmentWidget:addElement(containmentZoneText) + containmentWidget.containmentZoneText = containmentZoneText + + local containmentTimeText = LUI.UIText.new() + containmentTimeText:setLeftRight(true, true, 0, 0) + containmentTimeText:setTopBottom(true, false, 0 + 23, CoD.textSize.Default + 23) + containmentTimeText:setFont(CoD.fonts.Big) + containmentTimeText:setAlignment(LUI.Alignment.Left) + containmentWidget:addElement(containmentTimeText) + containmentWidget.containmentTimeText = containmentTimeText + + containmentWidget:registerEventHandler("hud_update_refresh", CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_HUD_VISIBLE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_EMP_ACTIVE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_CAMERA_MODE_MOVIECAM, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_ALL_GAME_HUD_HIDDEN, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_VEHICLE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_GUIDED_MISSILE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_REMOTE_KILLSTREAK_STATIC, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_AMMO_COUNTER_HIDE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_FLASH_BANGED, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_UI_ACTIVE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SPECTATING_CLIENT, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SCOREBOARD_OPEN, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_PLAYER_DEAD, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_SCOPED, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_PLAYER_ZOMBIE, CoD.Reimagined.ContainmentArea.UpdateVisibility) + containmentWidget:registerEventHandler("hud_update_containment_zone", CoD.Reimagined.ContainmentArea.UpdateContainmentZone) + containmentWidget:registerEventHandler("hud_update_containment_time", CoD.Reimagined.ContainmentArea.UpdateContainmentTime) + return safeArea end @@ -371,6 +412,7 @@ end CoD.Reimagined.ZoneNameArea.UpdateZoneName = function(Menu, ClientInstance) local zoneName = Engine.Localize(Engine.GetIString(ClientInstance.data[1], "CS_LOCALIZED_STRINGS")) + Menu.zoneNameText:setText(zoneName) end @@ -427,6 +469,37 @@ CoD.Reimagined.QuestTimerArea.FadeInQuestTimer = function(Menu, ClientInstance) end end +CoD.Reimagined.ContainmentArea = {} +CoD.Reimagined.ContainmentArea.UpdateVisibility = function(Menu, ClientInstance) + local controller = ClientInstance.controller + if UIExpression.DvarBool(nil, "ui_hud_containment") == 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 or UIExpression.IsVisibilityBitSet(controller, CoD.BIT_SCOREBOARD_OPEN) == 1) 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.ContainmentArea.UpdateContainmentZone = function(Menu, ClientInstance) + local zoneName = Engine.Localize(Engine.GetIString(ClientInstance.data[1], "CS_LOCALIZED_STRINGS")) + + Menu.containmentZoneText:setText(Engine.Localize("ZOMBIE_HUD_CONTAINMENT_ZONE") .. zoneName) +end + +CoD.Reimagined.ContainmentArea.UpdateContainmentTime = function(Menu, ClientInstance) + local timeNum = ClientInstance.data[1] + local time = "" + + if timeNum >= 0 then + time = CoD.Reimagined.ConvertNumToTime(timeNum) + end + + Menu.containmentTimeText:setText(Engine.Localize("ZOMBIE_HUD_CONTAINMENT_TIME") .. time) +end + CoD.Reimagined.ConvertNumToTime = function(num) local time = "" local hrs = 0