Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_DataDisplayGadget.c
Go to the documentation of this file.
2{
3 [Attribute("{6A90C4A4FEAE57A5}UI/layouts/Gadgets/BallisticTable/BallisticTableRenderTarget.layout", UIWidgets.ResourceNamePicker, "Layout name", "layout", category: "Layouts")]
5
6 [Attribute(desc: "List of pages available for this ballistic data", category: "Ballistics")]
7 protected ref array<ref SCR_BaseDataPageConfig> m_aPages;
8
9 [Attribute("SOUND_PICK_UP", desc: "Name of a sound event that will be played when page is changed")]
10 protected string m_sPageTurnSoundEventName;
11
12 //------------------------------------------------------------------------------------------------
17
18 //------------------------------------------------------------------------------------------------
23
24 //------------------------------------------------------------------------------------------------
26 {
27 return m_aPages.Count();
28 }
29
30 //------------------------------------------------------------------------------------------------
34 {
35 if (!m_aPages.IsIndexValid(pageID))
36 return null;
37
38 return m_aPages[pageID];
39 }
40
41 //------------------------------------------------------------------------------------------------
44 int GetPages(notnull out array<SCR_BaseDataPageConfig> outPages)
45 {
46 outPages.Clear();
47 foreach (SCR_BaseDataPageConfig page : m_aPages)
48 {
49 outPages.Insert(page);
50 }
51
52 return outPages.Count();
53 }
54}
55
56class SCR_DataDisplayGadgetComponent : SCR_GadgetComponent
57{
59
60 protected RTTextureWidget m_wRenderTargetTexture
62 protected int m_iNumberOfPages;
63 protected int m_iCurrentPageID;
64
65 const string PAGE_NUMBER_NAME = "PageNumber";
66 const string PAGE_NUMBER_FORMAT = "%1 / %2";
67
68 //------------------------------------------------------------------------------------------------
71 {
72 return m_iNumberOfPages;
73 }
74
75 //------------------------------------------------------------------------------------------------
78 void ChangePage(int direction = 0)
79 {
80 if (!m_wRenderTargetTexture)
81 return;
82
84
87
88 if (m_iCurrentPageID < 0)
90
91 UpdateData();
92 }
93
94 //------------------------------------------------------------------------------------------------
96 protected void UpdateData(bool playSound = true)
97 {
98 if (!m_wRootWidget)
99 return;
100
101 const IEntity owner = GetOwner();
104 if (!page)
105 return;
106
107 Widget contentHolder = m_wRootWidget.GetChildren();
108 if (!contentHolder)
109 return;
110
111 m_wRenderTargetTexture.SetEnabled(true);
112 page.DrawPageData(contentHolder, owner, this, m_iCurrentPageID);
113 m_wRenderTargetTexture.SetEnabled(false);
114
115 if (playSound)
116 SCR_SoundManagerModule.CreateAndPlayAudioSource(owner, data.GetPageChangeSoundName());
117
118 RplComponent rpl = RplComponent.Cast(owner.FindComponent(RplComponent));
119 if (!rpl || !rpl.IsOwner())
120 return;
121
123 }
124
125 //------------------------------------------------------------------------------------------------
126 protected override void ModeSwitch(EGadgetMode mode, IEntity charOwner)
127 {
128 super.ModeSwitch(mode, charOwner);
129
130 if (mode != EGadgetMode.IN_HAND)
131 return;
132
134 return;
135
136 ChangePage();
137 m_iOpacityMapId = 1;//make render target visible
138 }
139
140 //------------------------------------------------------------------------------------------------
141 protected override void ModeClear(EGadgetMode mode)
142 {
143 super.ModeClear(mode);
144
145 if (mode == EGadgetMode.IN_HAND)
146 {
147 m_iOpacityMapId = 0;//make render target invisible
149 }
150 }
151
152 //------------------------------------------------------------------------------------------------
153 protected bool InitializeRenderTarget()
154 {
155 IEntity owner = GetOwner();
157 if (!data)
158 return false;
159
160 if (data.GetLayoutName() == ResourceName.Empty)
161 return false;
162
163 m_wRootWidget = GetGame().GetWorkspace().CreateWidgets(data.GetLayoutName());
164 if (!m_wRootWidget)
165 return false;
166
167 m_wRenderTargetTexture = RTTextureWidget.Cast(m_wRootWidget.FindAnyWidget("RTTexture0"));
168 if (!m_wRenderTargetTexture)
169 return false;
170
171 m_wRenderTargetTexture.SetRenderTarget(owner);
172 m_wRenderTargetTexture.SetEnabled(false);
173 return true;
174 }
175
176 //------------------------------------------------------------------------------------------------
177 protected void ClearRenderTarget()
178 {
179 if (m_wRootWidget)
180 m_wRootWidget.RemoveFromHierarchy();
181
182 m_wRootWidget = null;
183 if (GetOwner().IsDeleted())
184 {//in such case we cannot do any operations on entity or its VObject
185 m_wRenderTargetTexture = null;
186 return;
187 }
188
189 if (m_wRenderTargetTexture)
190 m_wRenderTargetTexture.RemoveRenderTarget(GetOwner());
191
192 m_wRenderTargetTexture = null;
193 }
194
195 //------------------------------------------------------------------------------------------------
196 override EGadgetType GetType()
197 {
198 return EGadgetType.SPECIALIST_ITEM;
199 }
200
201 //------------------------------------------------------------------------------------------------
202 protected override void EOnInit(IEntity owner)
203 {
205 if (!data)
206 return;
207
208 m_iNumberOfPages = data.GetNumberOfPages();
209 SCR_VisualisedBallisticConfig ballisticPage;
210 for (int i; i < m_iNumberOfPages; i++)
211 {
212 ballisticPage = SCR_VisualisedBallisticConfig.Cast(data.GetPage(i));
213 if (!ballisticPage)
214 continue;
215
216 if (ballisticPage.IsGenerated())
217 continue;
218
219 ballisticPage.GenerateBallisticData();
220 }
221 }
222
223 //------------------------------------------------------------------------------------------------
224 protected override void OnDelete(IEntity owner)
225 {
227 }
228
229 //------------------------------------------------------------------------------------------------
232 [RplRpc(RplChannel.Reliable, RplRcver.Broadcast)]
233 protected void RpcDo_SyncPageChange(int selectedPage)
234 {
235 if (m_iCurrentPageID == selectedPage)
236 return;
237
238 m_iCurrentPageID = selectedPage;
239 ChangePage();
240 }
241
242 //------------------------------------------------------------------------------------------------
243 protected override bool RplSave(ScriptBitWriter writer)
244 {
245 writer.WriteInt(m_iCurrentPageID);
246
247 return super.RplSave(writer);
248 }
249
250 //------------------------------------------------------------------------------------------------
251 protected override bool RplLoad(ScriptBitReader reader)
252 {
253 reader.ReadInt(m_iCurrentPageID);
254 UpdateData(false);
255
256 return super.RplLoad(reader);
257 }
258}
ArmaReforgerScripted GetGame()
Definition game.c:1398
override bool RplLoad(ScriptBitReader reader)
override bool RplSave(ScriptBitWriter writer)
void ModeClear(EGadgetMode mode)
override void ModeSwitch(EGadgetMode mode, IEntity charOwner)
override EGadgetType GetType()
SCR_CharacterSoundComponentClass GetComponentData()
int m_iCurrentPageID
Widget m_wRootWidget
const string PAGE_NUMBER_NAME
void ChangePage(int direction=0)
const string PAGE_NUMBER_FORMAT
int GetNumberOfPages()
void ClearRenderTarget()
bool InitializeRenderTarget()
void RpcDo_SyncPageChange(int selectedPage)
int m_iNumberOfPages
void UpdateData(bool playSound=true)
Method used to update currently displayed ballistic data.
SCR_DataDisplayGadgetComponentClass m_iOpacityMapId
vector direction
Get all prefabs that have the spawner data
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
proto external Managed FindComponent(typename typeName)
ref array< ref SCR_BaseDataPageConfig > m_aPages
SCR_BaseDataPageConfig GetPage(int pageID)
int GetPages(notnull out array< SCR_BaseDataPageConfig > outPages)
IEntity GetOwner()
Owner entity of the fuel tank.
override void EOnInit(IEntity owner)
SCR_FieldOfViewSettings Attribute
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
Definition EnNetwork.c:95
RplRcver
Definition RplRcver.c:59
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.
Definition RplChannel.c:14