Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Copyright © CD Projekt RED 2015
- */
- class CR4HudModuleBuffs extends CR4HudModuleBase
- {
- private var _currentEffects : array <CBaseGameplayEffect>;
- private var _previousEffects : array <CBaseGameplayEffect>;
- private var m_fxSetPercentSFF : CScriptedFlashFunction;
- private var m_flashValueStorage : CScriptedFlashValueStorage;
- private var iCurrentEffectsSize : int; default iCurrentEffectsSize = 0;
- private var bDisplayBuffs : bool; default bDisplayBuffs = true;
- event OnConfigUI()
- {
- var flashModule : CScriptedFlashSprite;
- var hud : CR4ScriptedHud;
- m_anchorName = "mcAnchorBuffs";
- m_flashValueStorage = GetModuleFlashValueStorage();
- super.OnConfigUI();
- flashModule = GetModuleFlash();
- m_fxSetPercentSFF = flashModule.GetMemberFlashFunction( "setPercent" );
- hud = (CR4ScriptedHud)theGame.GetHud();
- if (hud)
- {
- hud.UpdateHudConfig('BuffsModule', true);
- }
- }
- event OnTick( timeDelta : float )
- {
- var effectsSize : int;
- var effectArray : array< CBaseGameplayEffect >;
- var i : int;
- var offset : int;
- var duration : float;
- var initialDuration : float;
- if ( !CanTick( timeDelta ) )
- return true;
- _previousEffects = _currentEffects;
- _currentEffects.Clear();
- if( bDisplayBuffs && GetEnabled() )
- {
- offset = 0;
- effectArray = thePlayer.GetCurrentEffects();
- effectsSize = effectArray.Size();
- for ( i = 0; i < effectsSize; i += 1 )
- {
- // modCustomLocalizationFix++
- if(effectArray[i].ShowOnHUD() && effectArray[i].GetEffectNameLocalisationKey() != "" )
- // modCustomLocalizationFix--
- initialDuration = effectArray[i].GetInitialDuration();
- m_runword5Applied = true;
- if( initialDuration < 1.0 )
- {
- initialDuration = 1;
- duration = 1;
- }
- else
- {
- duration = effectArray[i].GetDurationLeft();
- if(duration < 0.f)
- duration = 0.f;
- }
- if(_currentEffects.Size() < i+1-offset)
- {
- _currentEffects.PushBack(effectArray[i]);
- m_fxSetPercentSFF.InvokeSelfThreeArgs( FlashArgNumber(i-offset),FlashArgNumber( duration ), FlashArgNumber( initialDuration ) );
- }
- else if( effectArray[i].GetEffectType() == _currentEffects[i-offset].GetEffectType() )
- {
- m_fxSetPercentSFF.InvokeSelfThreeArgs( FlashArgNumber(i-offset),FlashArgNumber( duration ), FlashArgNumber( initialDuration ) );
- }
- else
- {
- LogChannel('HUDBuffs',i+" something wrong");
- }
- }
- else
- {
- offset += 1;
- }
- }
- }
- if ( _currentEffects.Size() == 0 && _previousEffects.Size() == 0 )
- return true;
- if ( buffListHasChanged(_currentEffects, _previousEffects) )
- UpdateBuffs();
- }
- private function buffListHasChanged( currentEffects : array<CBaseGameplayEffect>, previousEffects : array<CBaseGameplayEffect> ) : bool
- {
- var i : int;
- var currentSize : int = currentEffects.Size();
- var previousSize : int = previousEffects.Size();
- if( currentSize != previousSize )
- return true;
- else
- {
- for( i = 0; i < currentSize; i+=1 )
- {
- if ( currentEffects[i] != previousEffects[i] )
- return true;
- }
- return false;
- }
- }
- function UpdateBuffs()
- {
- var l_flashObject : CScriptedFlashObject;
- var l_flashArray : CScriptedFlashArray;
- var i : int;
- l_flashArray = GetModuleFlashValueStorage()().CreateTempFlashArray();
- for(i = 0; i < Min(12,_currentEffects.Size()); i += 1)
- {
- // modCustomLocalizationFix++
- if(_currentEffects[i].ShowOnHUD() && _currentEffects[i].GetEffectNameLocalisationKey() != "" )
- // modCustomLocalizationFix--
- if(_currentEffects[i].IsNegative())
- // modCustomLocalizationFix--
- l_flashObject = m_flashValueStorage.CreateTempFlashObject();
- l_flashObject.SetMemberFlashBool("isVisible",_currentEffects[i].ShowOnHUD());
- l_flashObject.SetMemberFlashString("iconName",_currentEffects[i].GetIcon());
- l_flashObject.SetMemberFlashString("title",GetLocStringByKeyExt(_currentEffects[i].GetEffectNameLocalisationKey()));
- l_flashObject.SetMemberFlashBool("isPositive",_currentEffects[i].IsPositive());
- l_flashObject.SetMemberFlashNumber("duration",_currentEffects[i].GetDurationLeft() );
- l_flashObject.SetMemberFlashNumber("initialDuration", _currentEffects[i].GetInitialDuration());
- l_flashArray.PushBackFlashObject(l_flashObject);
- }
- }
- m_flashValueStorage.SetFlashArray( "hud.buffs", l_flashArray );
- protected function UpdateScale( scale : float, flashModule : CScriptedFlashSprite ) : bool
- {
- return true;
- }
- protected function UpdatePosition(anchorX:float, anchorY:float) : void
- {
- var l_flashModule : CScriptedFlashSprite;
- var tempX : float;
- var tempY : float;
- l_flashModule = GetModuleFlash();
- tempX = anchorX + (660.0 * (1.0 - theGame.GetUIHorizontalFrameScale()));
- tempY = anchorY + (645.0 * (1.0 - theGame.GetUIVerticalFrameScale()));
- l_flashModule.SetX( tempX );
- l_flashModule.SetY( tempY );
- }
- event OnBuffsDisplay( value : bool )
- {
- bDisplayBuffs = value;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement