Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_RadialMenuItemsComponent.c
Go to the documentation of this file.
1[EntityEditorProps(category: "GameScripted/UI/RadialMenu", description: "Radial menu for item selection")]
5
6class SCR_RadialMenuItemsComponent : ScriptComponent
7{
8 [Attribute()]
9 protected ref SCR_RadialMenuController m_MenuController;
10
11 protected const int FIRST_ITEM_SLOT = 3;
12 protected const int SLOT_COUNT = 10;
13
14 //------------------------------------------------------------------------------------------------
15 override void OnPostInit(IEntity owner)
16 {
17 if (System.IsConsoleApp())
18 return;
19
20 if (!GetGame().InPlayMode())
21 return;
22
23 // Will setup radial menu and take control over the menu
24 SetEventMask(owner, EntityEvent.INIT);
25
26 m_MenuController.GetOnTakeControl().Insert(OnControllerTakeControl);
27 }
28
29 //------------------------------------------------------------------------------------------------
30 override void EOnInit(IEntity owner)
31 {
32 if (!m_MenuController)
33 return;
34
35 m_MenuController.GetOnControllerChanged().Insert(OnControllerChanged);
36 }
37
38 //------------------------------------------------------------------------------------------------
39 protected void OnMenuOpen(SCR_SelectionMenu menu)
40 {
41 SCR_RadialMenu radialMenu = SCR_RadialMenu.Cast(menu);
42
43 radialMenu.ClearEntries();
44 CreateEntries(radialMenu);
45 }
46
47 //------------------------------------------------------------------------------------------------
48 protected void Update(SCR_RadialMenu radialMenu)
49 {
50 radialMenu.UpdateEntries();
51 }
52
53 //------------------------------------------------------------------------------------------------
56 {
57 SCR_RadialMenu radialMenu = controller.GetRadialMenu();
58 if (!radialMenu)
59 return;
60
61 radialMenu.GetOnOpen().Insert(OnMenuOpen);
62 }
63
64 //------------------------------------------------------------------------------------------------
65 protected void OnControllerChanged(SCR_RadialMenuController controller, bool hasControl)
66 {
67 SCR_RadialMenu radialMenu = controller.GetRadialMenu();
68 if (!radialMenu)
69 return;
70
71 radialMenu.GetOnOpen().Remove(OnMenuOpen);
72 }
73
74 //------------------------------------------------------------------------------------------------
75 protected void CreateEntries(notnull SCR_RadialMenu radialMenu)
76 {
78 if (!character)
79 return;
80
81 CharacterControllerComponent controller = character.GetCharacterController();
82 if (!controller)
83 return;
84
85 SCR_InventoryStorageManagerComponent storageManager = SCR_InventoryStorageManagerComponent.Cast(controller.GetInventoryStorageManager());
86 if (!storageManager)
87 return;
88
89 SCR_CharacterInventoryStorageComponent storage = storageManager.GetCharacterStorage();
90 if (!storage)
91 return;
92
93 // Receive items assigned to quick slots
94 array<ref SCR_SelectionMenuEntry> entries = {};
95 for (int i = FIRST_ITEM_SLOT; i < SLOT_COUNT; i++)
96 {
98 entries.Insert(itemEntry);
99 }
100
101 radialMenu.AddEntries(entries);
102 }
103}
ArmaReforgerScripted GetGame()
Definition game.c:1398
enum SCR_ECompassType EntityEditorProps(category:"GameScripted/Gadgets", description:"Compass", color:"0 0 255 255")
Prefab data class for compass component.
void OnControllerTakeControl(SCR_RadialMenuController controller)
override void OnMenuOpen()
void OnControllerChanged(SCR_RadialMenuController controller, bool hasControl)
const int FIRST_ITEM_SLOT
void CreateEntries(notnull SCR_RadialMenu radialMenu)
const int SLOT_COUNT
proto external int SetEventMask(notnull IEntity owner, int mask)
static IEntity GetLocalControlledEntity()
void EOnInit(IEntity owner)
SCR_FieldOfViewSettings Attribute
EntityEvent
Various entity events.
Definition EntityEvent.c:14