From 460317023092a18aed906cfd29b331fe7a39c1c2 Mon Sep 17 00:00:00 2001 From: Jbleezy Date: Sun, 23 Jun 2024 01:07:55 -0700 Subject: [PATCH] HUD: convert quest timer to LUI --- scripts/zm/_zm_reimagined.gsc | 47 ++++-------------- scripts/zm/reimagined/_zm_sq.gsc | 40 +++++---------- ui_mp/t6/zombie/hudreimagined.lua | 82 +++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+), 64 deletions(-) diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index ad610b59..f9d8590a 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -196,11 +196,14 @@ precache_strings() precacheString(&"hud_update_round_total_timer"); precacheString(&"hud_update_health_bar"); precacheString(&"hud_update_zone_name"); + precacheString(&"hud_update_quest_timer"); precacheString(&"hud_fade_out_zone_name"); precacheString(&"hud_fade_in_zone_name"); precacheString(&"hud_fade_out_round_total_timer"); precacheString(&"hud_fade_in_round_total_timer"); + precacheString(&"hud_fade_out_quest_timer"); + precacheString(&"hud_fade_in_quest_timer"); foreach (zone_name in level.zone_keys) { @@ -761,6 +764,13 @@ lui_notify_events() if (isdefined(level.round_total_timer_hud_value)) { self luinotifyevent(&"hud_update_round_total_timer", 1, level.round_total_timer_hud_value); + self luinotifyevent(&"hud_fade_in_round_total_timer"); + } + + if (isdefined(level.quest_timer_hud_value)) + { + self luinotifyevent(&"hud_update_quest_timer", 1, level.quest_timer_hud_value); + self luinotifyevent(&"hud_fade_in_quest_timer"); } } @@ -971,43 +981,6 @@ round_total_timer_hud() } } -set_time_frozen(time, endon_notify) -{ - if (isDefined(endon_notify)) - { - level endon(endon_notify); - } - else if (getDvar("g_gametype") == "zgrief") - { - level endon("restart_round_start"); - } - else - { - level endon("start_of_round"); - } - - self endon("death"); - - if (time != 0) - { - time -= 0.5; // need to set it below the number or it shows the next number - } - - while (1) - { - if (time == 0) - { - self setTimerUp(time); - } - else - { - self setTimer(time); - } - - wait 0.5; - } -} - health_bar_hud() { level endon("intermission"); diff --git a/scripts/zm/reimagined/_zm_sq.gsc b/scripts/zm/reimagined/_zm_sq.gsc index 224d5ab9..267eb3b2 100644 --- a/scripts/zm/reimagined/_zm_sq.gsc +++ b/scripts/zm/reimagined/_zm_sq.gsc @@ -164,38 +164,24 @@ sq_get_time_for_song(song) sq_complete_time_hud() { - hud = newHudElem(); - hud.alignx = "center"; - hud.aligny = "top"; - hud.horzalign = "user_center"; - hud.vertalign = "user_top"; - hud.y += 100; - hud.fontscale = 1.4; - hud.alpha = 0; - hud.color = (1, 1, 1); - hud.hidewheninmenu = 1; - hud.foreground = 1; - hud.label = &"ZOMBIE_HUD_QUEST_COMPLETE_TIME"; + level.quest_timer_hud_value = level.total_timer_hud_value; - hud endon("death"); + players = get_players(); - hud thread scripts\zm\_zm_reimagined::destroy_on_intermission(); - - fade_time = 0.5; - - hud fadeOverTime(fade_time); - hud.alpha = 1; - - time = int((getTime() - level.timer_hud_start_time) / 1000); - - hud thread scripts\zm\_zm_reimagined::set_time_frozen(time, "forever"); + foreach (player in players) + { + player luinotifyevent(&"hud_update_quest_timer", 1, level.quest_timer_hud_value); + player luinotifyevent(&"hud_fade_in_quest_timer", 1, 500); + } wait 10; - hud fadeOverTime(fade_time); - hud.alpha = 0; + level.quest_timer_hud_value = undefined; - wait fade_time; + players = get_players(); - hud destroy(); + foreach (player in players) + { + player luinotifyevent(&"hud_fade_out_quest_timer", 1, 500); + } } \ No newline at end of file diff --git a/ui_mp/t6/zombie/hudreimagined.lua b/ui_mp/t6/zombie/hudreimagined.lua index 0f7b591e..75d47e7f 100644 --- a/ui_mp/t6/zombie/hudreimagined.lua +++ b/ui_mp/t6/zombie/hudreimagined.lua @@ -69,6 +69,7 @@ LUI.createMenu.ReimaginedArea = function(LocalClientIndex) roundTotalTimerText:setTopBottom(true, false, 0 + 46, CoD.textSize.Default + 46) roundTotalTimerText:setFont(CoD.fonts.Big) roundTotalTimerText:setAlignment(LUI.Alignment.Right) + roundTotalTimerText:setAlpha(0) roundTotalTimerText:registerAnimationState("fade_out", { alpha = 0, }) @@ -211,6 +212,50 @@ LUI.createMenu.ReimaginedArea = function(LocalClientIndex) zoneNameWidget:registerEventHandler("hud_fade_out_zone_name", CoD.Reimagined.ZoneNameArea.FadeOutZoneName) zoneNameWidget:registerEventHandler("hud_fade_in_zone_name", CoD.Reimagined.ZoneNameArea.FadeInZoneName) + local x = 0 + local y = -200 + + local questTimerWidget = LUI.UIElement.new() + questTimerWidget:setLeftRight(true, true, x, x) + questTimerWidget:setTopBottom(false, false, y, y) + questTimerWidget:setAlpha(0) + safeArea:addElement(questTimerWidget) + + local questTimerText = LUI.UIText.new() + questTimerText:setLeftRight(true, true, 0, 0) + questTimerText:setTopBottom(false, false, 0, CoD.textSize.Default) + questTimerText:setFont(CoD.fonts.Big) + questTimerText:setAlignment(LUI.Alignment.Center) + questTimerText:setAlpha(0) + questTimerText:registerAnimationState("fade_out", { + alpha = 0, + }) + questTimerText:registerAnimationState("fade_in", { + alpha = 1, + }) + questTimerWidget:addElement(questTimerText) + questTimerWidget.questTimerText = questTimerText + + questTimerWidget:registerEventHandler("hud_update_refresh", CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_HUD_VISIBLE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_EMP_ACTIVE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_CAMERA_MODE_MOVIECAM, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_ALL_GAME_HUD_HIDDEN, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_VEHICLE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_GUIDED_MISSILE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_REMOTE_KILLSTREAK_STATIC, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_AMMO_COUNTER_HIDE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_FLASH_BANGED, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_UI_ACTIVE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SPECTATING_CLIENT, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SCOREBOARD_OPEN, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_PLAYER_DEAD, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_SCOPED, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_PLAYER_ZOMBIE, CoD.Reimagined.QuestTimerArea.UpdateVisibility) + questTimerWidget:registerEventHandler("hud_update_quest_timer", CoD.Reimagined.QuestTimerArea.UpdateQuestTimer) + questTimerWidget:registerEventHandler("hud_fade_out_quest_timer", CoD.Reimagined.QuestTimerArea.FadeOutQuestTimer) + questTimerWidget:registerEventHandler("hud_fade_in_quest_timer", CoD.Reimagined.QuestTimerArea.FadeInQuestTimer) + return safeArea end @@ -363,6 +408,43 @@ CoD.Reimagined.ZoneNameArea.FadeInZoneName = function(Menu, ClientInstance) end end +CoD.Reimagined.QuestTimerArea = {} +CoD.Reimagined.QuestTimerArea.UpdateVisibility = function(Menu, ClientInstance) + local controller = ClientInstance.controller + if 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.QuestTimerArea.UpdateQuestTimer = function(Menu, ClientInstance) + local timeNum = ClientInstance.data[1] + local time = CoD.Reimagined.ConvertNumToTime(timeNum) + + Menu.questTimerText:setText(Engine.Localize("ZOMBIE_HUD_QUEST_COMPLETE_TIME") .. time) +end + +CoD.Reimagined.QuestTimerArea.FadeOutQuestTimer = function(Menu, ClientInstance) + if ClientInstance.data ~= nil then + Menu.questTimerText:animateToState("fade_out", ClientInstance.data[1]) + else + Menu.questTimerText:animateToState("fade_out") + end +end + +CoD.Reimagined.QuestTimerArea.FadeInQuestTimer = function(Menu, ClientInstance) + if ClientInstance.data ~= nil then + Menu.questTimerText:animateToState("fade_in", ClientInstance.data[1]) + else + Menu.questTimerText:animateToState("fade_in") + end +end + CoD.Reimagined.ConvertNumToTime = function(num) local time = "" local hrs = 0