ingamehud.c 37 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313
  1. class IngameHud extends Hud
  2. {
  3. protected const float FADE_IN_TIME = 0.3;
  4. protected const float FADE_OUT_TIME = 0.3;
  5. protected const float HIDE_MENU_TIME = 5;
  6. protected ref map<int,string> m_StatesWidgetNames;
  7. protected ref map<int,ImageWidget> m_StatesWidgets; // [key] ImageWidget
  8. protected ref map<ImageWidget, int> m_TendencyStatusCritical; //array of icons that are blinking due to critical tendency status
  9. protected const float TENDENCY_BLINK_TIME = 0.25;
  10. protected float m_BlinkTime;
  11. protected ref map<int,string> m_BadgesWidgetNames;
  12. protected ref map<int,int> m_BadgesSupportedLevels;
  13. protected ref map<int,int> m_BadgesWidgetDisplay;
  14. protected ref map<int,ImageWidget> m_BadgesWidgets; // [key] ImageWidget
  15. protected bool m_IsTemperatureVisible;
  16. protected float m_TemperatureTimer;
  17. protected float m_TemperatureShowTime = 30;
  18. protected ImageWidget m_HeatBufferPlus;
  19. protected bool m_IsStaminaVisible;
  20. protected float m_StaminaTimer;
  21. protected float m_StaminaShowTime = 0.15;
  22. protected Widget m_HudPanelWidget; // always visible
  23. protected Widget m_QuickbarWidget;
  24. protected Widget m_VehicleHudPanels;
  25. protected ref InventoryQuickbar m_Quickbar;
  26. protected VehicleHudBase m_ActiveVehicleHUD;
  27. protected ref map<string, ref VehicleHudBase> m_VehicleHudMap;
  28. protected Widget m_GameStatusIconsPanel;
  29. protected ImageWidget m_HighPingA;
  30. protected ImageWidget m_HighPingB;
  31. protected ImageWidget m_LowServerPerfA;
  32. protected ImageWidget m_LowServerPerfB;
  33. protected ImageWidget m_ConnectionLost;
  34. protected Widget m_Notifiers;
  35. protected TextWidget m_BloodType;
  36. protected TextWidget m_BloodPosType;
  37. protected Widget m_Badges;
  38. protected ref Timer m_HideTimer;
  39. protected ref WidgetFadeTimer m_FadeTimerCrosshair;
  40. protected ref WidgetFadeTimer m_FadeTimerActionCursor;
  41. // protected ref WidgetFadeTimer m_FadeTimerWeaponMode;
  42. // protected ref WidgetFadeTimer m_FadeTimerZeroing;
  43. protected ref WidgetFadeTimer m_FadeTimerZeroingOld;
  44. protected ref WidgetFadeTimer m_FadeTimerMagazineName;
  45. protected ref WidgetFadeTimer m_FadeTimerWeaponName;
  46. protected ref WidgetFadeTimer m_FadeTimerWeaponStats;
  47. protected ref WidgetFadeTimer m_FadeTimerQuickbar;
  48. protected ref WidgetFadeTimer m_FadeTimerWalkieTalkie;
  49. protected ref WidgetFadeTimer m_FadeTimerWalkieTalkieText;
  50. protected ProgressBarWidget m_Stamina;
  51. protected Widget m_StaminaBackground;
  52. protected Widget m_Presence;
  53. protected Widget m_StanceProne;
  54. protected Widget m_StanceStand;
  55. protected Widget m_StanceStandWalk;
  56. protected Widget m_StanceCrouch;
  57. protected Widget m_StanceCar;
  58. protected Widget m_PresenceLevel0;
  59. protected Widget m_PresenceLevel1;
  60. protected Widget m_PresenceLevel2;
  61. protected Widget m_PresenceLevel3;
  62. protected Widget m_PresenceLevel4;
  63. protected ref Timer myTimer; //TEMP
  64. protected ref array<ref WidgetFadeTimer> m_FadeTimers = new array<ref WidgetFadeTimer>;
  65. protected Widget m_MouseSingleAction;
  66. protected Widget m_MouseContinuousAction;
  67. protected Widget m_RadialProgressBar1;
  68. protected Widget m_RadialProgressBarCrossHair;
  69. protected Widget m_RadialProgressBar;
  70. protected Widget m_CursorWidget;
  71. protected ImageWidget m_CursorIcon;
  72. protected Widget m_WalkieTalkie;
  73. protected Widget m_ActionWidget;
  74. protected TextWidget m_ActionDesc;
  75. protected TextWidget m_ActionItemDesc;
  76. protected Widget m_ActionItemQuantityWrapper
  77. protected ImageWidget m_ActionHealthMark;
  78. protected ProgressBarWidget m_ActionQuantityBar;
  79. protected Widget m_ActionQuantityBox;
  80. protected TextWidget m_ActionQuantityBoxText;
  81. protected ImageWidget m_ActionIcon;
  82. protected TextWidget m_ActionButtonText;
  83. protected Widget m_ActionIconFrame;
  84. protected Widget m_ActionMultipleItemsFrame;
  85. protected Widget m_ActionTarget;
  86. protected ActionTargetsCursor m_ActionTargetsCursor;
  87. // CrossHairs
  88. protected ImageWidget m_PermanentCrossHair;
  89. protected bool m_ZeroingKeyPressed;
  90. protected Widget m_HitIndicatorUp;
  91. protected Widget m_HitIndicatorDown;
  92. protected Widget m_HitIndicatorLeft;
  93. protected Widget m_HitIndicatorRight;
  94. protected Widget m_HitIndicatorSingle;
  95. ref array<ref HitDirectionEffectBase> m_HitDirEffectArray;
  96. protected ref IngameHudHeatBuffer m_HeatBufferUI;
  97. protected ref IngameHudVisibility m_HudVisibility;
  98. int m_PlayerSpineIndex;
  99. PlayerBase m_CurrentTaggedPlayer;
  100. Widget m_PlayerTag;
  101. TextWidget m_PlayerTagText;
  102. void IngameHud()
  103. {
  104. m_FadeTimerCrosshair = new WidgetFadeTimer;
  105. m_FadeTimerActionCursor = new WidgetFadeTimer;
  106. m_FadeTimerQuickbar = new WidgetFadeTimer;
  107. m_FadeTimerWalkieTalkie = new WidgetFadeTimer;
  108. m_FadeTimerWalkieTalkieText = new WidgetFadeTimer;
  109. m_StatesWidgets = new map<int, ImageWidget>; // [key] widgetName
  110. m_StatesWidgetNames = new map<int, string>;
  111. m_TendencyStatusCritical = new map<ImageWidget, int>;
  112. m_BadgesWidgets = new map<int, ImageWidget>; // [key] widgetName
  113. m_BadgesWidgetNames = new map<int, string>;
  114. m_BadgesSupportedLevels = new map<int, int>;
  115. m_BadgesWidgetDisplay = new map<int, int>;
  116. m_VehicleHudMap = new map<string, ref VehicleHudBase>;
  117. m_HudVisibility = new IngameHudVisibility();
  118. }
  119. override void Init( Widget hud_panel_widget )
  120. {
  121. m_HudVisibility.Init(hud_panel_widget);
  122. m_HudPanelWidget = hud_panel_widget;
  123. //Quickbar
  124. m_QuickbarWidget = m_HudPanelWidget.FindAnyWidget("QuickbarGrid");
  125. m_QuickbarWidget.Show( false );
  126. //TEMPORARY HACK!!! player is not present when Hud is being initialized
  127. myTimer = new Timer( CALL_CATEGORY_GAMEPLAY );
  128. myTimer.Run( 1, this, "InitQuickbar" );
  129. m_CursorWidget = m_HudPanelWidget.FindAnyWidget("CursorIcons");
  130. m_CursorWidget.Show(true);
  131. Class.CastTo(m_CursorIcon, m_HudPanelWidget.FindAnyWidget("Cursor"));
  132. //Permanent Crosshair
  133. Class.CastTo(m_PermanentCrossHair, m_HudPanelWidget.FindAnyWidget("PermanentCrossHair"));
  134. m_WalkieTalkie = m_HudPanelWidget.FindAnyWidget("WalkieTalkie");
  135. //Panels
  136. Class.CastTo(m_Stamina, m_HudPanelWidget.FindAnyWidget("StaminaBar"));
  137. m_Presence = m_HudPanelWidget.FindAnyWidget("PresencePanel");
  138. m_Badges = hud_panel_widget.FindAnyWidget("BadgesPanel");
  139. m_Notifiers = m_HudPanelWidget.FindAnyWidget("NotifiersPanel");
  140. m_BloodType = TextWidget.Cast( m_HudPanelWidget.FindAnyWidget("BloodType") );
  141. m_BloodPosType = TextWidget.Cast( m_HudPanelWidget.FindAnyWidget("BloodPosType") );
  142. // Init vehicle HUDs
  143. m_VehicleHudPanels = m_HudPanelWidget.FindAnyWidget("VehicleHUDPanels");
  144. CarHud carHud = new CarHud();
  145. m_VehicleHudMap.Insert("VehicleTypeCar", carHud);
  146. BoatHud boatHud = new BoatHud();
  147. m_VehicleHudMap.Insert("VehicleTypeBoat", boatHud);
  148. foreach (VehicleHudBase vehHud : m_VehicleHudMap)
  149. {
  150. vehHud.Init(m_VehicleHudPanels);
  151. vehHud.HidePanel();
  152. }
  153. m_StaminaBackground = m_HudPanelWidget.FindAnyWidget("StaminaBackground");
  154. m_StaminaBackground.Show(true);
  155. m_StanceProne = m_HudPanelWidget.FindAnyWidget("StanceProne");
  156. m_StanceCrouch = m_HudPanelWidget.FindAnyWidget("StanceCrouch");
  157. m_StanceStand = m_HudPanelWidget.FindAnyWidget("StanceStand");
  158. m_StanceStandWalk = m_HudPanelWidget.FindAnyWidget("StanceStandWalk");
  159. m_StanceCar = m_HudPanelWidget.FindAnyWidget("StanceCar");
  160. m_ActionTarget = m_HudPanelWidget.FindAnyWidget("ActionTargetsCursorWidget");
  161. //! gets scripted handler from widget
  162. m_ActionTarget.GetScript(m_ActionTargetsCursor);
  163. // heat buffer plus sign
  164. m_HeatBufferPlus = ImageWidget.Cast( m_HudPanelWidget.FindAnyWidget( "HeatBuffer1" ) );
  165. //Game State Icons
  166. m_GameStatusIconsPanel = m_HudPanelWidget.FindAnyWidget("GameStatusIcons");
  167. m_HighPingA = ImageWidget.Cast(m_HudPanelWidget.FindAnyWidget("HighPingA"));
  168. m_HighPingB = ImageWidget.Cast(m_HudPanelWidget.FindAnyWidget("HighPingB"));
  169. m_LowServerPerfA = ImageWidget.Cast(m_HudPanelWidget.FindAnyWidget("LowServerPerfA"));
  170. m_LowServerPerfB = ImageWidget.Cast(m_HudPanelWidget.FindAnyWidget("LowServerPerfB"));
  171. m_ConnectionLost = ImageWidget.Cast(m_HudPanelWidget.FindAnyWidget("ConnectionLost"));
  172. if ( m_HeatBufferPlus )
  173. m_HeatBufferPlus.Show( false );
  174. #ifndef NO_GUI
  175. m_Timer = new Timer( CALL_CATEGORY_GAMEPLAY );
  176. m_Timer.Run(0.333, this, "RefreshQuickbar", NULL, true );
  177. #endif
  178. InitBadgesAndNotifiers();
  179. m_PresenceLevel0 = hud_panel_widget.FindAnyWidget("Presence0");
  180. m_PresenceLevel1 = hud_panel_widget.FindAnyWidget("Presence1");
  181. m_PresenceLevel2 = hud_panel_widget.FindAnyWidget("Presence2");
  182. m_PresenceLevel3 = hud_panel_widget.FindAnyWidget("Presence3");
  183. m_PresenceLevel4 = hud_panel_widget.FindAnyWidget("Presence4");
  184. m_PresenceLevel0.Show( false );
  185. m_PresenceLevel1.Show( false );
  186. m_PresenceLevel2.Show( false );
  187. m_PresenceLevel3.Show( false );
  188. m_PresenceLevel4.Show( false );
  189. if (!g_Game.GetProfileOption(EDayZProfilesOptions.HUD))
  190. ShowHud(false);
  191. if (!g_Game.GetProfileOption(EDayZProfilesOptions.HUD_VEHICLE))
  192. SetVehicleHudDisabled(true);
  193. MissionGameplay.Cast(GetGame().GetMission()).GetConnectivityInvoker().Insert(OnConnectionIconsSettingsChanged);
  194. m_GameStatusIconsPanel.Show(g_Game.GetProfileOption(EDayZProfilesOptions.CONNECTIVITY_INFO));
  195. //ShowQuickBar(GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer() && g_Game.GetProfileOption(EDayZProfilesOptions.QUICKBAR)); //unreliable
  196. }
  197. void InitBadgesAndNotifiers()
  198. {
  199. // state notifiers
  200. m_StatesWidgetNames.Clear();
  201. m_StatesWidgets.Clear();
  202. m_StatesWidgetNames.Set( NTFKEY_THIRSTY, "Thirsty" );
  203. m_StatesWidgetNames.Set( NTFKEY_HUNGRY, "Hungry" );
  204. m_StatesWidgetNames.Set( NTFKEY_SICK, "Health" );
  205. m_StatesWidgetNames.Set( NTFKEY_BLEEDISH, "Blood" );
  206. m_StatesWidgetNames.Set( NTFKEY_FEVERISH, "Temperature" );
  207. m_Notifiers.Show( true );
  208. m_Badges.Show( true );
  209. int i = 0;
  210. int key = 0;
  211. for ( i = 0; i < m_StatesWidgetNames.Count(); i++ )
  212. {
  213. string widget_name = m_StatesWidgetNames.GetElement(i);
  214. key = m_StatesWidgetNames.GetKey(i);
  215. ImageWidget w;
  216. Class.CastTo(w, m_Notifiers.FindAnyWidget( String( "Icon" + widget_name ) ) );
  217. m_StatesWidgets.Set( key, w );
  218. w.Show( true );
  219. for ( int y = 0; y < 5; y++ )
  220. {
  221. w.LoadImageFile( y, "set:dayz_gui image:icon" + widget_name + y );
  222. }
  223. w.SetImage( 0 );
  224. float alpha = w.GetAlpha();
  225. w.SetColor( ARGB( alpha * 255, 220, 220, 220 ) ); //white
  226. m_TendencyStatusCritical.Remove( w );
  227. // clear all arrows
  228. for ( int x = 1; x < 4; x++ )
  229. {
  230. Class.CastTo(w, m_Notifiers.FindAnyWidget( String( widget_name + "ArrowUp" + x.ToString() ) ) );
  231. w.Show( false );
  232. Class.CastTo(w, m_Notifiers.FindAnyWidget( String( widget_name + "ArrowDown" + x.ToString() ) ) );
  233. w.Show( false );
  234. }
  235. }
  236. // badges
  237. m_BadgesWidgetNames.Clear();
  238. m_BadgesWidgets.Clear();
  239. m_BadgesWidgetDisplay.Clear();
  240. m_BadgesSupportedLevels.Clear();
  241. m_BadgesWidgetNames.Set( NTFKEY_FRACTURE, "Fracture" );
  242. m_BadgesWidgetNames.Set( NTFKEY_STUFFED, "Stomach" );
  243. m_BadgesWidgetNames.Set( NTFKEY_SICK, "Sick" );
  244. m_BadgesWidgetNames.Set( NTFKEY_WETNESS, "Wetness" );
  245. m_BadgesWidgetNames.Set( NTFKEY_POISONED, "Poisoned" );
  246. m_BadgesWidgetNames.Set( NTFKEY_BLEEDISH, "Bleeding" );
  247. m_BadgesWidgetNames.Set( NTFKEY_LIVES, "Shock" );
  248. m_BadgesWidgetNames.Set( NTFKEY_PILLS, "Pills" );
  249. m_BadgesWidgetNames.Set( NTFKEY_LEGS, "InjuredLegs" );
  250. // any badges not included bellow are just ON/OFF
  251. m_BadgesSupportedLevels.Insert(NTFKEY_LEGS,3);
  252. for ( i = 0; i < m_BadgesWidgetNames.Count(); i++ )
  253. {
  254. string badge_name = m_BadgesWidgetNames.GetElement( i);
  255. key = m_BadgesWidgetNames.GetKey( i );
  256. ImageWidget badge_widget;
  257. Class.CastTo(badge_widget, m_Badges.FindAnyWidget( badge_name ) );
  258. if (m_BadgesSupportedLevels.Contains(key))
  259. {
  260. int badgeCountMax = m_BadgesSupportedLevels.Get(key);
  261. for ( int q = 0; q < badgeCountMax; q++ )
  262. {
  263. badge_widget.LoadImageFile( q, "set:dayz_gui image:icon" + badge_name + q );
  264. }
  265. }
  266. m_BadgesWidgets.Set( key, badge_widget );
  267. badge_widget.Show( false );
  268. m_BadgesWidgetDisplay.Set( key, false );
  269. }
  270. m_HudVisibility.SetContextFlag(EHudContextFlags.NO_BADGE, true);
  271. }
  272. void OnConnectionIconsSettingsChanged(bool enabled)
  273. {
  274. m_GameStatusIconsPanel.Show(enabled);
  275. }
  276. override void OnResizeScreen()
  277. {
  278. float x, y;
  279. m_HudPanelWidget.GetScreenSize( x, y );
  280. m_HudPanelWidget.Update();
  281. m_Badges.Update();
  282. m_Notifiers.SetPos( 0, 0 );
  283. }
  284. override void OnPlayerLoaded()
  285. {
  286. PlayerBase player = PlayerBase.Cast(GetGame().GetPlayer());
  287. if (!player)
  288. Error("OnPlayerLoaded: Cannot retreive player");
  289. if (!player.IsUnconscious()) // uncon stop is not called when player respawns
  290. OnUnconsciousStop();
  291. player.GetOnUnconsciousStart().Insert(OnUnconsciousStart);
  292. player.GetOnUnconsciousStop().Insert(OnUnconsciousStop);
  293. }
  294. protected void OnUnconsciousStart()
  295. {
  296. m_HudVisibility.SetContextFlag(EHudContextFlags.UNCONSCIOUS, true);
  297. }
  298. protected void OnUnconsciousStop()
  299. {
  300. m_HudVisibility.SetContextFlag(EHudContextFlags.UNCONSCIOUS, false);
  301. }
  302. override void Show( bool show )
  303. {
  304. m_HudPanelWidget.Show(show);
  305. }
  306. override void ShowWalkieTalkie( bool show )
  307. {
  308. m_FadeTimerWalkieTalkie.Stop();
  309. m_FadeTimerWalkieTalkieText.Stop();
  310. m_WalkieTalkie.Show( show );
  311. }
  312. override void ShowWalkieTalkie( int fadeOutSeconds )
  313. {
  314. m_WalkieTalkie.Show(true);
  315. m_FadeTimerWalkieTalkie.Stop();
  316. m_FadeTimerWalkieTalkieText.Stop();
  317. m_FadeTimerWalkieTalkie.FadeOut( m_WalkieTalkie.FindAnyWidget("Icon") , fadeOutSeconds );
  318. m_FadeTimerWalkieTalkieText.FadeOut( m_WalkieTalkie.FindAnyWidget("Text") , fadeOutSeconds );
  319. }
  320. override void SetWalkieTalkieText( string text )
  321. {
  322. TextWidget txt;
  323. Class.CastTo(txt, m_WalkieTalkie.FindAnyWidget("Text"));
  324. txt.SetText(text);
  325. }
  326. override void SetCursorIcon( string icon )
  327. {
  328. if ( icon.Length() == 0 || icon == CursorIcons.None )
  329. m_CursorIcon.Show(false);
  330. else
  331. {
  332. m_CursorIcon.LoadImageFile( 0, icon );
  333. m_CursorIcon.Show(true);
  334. }
  335. }
  336. override void ShowCursor()
  337. {
  338. m_CursorWidget.Show( true );
  339. }
  340. override void HideCursor()
  341. {
  342. m_CursorWidget.Show( false );
  343. }
  344. override void SetCursorIconScale( string type, float percentage )
  345. {
  346. float x, y;
  347. m_CursorIcon.FindAnyWidget( type ).GetParent().GetSize( x, y );
  348. m_CursorIcon.FindAnyWidget( type ).GetParent().SetSize( x * percentage, y * percentage );
  349. }
  350. override void SetCursorIconOffset( string type, float x, float y )
  351. {
  352. m_CursorIcon.FindAnyWidget( type ).GetParent().SetPos( x, y );
  353. }
  354. override void SetCursorIconSize( string type, float x, float y )
  355. {
  356. m_CursorIcon.FindAnyWidget( type ).GetParent().SetSize( x, y );
  357. }
  358. #ifdef DIAG_DEVELOPER
  359. // Debug Crosshair
  360. override void SetPermanentCrossHair( bool show )
  361. {
  362. m_PermanentCrossHair.Show(show);
  363. }
  364. #endif
  365. override void DisplayNotifier( int key, int tendency, int status )
  366. {
  367. ImageWidget w;
  368. if ( key == NTFKEY_FEVERISH )
  369. {
  370. DisplayTendencyTemp( key, tendency, status );
  371. }
  372. else
  373. {
  374. DisplayTendencyNormal( key, tendency, status );
  375. }
  376. // tendency arrows
  377. string arrow_name = "ArrowUp";
  378. if ( tendency < 0 )
  379. {
  380. arrow_name = "ArrowDown";
  381. }
  382. tendency = Math.AbsInt( tendency );
  383. for ( int x = 1; x < 4; x++ )
  384. {
  385. Class.CastTo(w, m_Notifiers.FindAnyWidget( String( m_StatesWidgetNames.Get( key ) + "ArrowUp" + x.ToString() ) ) );
  386. if( w )
  387. w.Show( false );
  388. Class.CastTo(w, m_Notifiers.FindAnyWidget( String( m_StatesWidgetNames.Get( key ) + "ArrowDown" + x.ToString() ) ) );
  389. if( w )
  390. w.Show( false );
  391. }
  392. if( tendency > 0 )
  393. {
  394. string widget_name = m_StatesWidgetNames.Get( key ) + arrow_name + Math.Clamp( tendency, 1, 3 );
  395. Class.CastTo(w, m_Notifiers.FindAnyWidget( widget_name ) );
  396. if( w )
  397. w.Show( true );
  398. }
  399. }
  400. void DisplayTendencyNormal( int key, int tendency, int status )
  401. {
  402. ImageWidget w;
  403. Class.CastTo(w, m_Notifiers.FindAnyWidget( String( "Icon" + m_StatesWidgetNames.Get( key ) ) ) );
  404. if( w )
  405. {
  406. w.SetImage( Math.Clamp( status - 1, 0, 4 ) );
  407. float alpha = w.GetAlpha();
  408. switch( status )
  409. {
  410. case 3:
  411. w.SetColor( ARGB( alpha * 255, 220, 220, 0 ) ); //yellow
  412. m_TendencyStatusCritical.Remove( w ); //remove from blinking group
  413. break;
  414. case 4:
  415. w.SetColor( ARGB( alpha * 255, 220, 0, 0 ) ); //red
  416. m_TendencyStatusCritical.Remove( w ); //remove from blinking group
  417. break;
  418. case 5:
  419. if ( !m_TendencyStatusCritical.Contains( w ) )
  420. {
  421. m_TendencyStatusCritical.Insert( w, ARGB( alpha * 255, 220, 0, 0 ) ); //add to blinking group
  422. }
  423. break;
  424. default:
  425. w.SetColor( ARGB( alpha * 255, 220, 220, 220 ) ); //white
  426. m_TendencyStatusCritical.Remove( w ); //remove from blinking group
  427. break;
  428. }
  429. }
  430. }
  431. void DisplayTendencyTemp( int key, int tendency, int status )
  432. {
  433. ImageWidget w = ImageWidget.Cast( m_Notifiers.FindAnyWidget( String( "Icon" + m_StatesWidgetNames.Get( key ) ) ) );
  434. TextWidget temp_top = TextWidget.Cast( m_Notifiers.FindAnyWidget( "TemperatureValueTop" ) );
  435. TextWidget temp_bot = TextWidget.Cast( m_Notifiers.FindAnyWidget( "TemperatureValueBottom" ) );
  436. //string temp = player..ToString() + "°C";
  437. float alpha = w.GetAlpha();
  438. if ( tendency < 0 )
  439. {
  440. temp_top.Show( true );
  441. temp_bot.Show( false );
  442. }
  443. else
  444. {
  445. temp_top.Show( false );
  446. temp_bot.Show( true );
  447. }
  448. switch( status )
  449. {
  450. case 2:
  451. w.SetColor( ARGB( alpha * 255, 220, 220, 0 ) ); //WARNING_PLUS
  452. m_TendencyStatusCritical.Remove( w );
  453. w.SetImage( 1 );
  454. break;
  455. case 3:
  456. w.SetColor( ARGB( alpha * 255, 220, 0, 0 ) ); //CRITICAL_PLUS
  457. m_TendencyStatusCritical.Remove( w );
  458. w.SetImage( 0 );
  459. break;
  460. case 4:
  461. if ( !m_TendencyStatusCritical.Contains( w ) ) //BLINKING_PLUS
  462. {
  463. m_TendencyStatusCritical.Insert( w, ARGB( alpha * 255, 220, 0, 0 ) );
  464. }
  465. w.SetImage( 0 );
  466. break;
  467. case 5:
  468. w.SetColor( ARGB( alpha * 255, 0, 206, 209 ) ); //WARNING_MINUS
  469. m_TendencyStatusCritical.Remove( w );
  470. w.SetImage( 3 );
  471. break;
  472. case 6:
  473. w.SetColor( ARGB( alpha * 255, 30, 144, 220 ) ); //CRITICAL_MINUS
  474. m_TendencyStatusCritical.Remove( w );
  475. w.SetImage( 4 );
  476. break;
  477. case 7: //BLINKING_MINUS
  478. if ( !m_TendencyStatusCritical.Contains( w ) )
  479. {
  480. m_TendencyStatusCritical.Insert( w, ARGB( alpha * 255, 30, 144, 220 ) );
  481. }
  482. w.SetImage( 4 );
  483. break;
  484. default:
  485. w.SetColor( ARGB( alpha * 255, 220, 220, 220 ) ); //DEFAULT
  486. m_TendencyStatusCritical.Remove( w );
  487. w.SetImage( 2 );
  488. break;
  489. }
  490. }
  491. override void DisplayBadge( int key, int value )
  492. {
  493. TextWidget bleed_count = TextWidget.Cast( m_Badges.FindAnyWidget( "BleedingCount" ) );
  494. m_BadgesWidgetDisplay.Set( key, value );
  495. m_HudVisibility.SetContextFlag(EHudContextFlags.NO_BADGE, true);
  496. for ( int i = 0; i < m_BadgesWidgetDisplay.Count(); i++ )
  497. {
  498. int badge_key = m_BadgesWidgetDisplay.GetKey( i );
  499. int badge_value = m_BadgesWidgetDisplay.Get( badge_key );
  500. string badge_name = m_BadgesWidgetNames.Get( badge_key );
  501. ImageWidget badge_widget
  502. Class.CastTo(badge_widget, m_Badges.FindAnyWidget( badge_name ) );
  503. if ( badge_widget )
  504. {
  505. if ( badge_value > 0 )
  506. {
  507. if (m_BadgesSupportedLevels.Contains(badge_key))
  508. {
  509. int levelIndex = badge_value - 1;
  510. int maxSupportedIndex = m_BadgesSupportedLevels.Get(badge_key) - 1;
  511. if (maxSupportedIndex >= levelIndex)
  512. badge_widget.SetImage(levelIndex);
  513. }
  514. badge_widget.Show( true );
  515. m_HudVisibility.SetContextFlag(EHudContextFlags.NO_BADGE, false);
  516. if( badge_key == NTFKEY_BLEEDISH )
  517. {
  518. bleed_count.Show( true );
  519. bleed_count.SetText( m_BadgesWidgetDisplay.Get( badge_key ).ToString() );
  520. }
  521. }
  522. else
  523. {
  524. if( badge_key == NTFKEY_BLEEDISH )
  525. {
  526. bleed_count.Show( false );
  527. }
  528. badge_widget.Show( false );
  529. }
  530. }
  531. }
  532. }
  533. override void SetTemperature( string temp )
  534. {
  535. m_IsTemperatureVisible = true;
  536. TextWidget temp_top = TextWidget.Cast( m_Notifiers.FindAnyWidget( "TemperatureValueTop" ) );
  537. TextWidget temp_bot = TextWidget.Cast( m_Notifiers.FindAnyWidget( "TemperatureValueBottom" ) );
  538. temp_top.SetText( temp );
  539. temp_bot.SetText( temp );
  540. m_TemperatureTimer = 0;
  541. }
  542. void HideTemperature()
  543. {
  544. m_IsTemperatureVisible = false;
  545. TextWidget temp_top = TextWidget.Cast( m_Notifiers.FindAnyWidget( "TemperatureValueTop" ) );
  546. TextWidget temp_bot = TextWidget.Cast( m_Notifiers.FindAnyWidget( "TemperatureValueBottom" ) );
  547. temp_top.SetText( "" );
  548. temp_bot.SetText( "" );
  549. m_TemperatureTimer = 0;
  550. }
  551. override void SetStaminaBarVisibility( bool show )
  552. {
  553. //m_StaminaBackground.Show( show );
  554. //m_Stamina.Show( show );
  555. if ( show )
  556. {
  557. m_Stamina.SetAlpha(1);
  558. //m_Stamina.SetTextColor( ColorManager.COLOR_NORMAL_TEXT );
  559. }
  560. else
  561. {
  562. m_Stamina.SetAlpha(0.3);
  563. //m_Stamina.SetTextColor( ColorManager.RED_COLOR );
  564. }
  565. m_IsStaminaVisible = show;
  566. m_StaminaTimer = 0;
  567. }
  568. // state 0 = empty
  569. // state 1 = digesting
  570. // state 2 = full
  571. void SetStomachState( int state )
  572. {
  573. ImageWidget stomach = ImageWidget.Cast( m_Badges.FindAnyWidget( "Stomach" ) );
  574. stomach.LoadImageFile( 0, "set:dayz_gui image:iconStomach" + state );
  575. }
  576. override void SetStamina( int value , int range )
  577. {
  578. float sx, sy;
  579. float max = CfgGameplayHandler.GetStaminaMax();
  580. float percentage = 1;
  581. if (max != 0)
  582. {
  583. percentage = range / max;
  584. }
  585. if (range != 0)
  586. {
  587. m_Stamina.SetCurrent(( value / range ) * 100);
  588. }
  589. else
  590. {
  591. m_Stamina.SetCurrent(0);
  592. }
  593. m_Stamina.GetSize(sx, sy);
  594. m_Stamina.SetSize(percentage, sy);
  595. m_StaminaBackground.SetSize(1 - percentage, sy);
  596. // set health & blood values
  597. if (!GetGame().IsMultiplayer())
  598. {
  599. if (GetGame().GetPlayer())
  600. {
  601. PlayerBase player;
  602. Class.CastTo(player, GetGame().GetPlayer());
  603. if (player)
  604. {
  605. float h1 = player.GetHealth("","");
  606. float b1 = player.GetHealth("","Blood");
  607. GetDayZGame().GetBacklit().SetHealth(h1);
  608. GetDayZGame().GetBacklit().SetBlood(b1);
  609. }
  610. }
  611. }
  612. // update backlit
  613. GetDayZGame().GetBacklit().UpdatePlayer(false);
  614. }
  615. bool KeyPress(int key)
  616. {
  617. return false;
  618. }
  619. void ZeroingKeyPress()
  620. {
  621. m_ZeroingKeyPressed = true;
  622. }
  623. override void DisplayStance( int stance )
  624. {
  625. PlayerBase player;
  626. Class.CastTo(player, GetGame().GetPlayer() );
  627. Car car;
  628. if ( !Class.CastTo(car, player.GetDrivingVehicle()) )
  629. {
  630. if( stance == 1 )
  631. {
  632. bool is_walking;
  633. m_StanceStand.Show(!is_walking);
  634. m_StanceStandWalk.Show(is_walking);
  635. m_StanceCrouch.Show(false);
  636. m_StanceProne.Show(false);
  637. m_StanceCar.Show( false );
  638. }
  639. if( stance == 2 )
  640. {
  641. m_StanceStand.Show(false);
  642. m_StanceStandWalk.Show(false);
  643. m_StanceCrouch.Show(true);
  644. m_StanceProne.Show(false);
  645. m_StanceCar.Show( false );
  646. }
  647. if( stance == 3 )
  648. {
  649. m_StanceStand.Show(false);
  650. m_StanceStandWalk.Show(false);
  651. m_StanceCrouch.Show(false);
  652. m_StanceProne.Show(true);
  653. m_StanceCar.Show( false );
  654. }
  655. }
  656. else
  657. {
  658. m_StanceStand.Show(false);
  659. m_StanceCrouch.Show(false);
  660. m_StanceProne.Show(false);
  661. m_StanceCar.Show( true );
  662. }
  663. }
  664. override void DisplayPresence()
  665. {
  666. PlayerBase player;
  667. if ( Class.CastTo(player, GetGame().GetPlayer()) )
  668. {
  669. int presence_level = player.GetNoisePresenceInAI();
  670. m_PresenceLevel0.Show( false );
  671. m_PresenceLevel1.Show( false );
  672. m_PresenceLevel2.Show( false );
  673. m_PresenceLevel3.Show( false );
  674. m_PresenceLevel4.Show( false );
  675. if ( presence_level > 0 )
  676. {
  677. m_PresenceLevel0.Show( true );
  678. }
  679. if ( presence_level > 1 )
  680. {
  681. m_PresenceLevel1.Show( true );
  682. }
  683. if ( presence_level > 2 )
  684. {
  685. m_PresenceLevel2.Show( true );
  686. }
  687. if ( presence_level > 3 )
  688. {
  689. m_PresenceLevel3.Show( true );
  690. }
  691. if ( presence_level > 4 )
  692. {
  693. m_PresenceLevel4.Show( true );
  694. }
  695. }
  696. }
  697. override void ShowVehicleInfo()
  698. {
  699. PlayerBase currentPlayer = PlayerBase.Cast(GetGame().GetPlayer());
  700. if (!currentPlayer)
  701. return;
  702. Transport vehicle = Transport.Cast(currentPlayer.GetDrivingVehicle());
  703. if (!vehicle)
  704. return;
  705. VehicleHudBase vehHud = m_VehicleHudMap.Get(vehicle.GetVehicleType());
  706. if (vehHud)
  707. {
  708. vehHud.ShowVehicleInfo(currentPlayer);
  709. m_ActiveVehicleHUD = vehHud;
  710. m_ActiveVehicleHUD.ShowPanel();
  711. ShowVehicleHud(true);
  712. }
  713. }
  714. override void HideVehicleInfo()
  715. {
  716. if (m_ActiveVehicleHUD)
  717. {
  718. ShowVehicleHud(false);
  719. m_ActiveVehicleHUD.HideVehicleInfo();
  720. m_ActiveVehicleHUD.HidePanel();
  721. m_ActiveVehicleHUD = null;
  722. return;
  723. }
  724. }
  725. void RefreshVehicleHud(float timeslice)
  726. {
  727. DayZPlayer currentPlayer = GetGame().GetPlayer();
  728. if (!currentPlayer)
  729. return;
  730. HumanCommandVehicle cmdVehicle = currentPlayer.GetCommand_Vehicle();
  731. if (cmdVehicle && cmdVehicle.GetTransport())
  732. {
  733. if (!m_HudVisibility.IsContextFlagActive(EHudContextFlags.VEHICLE))
  734. m_HudVisibility.SetContextFlag(EHudContextFlags.VEHICLE, true);
  735. }
  736. else if (m_HudVisibility.IsContextFlagActive(EHudContextFlags.VEHICLE))
  737. m_HudVisibility.SetContextFlag(EHudContextFlags.VEHICLE, false);
  738. if (m_ActiveVehicleHUD)
  739. m_ActiveVehicleHUD.RefreshVehicleHud(timeslice);
  740. }
  741. void InitQuickbar()
  742. {
  743. if (m_Quickbar == NULL)
  744. {
  745. m_Quickbar = new InventoryQuickbar( m_QuickbarWidget );
  746. }
  747. }
  748. InventoryQuickbar GetQuickbar()
  749. {
  750. return m_Quickbar;
  751. }
  752. IngameHudVisibility GetHudVisibility()
  753. {
  754. return m_HudVisibility;
  755. }
  756. override void UpdateQuickbarGlobalVisibility()
  757. {
  758. #ifdef PLATFORM_CONSOLE
  759. ShowQuickBar(GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer());
  760. #else
  761. ShowQuickBar(g_Game.GetProfileOption(EDayZProfilesOptions.QUICKBAR));
  762. #endif
  763. }
  764. // disable quick bar visibility in options
  765. override void ShowQuickbarUI( bool show )
  766. {
  767. m_HudVisibility.SetContextFlag(EHudContextFlags.QUICKBAR_DISABLE, !show);
  768. }
  769. // hide quick bar
  770. override void ShowQuickbarPlayer( bool show )
  771. {
  772. m_HudVisibility.SetContextFlag(EHudContextFlags.QUICKBAR_HIDE, !show);
  773. }
  774. // hide left HUD elements
  775. override void ShowHudPlayer( bool show )
  776. {
  777. m_HudVisibility.SetContextFlag(EHudContextFlags.HUD_HIDE, !show);
  778. }
  779. // set visibility of left/right HUD when another menu opens/closes
  780. override void ShowHudUI( bool show )
  781. {
  782. m_HudVisibility.SetContextFlag(EHudContextFlags.MENU_OPEN, !show);
  783. }
  784. // switches with inventory open in cases where UI is otherwise hidden
  785. override void ShowHudInventory( bool show )
  786. {
  787. m_HudVisibility.SetContextFlag(EHudContextFlags.INVENTORY_OPEN, show);
  788. }
  789. //! global setting -> used to determine visibility based on platform
  790. override void ShowQuickBar( bool show )
  791. {
  792. m_HudVisibility.SetContextFlag(EHudContextFlags.QUICKBAR_GLOBAL, !show);
  793. }
  794. // disable HUD through options menu
  795. override void ShowHud( bool show )
  796. {
  797. m_HudVisibility.SetContextFlag(EHudContextFlags.HUD_DISABLE, !show);
  798. ShowHudPlayer(true);
  799. }
  800. //! enter/exit driver seat
  801. void ShowVehicleHud(bool state)
  802. {
  803. m_HudVisibility.SetContextFlag(EHudContextFlags.DRIVER, state);
  804. }
  805. //! disable vehicle HUD through options menu
  806. void SetVehicleHudDisabled(bool state)
  807. {
  808. m_HudVisibility.SetContextFlag(EHudContextFlags.VEHICLE_DISABLE, state);
  809. }
  810. override void SetConnectivityStatIcon(EConnectivityStatType type, EConnectivityStatLevel level)
  811. {
  812. if (type == EConnectivityStatType.PING)
  813. {
  814. switch (level)
  815. {
  816. case EConnectivityStatLevel.OFF:
  817. m_HighPingA.Show(false);
  818. m_HighPingB.Show(false);
  819. break;
  820. case EConnectivityStatLevel.LEVEL1:
  821. m_HighPingA.Show(true);
  822. m_HighPingB.Show(false);
  823. break;
  824. case EConnectivityStatLevel.LEVEL2:
  825. m_HighPingA.Show(false);
  826. m_HighPingB.Show(true);
  827. break;
  828. }
  829. }
  830. else if (type == EConnectivityStatType.SERVER_PERF)
  831. {
  832. switch (level)
  833. {
  834. case EConnectivityStatLevel.OFF:
  835. m_LowServerPerfA.Show(false);
  836. m_LowServerPerfB.Show(false);
  837. break;
  838. case EConnectivityStatLevel.LEVEL1:
  839. m_LowServerPerfA.Show(true);
  840. m_LowServerPerfB.Show(false);
  841. break;
  842. case EConnectivityStatLevel.LEVEL2:
  843. m_LowServerPerfA.Show(false);
  844. m_LowServerPerfB.Show(true);
  845. break;
  846. }
  847. }
  848. else if (type == EConnectivityStatType.CONN_LOST)
  849. {
  850. switch (level)
  851. {
  852. case EConnectivityStatLevel.OFF:
  853. m_ConnectionLost.Show(false);
  854. break;
  855. case EConnectivityStatLevel.LEVEL1:
  856. m_ConnectionLost.Show(true);
  857. break
  858. }
  859. }
  860. }
  861. override void RefreshQuickbar( bool itemChanged = false )
  862. {
  863. if (!itemChanged && !m_HudVisibility.IsElementVisible(EHudElement.QUICKBAR)) // Don't update when it is hidden or disabled
  864. return;
  865. if ( itemChanged )
  866. {
  867. UIManager manager = GetGame().GetUIManager();
  868. InventoryMenu inventory = InventoryMenu.Cast(manager.FindMenu( MENU_INVENTORY ));
  869. MissionGameplay mission = MissionGameplay.Cast(GetGame().GetMission());
  870. if ( mission )
  871. {
  872. inventory = mission.GetInventory();
  873. }
  874. if ( inventory )
  875. {
  876. inventory.RefreshQuickbar();
  877. }
  878. }
  879. if ( m_Quickbar )
  880. {
  881. m_Quickbar.UpdateItems( m_QuickbarWidget );
  882. }
  883. }
  884. Widget GetHudPanelWidget()
  885. {
  886. return m_HudPanelWidget;
  887. }
  888. override void UpdateBloodName()
  889. {
  890. PlayerBase player;
  891. Class.CastTo(player, GetGame().GetPlayer() );
  892. if( player )
  893. {
  894. string blood_name;
  895. bool positive;
  896. BloodTypes.GetBloodTypeName( player.GetBloodType(), blood_name, positive );
  897. bool blood_type_visible = player.HasBloodTypeVisible();
  898. if( blood_type_visible )
  899. {
  900. m_BloodType.SetText( blood_name );
  901. if( positive )
  902. m_BloodPosType.SetText( "+" );
  903. else
  904. m_BloodPosType.SetText( "-" );
  905. }
  906. else
  907. {
  908. m_BloodType.SetText( "" );
  909. m_BloodPosType.SetText( "" );
  910. }
  911. }
  912. }
  913. void RefreshPlayerTags()
  914. {
  915. if( GetGame().GetPlayer() )
  916. {
  917. bool found = false;
  918. vector head_pos = GetGame().GetCurrentCameraPosition();
  919. float distance;
  920. foreach( Man player : ClientData.m_PlayerBaseList )
  921. {
  922. vector target_player = player.GetPosition();
  923. distance = vector.Distance( head_pos, target_player );
  924. target_player[1] = target_player[1] + 1.2;
  925. if( distance <= 15 && player != GetGame().GetPlayer() )
  926. {
  927. vector screen_pos = GetGame().GetScreenPosRelative( target_player );
  928. vector end_pos = head_pos + GetGame().GetCurrentCameraDirection() * 25;
  929. RaycastRVParams params = new RaycastRVParams( head_pos, end_pos, GetGame().GetPlayer(), 0 );
  930. params.sorted = true;
  931. array<ref RaycastRVResult> results = new array<ref RaycastRVResult>;
  932. DayZPhysics.RaycastRVProxy( params, results );
  933. if( results.Count() > 0 )
  934. {
  935. if( results.Get( 0 ).obj == player )
  936. {
  937. m_CurrentTaggedPlayer = PlayerBase.Cast( player );
  938. found = true;
  939. }
  940. }
  941. }
  942. }
  943. if( !found )
  944. {
  945. m_CurrentTaggedPlayer = null;
  946. }
  947. }
  948. }
  949. void ShowPlayerTag( float timeslice )
  950. {
  951. if ( m_CurrentTaggedPlayer && m_CurrentTaggedPlayer.GetIdentity() )
  952. {
  953. if ( !m_PlayerTag )
  954. {
  955. m_PlayerTag = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/hud/hud_player_tag.layout");
  956. m_PlayerTagText = TextWidget.Cast( m_PlayerTag.FindAnyWidget( "TagText" ) );
  957. }
  958. m_PlayerSpineIndex = m_CurrentTaggedPlayer.GetBoneIndex( "Spine2" );
  959. vector player_pos = m_CurrentTaggedPlayer.GetBonePositionWS( m_PlayerSpineIndex );
  960. vector screen_pos = GetGame().GetScreenPosRelative( player_pos );
  961. if ( screen_pos[2] > 0 )
  962. {
  963. if ( screen_pos[0] > 0 && screen_pos[0] < 1 )
  964. {
  965. if ( screen_pos[1] > 0 && screen_pos[1] < 1 )
  966. {
  967. m_PlayerTagText.SetAlpha( Math.Clamp( m_PlayerTagText.GetAlpha() + timeslice * 10, 0, 1 ) );
  968. m_PlayerTag.SetPos( 0.55, 0.55 );
  969. m_PlayerTagText.SetText( m_CurrentTaggedPlayer.GetIdentity().GetPlainName() );
  970. //m_PlayerTagText.SetSize( 1, 1 - screen_pos[2] / 25 );
  971. return;
  972. }
  973. }
  974. }
  975. }
  976. if ( m_PlayerTag )
  977. {
  978. float new_alpha = Math.Clamp( m_PlayerTagText.GetAlpha() - timeslice * 10, 0, 1 );
  979. m_PlayerTagText.SetAlpha( Math.Clamp( m_PlayerTagText.GetAlpha() - timeslice * 10, 0, 1 ) );
  980. if ( new_alpha == 0 )
  981. {
  982. m_PlayerTagText.SetText( "" );
  983. m_CurrentTaggedPlayer = null;
  984. }
  985. }
  986. }
  987. override void Update( float timeslice )
  988. {
  989. super.Update( timeslice );
  990. m_ActionTargetsCursor.Update();
  991. DisplayPresence();
  992. //
  993. //modifiers - tendency status (critical)
  994. if ( m_BlinkTime > TENDENCY_BLINK_TIME )
  995. {
  996. //get color & alpha
  997. if ( m_TendencyStatusCritical.Count() > 0 )
  998. {
  999. for ( int i = 0; i < m_TendencyStatusCritical.Count(); ++i )
  1000. {
  1001. ImageWidget widget = m_TendencyStatusCritical.GetKey( i );
  1002. int alpha = widget.GetAlpha() * 255;
  1003. int color;
  1004. int colorA = ARGB( alpha, 255, 255, 255 );
  1005. int colorB = m_TendencyStatusCritical.Get( widget );
  1006. //set new color to different color
  1007. if ( widget.GetColor() == colorA )
  1008. {
  1009. color = colorB;
  1010. }
  1011. else
  1012. {
  1013. color = colorA;
  1014. }
  1015. widget.SetColor( color );
  1016. }
  1017. }
  1018. m_BlinkTime = 0; //reset
  1019. }
  1020. else
  1021. {
  1022. m_BlinkTime += timeslice;
  1023. }
  1024. if( m_IsTemperatureVisible )
  1025. {
  1026. m_TemperatureTimer += timeslice;
  1027. if( m_TemperatureTimer > m_TemperatureShowTime )
  1028. {
  1029. HideTemperature();
  1030. }
  1031. }
  1032. if ( !m_IsStaminaVisible )
  1033. {
  1034. m_StaminaTimer += timeslice;
  1035. if ( m_StaminaTimer > m_StaminaShowTime )
  1036. {
  1037. SetStaminaBarVisibility( true );
  1038. }
  1039. }
  1040. if ( m_HitDirEffectArray && m_HitDirEffectArray.Count() > 0 )
  1041. {
  1042. UpdateHitDirEffects(timeslice);
  1043. CleanupHitDirEffects();
  1044. }
  1045. RefreshVehicleHud(timeslice);
  1046. if (!m_HudVisibility.IsContextFlagActive(IngameHudVisibility.HUD_HIDE_FLAGS) && m_HeatBufferUI && m_HeatBufferUI.CanUpdate())
  1047. m_HeatBufferUI.Update(timeslice);
  1048. #ifdef PLATFORM_PS4
  1049. RefreshPlayerTags();
  1050. ShowPlayerTag(timeslice);
  1051. #endif
  1052. }
  1053. override void SpawnHitDirEffect(DayZPlayer player, float hit_direction,float intensity_max)
  1054. {
  1055. if (HitDirectionEffectBase.m_Mode == HitDirectionModes.DISABLED)
  1056. {
  1057. return;
  1058. }
  1059. if (m_HitDirEffectArray == null)
  1060. {
  1061. m_HitDirEffectArray = new array<ref HitDirectionEffectBase>;
  1062. }
  1063. HitDirectionEffectBase hiteff = HitDirectionEffectBase.Cast(HitDirectionEffectBase.GetCurrentType().Spawn());
  1064. hiteff.Init(player,hit_direction,intensity_max);
  1065. m_HitDirEffectArray.Insert(hiteff);
  1066. }
  1067. void UpdateHitDirEffects( float timeslice )
  1068. {
  1069. for (int i = 0; i < m_HitDirEffectArray.Count(); i++)
  1070. {
  1071. m_HitDirEffectArray[i].Update(timeslice);
  1072. }
  1073. }
  1074. void CleanupHitDirEffects()
  1075. {
  1076. for (int i = m_HitDirEffectArray.Count() - 1; i > -1; i--)
  1077. {
  1078. if ( m_HitDirEffectArray[i].DurationCheck() )
  1079. {
  1080. m_HitDirEffectArray.Remove(i);
  1081. }
  1082. }
  1083. }
  1084. override void InitHeatBufferUI(Man player)
  1085. {
  1086. m_HeatBufferUI = new IngameHudHeatBuffer(m_HudPanelWidget, PlayerBase.Cast(player));
  1087. }
  1088. void Debug()
  1089. {
  1090. foreach (int val:m_BadgesWidgetDisplay)
  1091. {
  1092. int key = m_BadgesWidgetDisplay.GetKeyByValue(val);
  1093. Print(EnumTools.EnumToString(eDisplayElements, key));
  1094. Print(val);
  1095. Print("---------------------");
  1096. }
  1097. }
  1098. //------------------------------------------
  1099. //ye olde unused methods
  1100. // everything below is DEPRECATED
  1101. protected Widget m_VehiclePanel;
  1102. protected Widget m_LeftHudPanelWidget;
  1103. protected Widget m_PlayerPanelWidget;
  1104. protected Widget m_StancePanel;
  1105. protected Widget m_SpecializatonPanel;
  1106. protected Widget m_SpecializationIcon;
  1107. protected Widget m_BadgeNotifierDivider;
  1108. protected bool m_VehicleHudState;
  1109. protected bool m_VehicleHudDisabled;
  1110. protected bool m_IsVehicleHudVisible;
  1111. protected bool m_AnyBadgeVisible;
  1112. protected bool m_IsQuickbarVisible;
  1113. protected bool m_QuickbarHideUI;
  1114. protected bool m_QuickbarHidePlayer;
  1115. protected bool m_QuickbarState;
  1116. protected bool m_HudHideUI;
  1117. protected bool m_HudHidePlayer;
  1118. protected bool m_HudInventory;
  1119. protected bool m_HudState;
  1120. protected bool m_IsHudVisible;
  1121. protected bool m_Faded;
  1122. protected bool m_IsInVehicle;
  1123. protected ref array<VehicleHudBase> m_VehicleHudArray;
  1124. int m_VehicleGearCount = -1;
  1125. float m_TimeSinceLastEngineLightChange;
  1126. bool m_VehicleHasOil;
  1127. bool m_VehicleHasCoolant;
  1128. //DEPRECATED
  1129. void HideQuickbarTimer();
  1130. void RefreshVehicleHudVisibility();
  1131. void RefreshQuickbarVisibility();
  1132. void RefreshHudVisibility();
  1133. void UpdateSpecialtyMeter(float x, float y);
  1134. void SetLeftStatsVisibility(bool visible);
  1135. bool IsQuickbarVisible(){return false;}
  1136. bool IsHideQuickbarPlayer(){return false;}
  1137. bool GetQuickBarState(){return false;}
  1138. bool IsHudVisible(){return false;}
  1139. bool IsHideHudPlayer(){return false;}
  1140. bool GetHudState(){return false;}
  1141. }