Increased delay before showing health bars on game load, fixes some actors not showing up

This commit is contained in:
Eddoursul 2022-08-10 22:21:49 +02:00
parent 655d84bc41
commit 53b5d3bc08
2 changed files with 17 additions and 30 deletions

Binary file not shown.

View File

@ -121,24 +121,15 @@ event OnGameReload()
_currentlyDisplayedActors = new Form[4]
endif
UI.Invoke(HUD_MENU, WidgetRoot + ".removeAllActors")
RegisterForModEvent("Enderal_ShowActorHealth", "AddActors")
RegisterForModEvent("Enderal_HideActorHealth", "RemoveActors")
UI.Invoke(HUD_MENU, WidgetRoot + ".removeAllActors")
Utility.Wait(FadeOutDuration / 1000.0 + 1.0)
Actor PlayerRef = Game.GetForm(0x14) as Actor
if ! PlayerRef.IsInCombat()
int n = _currentlyDisplayedActors.Length
While n > 0
n -= 1
_currentlyDisplayedActors[n] = None
EndWhile
return
endif
Utility.Wait(FadeOutDuration / 1000.0 + 0.05)
int i = _currentlyDisplayedActors.Length
While i > 0
i -= 1
@ -150,15 +141,15 @@ event OnGameReload()
EndIf
EndWhile
Cell kCell = PlayerRef.GetParentCell()
Int iIndex = kCell.GetNumRefs(43) ; NPC
While iIndex
iIndex -= 1
Actor akActor = kCell.GetNthRef(iIndex, 43) as Actor
if akActor && akActor.IsPlayerTeammate()
AddActors(akActor)
Actor[] aFollowers = EnderalFunctions.GetPlayerFollowers()
i = aFollowers.length
while i > 0
i -= 1
if aFollowers[i] && _currentlyDisplayedActors.find(aFollowers[i]) < 0
AddActors(aFollowers[i])
endif
EndWhile
endwhile
Endevent
Function UpdateWidgetScale()
@ -189,29 +180,25 @@ Function AddActors(Form aForm)
if ! aForm
return
endif
AddActorRaw(aForm)
if _currentlyDisplayedActors.find(aForm) < 0
int i = _currentlyDisplayedActors.length
while i > 0
i = i - 1
if _currentlyDisplayedActors[i] == None
_currentlyDisplayedActors[i] = aForm
i = 0 ; Break
Endif
Endwhile
int i = _currentlyDisplayedActors.find(none)
if i >= 0
_currentlyDisplayedActors[i] = aForm
endif
;we do not have enough place in the array - the added actor will not be save game persistent
endif
AddActorRaw(aForm)
EndFunction
Function RemoveActors(Form aForm)
if ! aForm
return
endif
RemoveActorRaw(aForm)
int i = _currentlyDisplayedActors.find(aForm)
if i >= 0
_currentlyDisplayedActors[i] = None
Endif
RemoveActorRaw(aForm)
EndFunction
Function AddActorRaw(Form aActor)