DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
GesturesMenu.c
Go to the documentation of this file.
2{
3 CATEGORIES, //special category selection
11
13{
14 protected int m_ID;
15 protected string m_Name;
18 protected bool m_CanPerformEmote;
19 //radial menu
22
23 void GestureMenuItem(int id, string name, GestureCategories category)
24 {
25 m_ID = id;
26 m_Name = name;
27 m_Category = category;
28 m_CanPerformEmote = true;
29
30 PlayerBase player;
31 if (Class.CastTo(player,GetGame().GetPlayer()) && category != GestureCategories.CATEGORIES)
32 {
33 m_EmoteClass = player.GetEmoteManager().GetNameEmoteMap().Get(id);
34 }
35 }
36
37 string GetName()
38 {
39 return m_Name;
40 }
41
43 {
44 string ret = "";
45 if (GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer() && m_EmoteClass && m_EmoteClass.GetInputActionName() != "")
46 {
48
49 if (button_map && button_map.Count() > 0)
50 {
51 TStringArray buttons;
52 for (int j = 0; j < button_map.Count(); j++)
53 {
54 if (j > 0)
55 {
56 ret += "; ";
57 }
58
59 buttons = button_map.GetElement(j);
60 for (int i = 0; i < buttons.Count(); i++)
61 {
62 if (i > 0)
63 {
64 ret += " + ";
65 }
66 ret += buttons[i];
67 }
68 }
69
70 }
71 }
72 return ret;
73 }
74
75 int GetID()
76 {
77 return m_ID;
78 }
79
81 {
82 return m_Category;
83 }
84
86 {
88 }
89
91 {
92 m_RadialMenuItemCard = widget;
93 }
94
95 void SetCanPerformEmote(bool state)
96 {
97 m_CanPerformEmote = state;
98 }
99
101 {
102 return m_CanPerformEmote;
103 }
104}
105
106class GesturesMenu extends UIScriptedMenu
107{
111
113
114 //
115 const string RADIAL_TEXT = "RadialText";
116 const string GESTURE_TEXT = "GestureNameText";
117 const string INPUT_TEXT = "InputActionText";
118 const string CATEGORY_NAME = "CategoryName";
119 //selections
121 protected bool m_IsCategorySelected;
122 protected bool m_IsMenuClosing;
123 protected int m_CurrentCategory;
124
125 //instance
126 static GesturesMenu instance;
127
128 //============================================
129 // GesturesMenu
130 //============================================
132 {
133 m_GestureItems = new ref array<ref GestureMenuItem>;
134
135 if ( !instance )
136 {
137 instance = this;
138 }
139
141 }
142
144 {
145 if (GetGame() && GetGame().GetMission())
146 {
147 GetGame().GetMission().RemoveActiveInputExcludes({"radialmenu"},false);
148 }
149 }
150
151 //============================================
152 // Menu Controls
153 //============================================
154 static void OpenMenu()
155 {
157 }
158
159 static void CloseMenu()
160 {
161 //execute on menu release
162 instance.OnMenuRelease();
163
165
166 //GetGame().GetMission().RemoveActiveInputExcludes({"radialmenu"},false);
167 }
168
169 protected void OnInputPresetChanged()
170 {
171 #ifdef PLATFORM_CONSOLE
172 UpdateControlsElements();
173 #endif
174 }
175
176 //============================================
177 // Init & Widget Events
178 //============================================
179 override Widget Init()
180 {
181 m_CurrentCategory = -1;
182
183 layoutRoot = GetGame().GetWorkspace().CreateWidgets( "gui/layouts/radial_menu/radial_gestures/day_z_gestures.layout" );
184 m_GestureItemCardPanel = layoutRoot.FindAnyWidget( RadialMenu.RADIAL_ITEM_CARD_CONTAINER );
185
186 //register gestures menu
187 RadialMenu.GetInstance().RegisterClass( this );
188
189 //delay updates until fully initialized
190 RadialMenu.GetInstance().SetWidgetInitialized(false);
191
192 //set radial menu properties
193 RadialMenu.GetInstance().SetWidgetProperties( "gui/layouts/radial_menu/radial_gestures/day_z_gesture_delimiter.layout" );
194
195 //create content (widgets) for items
196 RefreshGestures();
197
198 m_ToolbarPanel = layoutRoot.FindAnyWidget( "toolbar_bg" );
199 m_ToolbarPanel.Show( true );
200
201 //clear category name text
202 UpdateCategoryName( "" );
203
204 return layoutRoot;
205 }
206
207 override void OnShow()
208 {
209 super.OnShow();
210
212 if (mission)
213 {
214 IngameHud hud = IngameHud.Cast(mission.GetHud());
215 if (hud)
216 {
217 hud.ShowQuickbarUI(false);
218 }
219 }
220
221 SetFocus(layoutRoot);
222 m_IsMenuClosing = false;
223 }
224
225 override void OnHide()
226 {
227 super.OnHide();
228
230 if (mission)
231 {
232 IngameHud hud = IngameHud.Cast(mission.GetHud());
233 if (hud)
234 {
235 hud.ShowQuickbarUI(true);
236 }
237 }
238
239 m_IsMenuClosing = true;
240 }
241
242 override bool OnController( Widget w, int control, int value )
243 {
244 super.OnController( w, control, value );
245
246 RadialMenu.GetInstance().SetControlType( RadialMenuControlType.CONTROLLER );
247
248 return false;
249 }
250
251 override bool OnMouseEnter( Widget w, int x, int y )
252 {
253 super.OnMouseEnter( w, x, y );
254
255 RadialMenu.GetInstance().SetControlType( RadialMenuControlType.MOUSE );
256
257 return false;
258 }
259
260 override bool UseMouse()
261 {
262 return true;
263 }
264
265 override bool UseGamepad()
266 {
267 return true;
268 }
269
270 override void Update(float timeslice)
271 {
272 super.Update(timeslice);
273
274 //RefreshGestures(m_CurrentCategory);
275 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
276 if (m_CurrentCategory != GestureCategories.CATEGORIES && m_CurrentCategory != -1 && player)
277 {
278 for (int i = 0; i < m_GestureItems.Count(); i++)
279 {
280 UpdateQuickbarItemCard(m_GestureItems[i]);
281 }
282 }
283 }
284
286 {
287 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
288 if (player && m_CurrentCategory != -1)
289 {
290 bool can = player.GetEmoteManager().CanPlayEmote(gesture_item.GetID()) && !player.GetEmoteManager().IsEmotePlaying();
291 gesture_item.SetCanPerformEmote(can);
292 }
293 }
294
295 //============================================
296 // Gestures
297 //============================================
298 protected void RefreshGestures( GestureCategories category_id = -1 )
299 {
300 //create gestures content (widgets) based on categories
301 if ( category_id > -1 )
302 {
303 GetGestureItems( m_GestureItems, category_id);
304 m_CurrentCategory = category_id;
305 }
306 else
307 {
308 GetGestureItems( m_GestureItems, GestureCategories.CATEGORIES );
309 m_CurrentCategory = -1;
310 instance.m_IsCategorySelected = false;
311 }
312
313 CreateGestureContent();
314 UpdateControlsElements();
315 }
316
317 protected void GetGestureItems( out ref array<ref GestureMenuItem> gesture_items, GestureCategories category )
318 {
319 gesture_items.Clear();
320
321 //PC PLATFORM
322 //All categories
323 if ( category == GestureCategories.CATEGORIES )
324 {
325 gesture_items.Insert( new GestureMenuItem( GestureCategories.CATEGORY_1, "#STR_USRACT_EMOTE_CATEGORY_COMMS", category ) );
326 gesture_items.Insert( new GestureMenuItem( GestureCategories.CATEGORY_2, "#STR_USRACT_EMOTE_CATEGORY_INTERACTIONS", category ) );
327 gesture_items.Insert( new GestureMenuItem( GestureCategories.CATEGORY_3, "#STR_USRACT_EMOTE_CATEGORY_POSES", category ) );
328 gesture_items.Insert( new GestureMenuItem( GestureCategories.CATEGORY_4, "#STR_USRACT_EMOTE_CATEGORY_MISC", category ) );
329 }
330 //Category 1 - commands
331 else if ( category == GestureCategories.CATEGORY_1 )
332 {
333 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_POINT, "#STR_USRACT_ID_EMOTE_POINT", category ) );
334 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_MOVE, "#STR_USRACT_ID_EMOTE_MOVE", category ) );
335 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_HOLD, "#STR_USRACT_ID_EMOTE_HOLD", category ) );
336 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_LISTENING, "#STR_USRACT_ID_EMOTE_LISTENING", category ) );
337 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_DOWN, "#STR_USRACT_ID_EMOTE_DOWN", category ) );
338 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SILENT, "#STR_USRACT_ID_EMOTE_SILENT", category ) );
339 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_WATCHING, "#STR_USRACT_ID_EMOTE_WATCHING", category ) );
340 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_POINTSELF, "#STR_USRACT_ID_EMOTE_POINTSELF", category ) );
341 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_COME, "#STR_USRACT_ID_EMOTE_COME", category ) );
342 }
343 //Category 2 - interaction
344 else if ( category == GestureCategories.CATEGORY_2 )
345 {
346 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_GREETING, "#STR_USRACT_ID_EMOTE_GREETING", category ) );
347 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_TAUNT, "#STR_USRACT_ID_EMOTE_TAUNT", category ) );
348 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SHAKE, "#STR_USRACT_ID_EMOTE_SHAKE", category ) );
349 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_NOD, "#STR_USRACT_ID_EMOTE_NOD", category ) );
350 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_LOOKATME, "#STR_USRACT_ID_EMOTE_LOOKATME", category ) );
351 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_TAUNTELBOW, "#STR_USRACT_ID_EMOTE_TAUNTELBOW", category ) );
352 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_THUMB, "#STR_USRACT_ID_EMOTE_THUMB", category ) );
353 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_THUMBDOWN, "#STR_USRACT_ID_EMOTE_THUMBDOWN", category ) );
354 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_CLAP, "#STR_USRACT_ID_EMOTE_CLAP", category ) );
355 }
356 //Category 3 - poses
357 else if ( category == GestureCategories.CATEGORY_3 )
358 {
359 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SUICIDE, "#STR_USRACT_ID_EMOTE_SUICIDE", category ) );
360 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SURRENDER, "#STR_USRACT_ID_EMOTE_SURRENDER", category ) );
361 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SALUTE, "#STR_USRACT_ID_EMOTE_SALUTE", category ) );
362 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SITB, "#STR_USRACT_ID_EMOTE_SITB", category ) );
363 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_LYINGDOWN, "#STR_USRACT_ID_EMOTE_LYINGDOWN", category ) );
364 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SITA, "#STR_USRACT_ID_EMOTE_SITA", category ) );
365 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_CAMPFIRE, "#STR_USRACT_ID_EMOTE_CAMPFIRE", category ) );
366 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SHRUG, "#STR_USRACT_ID_EMOTE_SHRUG", category ) );
367 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_SOS, "#STR_USRACT_ID_EMOTE_SOS", category ) );
368 }
369 //Category 4 - special
370 else if ( category == GestureCategories.CATEGORY_4 )
371 {
372 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_DANCE, "#STR_USRACT_ID_EMOTE_DANCE", category ) );
373 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_HEART, "#STR_USRACT_ID_EMOTE_HEART", category ) );
374 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_FACEPALM, "#STR_USRACT_ID_EMOTE_FACEPALM", category ) );
375 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_TIMEOUT, "#STR_USRACT_ID_EMOTE_TIMEOUT", category ) );
376 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_THROAT, "#STR_USRACT_ID_EMOTE_THROAT", category ) );
377 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_VOMIT, "#STR_USRACT_ID_EMOTE_VOMIT", category ) );
378 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_RPS, "#STR_USRACT_ID_EMOTE_RPS", category ) );
379 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_TAUNTTHINK, "#STR_USRACT_ID_EMOTE_TAUNTTHINK", category ) );
380 gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_TAUNTKISS, "#STR_USRACT_ID_EMOTE_TAUNTKISS", category ) );
381 //gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_RPS_R, "#STR_USRACT_ID_EMOTE_RPS_R", category ) );
382 //gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_RPS_P, "#STR_USRACT_ID_EMOTE_RPS_P", category ) );
383 //gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_RPS_S, "#STR_USRACT_ID_EMOTE_RPS_S", category ) );
384 //gesture_items.Insert( new GestureMenuItem( EmoteConstants.ID_EMOTE_DEBUG, "ID_EMOTE_DEBUG", category ) );
385 }
386 }
387
388 protected void CreateGestureContent()
389 {
390 //delete existing gesture widgets
391 DeleteGestureItems();
392
393 for ( int i = 0; i < m_GestureItems.Count(); ++i )
394 {
395 GestureMenuItem gesture_item = m_GestureItems.Get( i );
396
397 //create item card
398 Widget gesture_item_card_widget = Widget.Cast( GetGame().GetWorkspace().CreateWidgets( "gui/layouts/radial_menu/radial_gestures/day_z_gesture_item_card.layout", m_GestureItemCardPanel ) );
399 gesture_item.SetRadialItemCard( gesture_item_card_widget );
400
401 //update item card widget
402 UpdateQuickbarItemCard( gesture_item );
403
404 //set data
405 gesture_item_card_widget.SetUserData( gesture_item );
406 }
407
408 //set radial parameters for content
409 if ( m_GestureItems.Count() > 0 )
410 {
411 RadialMenu radial_menu = RadialMenu.GetInstance();
412 radial_menu.SetRadiusOffset( 0 );
413 radial_menu.SetExecuteDistOffset( 0.5 );
414 radial_menu.SetOffsetFromTop( 0 );
415 radial_menu.SetItemCardRadiusOffset( 0.25 );
416 radial_menu.ActivateControllerTimeout( false );
417 }
418
419 //refresh radial menu
420 RadialMenu.GetInstance().Refresh();
421 }
422
423 protected void UpdateQuickbarItemCard( GestureMenuItem gesture_item )
424 {
425 Widget gesture_item_card_widget = gesture_item.GetRadialItemCard();
426 //texts
427 RichTextWidget gesture_text = RichTextWidget.Cast( gesture_item_card_widget.FindAnyWidget( GESTURE_TEXT ) );
428 RichTextWidget input_text = RichTextWidget.Cast( gesture_item_card_widget.FindAnyWidget( INPUT_TEXT ) );
429 gesture_text.SetText( gesture_item.GetName() );
430 bool input_name_available = gesture_item.GetBoundButtonText() != "";
431 input_text.Show(input_name_available);
432 if (input_name_available)
433 {
434 input_text.SetText(gesture_item.GetBoundButtonText());
435 }
436 //coloring
437 ProcessEmoteConditionRequest(gesture_item);
438 if (gesture_item.GetCanPerformEmote())
439 {
440 gesture_item_card_widget.SetFlags(WidgetFlags.DISABLED); //flag just seems to be...'there', useful for showing radial selector. Still...
441 gesture_text.SetColor(ARGB(255,255,255,255));
442 input_text.SetColor(ARGB(255,255,255,255));
443 }
444 else
445 {
446 gesture_item_card_widget.ClearFlags(WidgetFlags.DISABLED);
447 gesture_text.SetColor(ARGB(255,150,150,150));
448 input_text.SetColor(ARGB(255,150,150,150));
449 }
450 }
451
452 protected void DeleteGestureItems()
453 {
454 Widget child;
455 Widget child_to_destroy;
456
457 child = m_GestureItemCardPanel.GetChildren();
458 while ( child )
459 {
460 child_to_destroy = child;
461 child = child.GetSibling();
462
463 delete child_to_destroy;
464 }
465 }
466
468 protected void UpdateToolbar() {}
469
470 protected void UpdateCategoryName( string name )
471 {
472 if ( !m_CategoryNameText )
473 {
474 m_CategoryNameText = TextWidget.Cast( layoutRoot.FindAnyWidget( CATEGORY_NAME ) );
475 }
476
477 m_CategoryNameText.SetText( name );
478 }
479
480 //============================================
481 // Radial Menu Events
482 //============================================
483 //Common
485 {
486 }
487
488 //Mouse
490 {
491 MarkSelected( w );
492 }
493
495 {
496 UnmarkSelected( w );
497 }
498
500 {
501 }
502
505 {
506 if (instance.m_IsCategorySelected)
507 {
508 ExecuteSelectedItem();
509 }
510 else
511 {
512 ExecuteSelectedCategory( w );
513 }
514 }
515
518 {
519 BackOneLevel();
520 }
521
522 //Controller
524 {
525 MarkSelected( w );
526 }
527
529 {
530 UnmarkSelected( w );
531 }
532
534 {
535 }
536
538 {
539 if (instance.m_IsCategorySelected)
540 {
541 ExecuteSelectedItem();
542 }
543 else
544 {
545 ExecuteSelectedCategory( w );
546 }
547 }
548
550 {
551 BackOneLevel();
552 }
553
554 //Actions
555 protected void MarkSelected( Widget w )
556 {
557 instance.m_SelectedItem = w;
558
559 if ( w )
560 {
561 GestureMenuItem gesture_item;
562 w.GetUserData( gesture_item );
563
564 //is not category
565 /*
566 if ( gesture_item && gesture_item.GetCategory() != GestureCategories.CATEGORIES )
567 {
568 //alter item visual
569 //TextWidget text_widget = TextWidget.Cast( gesture_item.GetRadialItemCard().FindAnyWidget( RADIAL_TEXT ) );
570 //text_widget.SetColor( ARGB( 255, 66, 175, 95 ) );
571 }
572 */
573 }
574 }
575
576 protected void UnmarkSelected( Widget w )
577 {
578 instance.m_SelectedItem = NULL;
579
580 if ( w )
581 {
582 GestureMenuItem gesture_item;
583 w.GetUserData( gesture_item );
584
585 //is not category
586 /*
587 if ( gesture_item && gesture_item.GetCategory() != GestureCategories.CATEGORIES )
588 {
589 //alter item visual
590 //TextWidget text_widget = TextWidget.Cast( gesture_item.GetRadialItemCard().FindAnyWidget( RADIAL_TEXT ) );
591 //text_widget.SetColor( ARGB( 255, 255, 255, 255 ) );
592 }
593 */
594 }
595 }
596
597 protected void ExecuteSelectedCategory( Widget w )
598 {
599 //only when category is not picked yet
600 if ( w )
601 {
602 GestureMenuItem gesture_item;
603 w.GetUserData( gesture_item );
604
605 //is category
606 if ( !instance.m_IsCategorySelected && gesture_item.GetCategory() == GestureCategories.CATEGORIES )
607 {
608 //set category selected
609 instance.m_IsCategorySelected = true;
610
611 //show selected category gestures
612 GetGestureItems( m_GestureItems, gesture_item.GetID() );
613 CreateGestureContent();
614 RefreshGestures( gesture_item.GetID() );
615
616 //update category name text
617 UpdateCategoryName( gesture_item.GetName() );
618 }
619 /*else
620 {
621 ExecuteSelectedItem();
622 }*/
623 }
624 }
625
626 protected void ExecuteSelectedItem()
627 {
628 if ( instance.m_IsCategorySelected && instance.m_SelectedItem )
629 {
630 if ( !GetGame().IsDedicatedServer() )
631 {
632 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
633
634 GestureMenuItem gesture_item;
635 instance.m_SelectedItem.GetUserData( gesture_item );
636
637 if ( gesture_item )
638 {
639 if( player.GetEmoteManager() )
640 {
641 player.GetEmoteManager().CreateEmoteCBFromMenu( gesture_item.GetID() );
642 }
643 }
644 }
645 }
646 }
647
648 //only moves to the GestureCategories.CATEGORIES for now
649 protected void BackOneLevel()
650 {
651 RefreshGestures();
652 UpdateCategoryName( "" );
653 }
654
656 {
657 return m_IsMenuClosing;
658 }
659
660 void SetMenuClosing(bool state)
661 {
662 m_IsMenuClosing = state;
663 }
664
665 protected void UpdateControlsElements()
666 {
667 Widget toolbarBackSpacer = layoutRoot.FindAnyWidget("BackSpacer");
668 //Widget toolbarNavigateSpacer = layoutRoot.FindAnyWidget("NavigateSpacer");
669
670 RichTextWidget toolbarSelectIcon = RichTextWidget.Cast(layoutRoot.FindAnyWidget("SelectIcon"));
671 RichTextWidget toolbarBackIcon = RichTextWidget.Cast(layoutRoot.FindAnyWidget("BackIcon"));
672
673 string selectAction;
674 string backAction;
675 int controllerID;
676
677 if (GetGame().GetInput().IsEnabledMouseAndKeyboardEvenOnServer())
678 {
679 selectAction = "UAMenuSelect";
680 backAction = "UAMenuBack";
681 controllerID = EUAINPUT_DEVICE_KEYBOARDMOUSE;
682 }
683 else
684 {
685 selectAction = "UAUISelect";
686 backAction = "UAUIBack";
687 controllerID = EUAINPUT_DEVICE_CONTROLLER;
688 }
689
690 toolbarSelectIcon.SetText(InputUtils.GetRichtextButtonIconFromInputAction(selectAction, "", controllerID, InputUtils.ICON_SCALE_TOOLBAR));
691 toolbarBackIcon.SetText(InputUtils.GetRichtextButtonIconFromInputAction(backAction, "", controllerID, InputUtils.ICON_SCALE_TOOLBAR));
692 toolbarBackSpacer.Show(instance.m_IsCategorySelected);
693 }
694
695//-----------------------------------------------------------------
697 protected void OnMenuRelease()
698 {
699 }
700}
protected void OnInputPresetChanged()
Definition Inventory.c:157
ActionInput GetInput()
string m_Name
Mission mission
protected int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition Effect.c:49
int GetID()
Get the ID registered in SEffectManager.
Definition Effect.c:525
protected Widget m_RadialMenuItemCard
GestureCategories
Definition GesturesMenu.c:2
@ CATEGORY_5
Definition GesturesMenu.c:8
@ CATEGORIES
Definition GesturesMenu.c:3
@ CATEGORY_4
Definition GesturesMenu.c:7
@ CATEGORY_1
Definition GesturesMenu.c:4
@ CONSOLE_GESTURES
Definition GesturesMenu.c:9
@ CATEGORY_2
Definition GesturesMenu.c:5
@ CATEGORY_3
Definition GesturesMenu.c:6
protected Widget m_RadialMenuSelector
string GetBoundButtonText()
protected bool m_CanPerformEmote
void SetRadialItemCard(Widget widget)
protected EmoteBase m_EmoteClass
GestureCategories GetCategory()
void GestureMenuItem(int id, string name, GestureCategories category)
bool GetCanPerformEmote()
void SetCanPerformEmote(bool state)
Widget GetRadialItemCard()
Icon x
Icon y
PlayerBase GetPlayer()
string name
RadialMenuControlType
Definition RadialMenu.c:2
void RadialMenu()
Definition RadialMenu.c:84
proto native Mission GetMission()
proto native UIManager GetUIManager()
proto native WorkspaceWidget GetWorkspace()
Super root of all classes in Enforce script.
Definition EnScript.c:11
string GetInputActionName()
Definition EmoteBase.c:70
static const float ICON_SCALE_TOOLBAR
Definition InputUtils.c:15
static string GetRichtextButtonIconFromInputAction(notnull UAInput pInput, string pLocalizedDescription, int pInputDeviceType=EUAINPUT_DEVICE_CONTROLLER, float pScale=ICON_SCALE_NORMAL, bool pVertical=false)
Definition InputUtils.c:167
static map< int, ref TStringArray > GetComboButtonNamesFromInput(string pInputName, int pInputDeviceType)
returns a map of button names, combo or not
Definition InputUtils.c:33
Mission class.
Definition gameplay.c:670
Hud GetHud()
Definition gameplay.c:697
ScriptInvoker GetOnInputPresetChanged()
Definition gameplay.c:833
void RemoveActiveInputExcludes(array< string > excludes, bool bForceSupress=false)
deprecated
proto bool Insert(func fn, int flags=EScriptInvokerInsertFlags.IMMEDIATE)
insert method to list
proto native UIScriptedMenu EnterScriptedMenu(int id, UIMenuPanel parent)
Create & open menu with specific id (see MenuID) and set its parent.
bool Back()
Close top window on windows stack, returns true when any window is closed.
Definition UIManager.c:64
void SetMenuClosing(bool state)
void OnMousePressRight(Widget w)
RMB.
void OnControllerSelect(Widget w)
protected void UpdateCategoryName(string name)
void OnControllerDeselect(Widget w)
protected void BackOneLevel()
protected void CreateGestureContent()
protected void OnMenuRelease()
DEPRECATED.
override void Update(float timeslice)
protected Widget m_GestureItemCardPanel
protected void GetGestureItems(out ref array< ref GestureMenuItem > gesture_items, GestureCategories category)
protected void UnmarkSelected(Widget w)
void OnMousePressLeft(Widget w)
LMB.
protected ref array< ref GestureMenuItem > m_GestureItems
void OnMouseSelect(Widget w)
protected void ExecuteSelectedCategory(Widget w)
override bool UseMouse()
void OnControllerPressSelect(Widget w)
override void OnShow()
protected int m_CurrentCategory
protected void MarkSelected(Widget w)
protected void DeleteGestureItems()
protected void ExecuteSelectedItem()
static void CloseMenu()
protected void OnInputPresetChanged()
protected bool m_IsCategorySelected
void OnControllerExecute(Widget w)
static GesturesMenu instance
protected void UpdateControlsElements()
protected Widget m_ToolbarPanel
void OnControlsChanged(RadialMenuControlType type)
override void OnHide()
void OnMouseExecute(Widget w)
void OnControllerPressBack(Widget w)
override Widget Init()
override bool OnController(Widget w, int control, int value)
protected void UpdateQuickbarItemCard(GestureMenuItem gesture_item)
protected TextWidget m_CategoryNameText
protected Widget m_SelectedItem
override bool OnMouseEnter(Widget w, int x, int y)
static void OpenMenu()
void ProcessEmoteConditionRequest(GestureMenuItem gesture_item)
override bool UseGamepad()
void OnMouseDeselect(Widget w)
protected void RefreshGestures(GestureCategories category_id=-1)
protected void UpdateToolbar()
DEPRECATED.
protected bool m_IsMenuClosing
proto native CGame GetGame()
const int ID_EMOTE_LYINGDOWN
Definition constants.c:338
const int ID_EMOTE_THROAT
Definition constants.c:343
const int ID_EMOTE_NOD
Definition constants.c:370
const int ID_EMOTE_RPS
Definition constants.c:357
const int ID_EMOTE_TIMEOUT
Definition constants.c:352
const int ID_EMOTE_VOMIT
Definition constants.c:374
const int ID_EMOTE_SHAKE
Definition constants.c:371
const int ID_EMOTE_TAUNTTHINK
Definition constants.c:363
const int ID_EMOTE_THUMBDOWN
Definition constants.c:349
const int ID_EMOTE_DOWN
Definition constants.c:365
const int ID_EMOTE_FACEPALM
Definition constants.c:340
const int ID_EMOTE_SITA
Definition constants.c:347
const int ID_EMOTE_CAMPFIRE
Definition constants.c:346
const int ID_EMOTE_SOS
Definition constants.c:335
const int ID_EMOTE_SITB
Definition constants.c:348
const int ID_EMOTE_GREETING
Definition constants.c:334
const int ID_EMOTE_THUMB
Definition constants.c:342
const int ID_EMOTE_POINTSELF
Definition constants.c:361
const int ID_EMOTE_LOOKATME
Definition constants.c:362
const int ID_EMOTE_SILENT
Definition constants.c:355
const int ID_EMOTE_TAUNTELBOW
Definition constants.c:341
const int ID_EMOTE_SURRENDER
Definition constants.c:373
const int ID_EMOTE_LISTENING
Definition constants.c:360
const int ID_EMOTE_SHRUG
Definition constants.c:372
const int ID_EMOTE_MOVE
Definition constants.c:364
const int ID_EMOTE_TAUNTKISS
Definition constants.c:339
const int ID_EMOTE_TAUNT
Definition constants.c:337
const int ID_EMOTE_SALUTE
Definition constants.c:356
const int ID_EMOTE_DANCE
Definition constants.c:345
const int ID_EMOTE_COME
Definition constants.c:366
const int ID_EMOTE_HOLD
Definition constants.c:359
const int ID_EMOTE_SUICIDE
Definition constants.c:344
const int ID_EMOTE_WATCHING
Definition constants.c:358
const int ID_EMOTE_HEART
Definition constants.c:336
const int ID_EMOTE_CLAP
Definition constants.c:353
const int ID_EMOTE_POINT
Definition constants.c:354
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
string m_Category
folder structure eg. StaticEntities/Walls
Definition EnEntity.c:844
const int MENU_GESTURES
Definition constants.c:172
WidgetFlags
Definition EnWidgets.c:57
proto native void SetFocus(Widget w)
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.
proto native owned string GetName()
EInputDeviceType
Definition input.c:3
int ARGB(int a, int r, int g, int b)
Definition proto.c:322