Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_RankContainer.c
Go to the documentation of this file.
1[BaseContainerProps(configRoot: true)]
3{
4 [Attribute(desc : "List of ranks")]
5 protected ref array<ref SCR_RankInfo> m_aRanks;
6
7 //------------------------------------------------------------------------------------------------
10 bool IsRankRenegade(SCR_ECharacterRank rankID)
11 {
12 if (!m_aRanks)
13 return false;
14
15 SCR_RankInfo foundRank = GetRankByID(rankID);
16 if (!foundRank)
17 return false;
18
19 return foundRank.IsRankRenegade();
20 }
21
22 //------------------------------------------------------------------------------------------------
25 int GetRequiredRankXP(SCR_ECharacterRank rankID)
26 {
27 if (!m_aRanks)
28 return int.MAX;
29
30 SCR_RankInfo foundRank = GetRankByID(rankID);
31 if (!foundRank)
32 return int.MAX;
33
34 return foundRank.GetRequiredRankXP();
35 }
36
37 //------------------------------------------------------------------------------------------------
38 protected SCR_ECharacterRank GetRenegadeRank()
39 {
40 foreach (SCR_RankInfo rank : m_aRanks)
41 {
42 if (rank && rank.IsRankRenegade())
43 return rank.GetRankID();
44 }
45
46 return SCR_ECharacterRank.INVALID;
47 }
48
49 //------------------------------------------------------------------------------------------------
52 SCR_ECharacterRank GetRankByXP(int XP)
53 {
54 if (!m_aRanks)
55 return SCR_ECharacterRank.INVALID;
56
57 int maxFoundXP = -100000;
58 SCR_ECharacterRank rankFound = GetRenegadeRank();
59
60 foreach (SCR_RankInfo rank : m_aRanks)
61 {
62 int reqXP = GetRequiredRankXP(rank.GetRankID());
63
64 if (reqXP <= XP && reqXP > maxFoundXP)
65 {
66 maxFoundXP = reqXP;
67 rankFound = rank.GetRankID();
68 }
69 }
70
71 return rankFound;
72 }
73
74 //------------------------------------------------------------------------------------------------
77 SCR_ECharacterRank GetNextRank(SCR_ECharacterRank rankID)
78 {
79 if (!m_aRanks)
80 return SCR_ECharacterRank.INVALID;
81
82 SCR_ECharacterRank foundID = SCR_ECharacterRank.INVALID;
83 SCR_ECharacterRank CheckedID;
84
85 if (GetRankByID(rankID)) // rank needs to be defined in this container to be able to retrieve and use the XP
86 {
87 int rankXP = GetRequiredRankXP(rankID);
88 int higherXP = int.MAX;
89
90 foreach (SCR_RankInfo checkedRank : m_aRanks)
91 {
92 CheckedID = checkedRank.GetRankID();
93 int thisXP = GetRequiredRankXP(CheckedID);
94
95 if (thisXP > rankXP && thisXP < higherXP)
96 {
97 higherXP = thisXP;
98 foundID = CheckedID;
99 }
100 }
101
102 return foundID;
103 }
104
105 // this rank is currently not defined in this specific faction / rank container so the xp cannot be checked.
106 // so we will attempt to get the closest rank by going from the top down using the enums
107 // Invalid is already the highest enum value so we only need to go down.
108 foreach (SCR_RankInfo checkedRank : m_aRanks)
109 {
110 CheckedID = checkedRank.GetRankID();
111
112 if (rankID < CheckedID && CheckedID < foundID)
113 {
114 foundID = CheckedID;
115 }
116 }
117
118 return foundID;
119 }
120
121 //------------------------------------------------------------------------------------------------
124 SCR_ECharacterRank GetPreviousRank(SCR_ECharacterRank rankID)
125 {
126 if (!m_aRanks)
127 return SCR_ECharacterRank.INVALID;
128
129 SCR_ECharacterRank foundID = SCR_ECharacterRank.INVALID;
130 SCR_ECharacterRank CheckedID;
131
132 if (GetRankByID(rankID)) // rank needs to be defined in this container to be able to retrieve and use the XP
133 {
134 int rankXP = GetRequiredRankXP(rankID);
135 int lowerXP = int.MIN;
136
137 foreach (SCR_RankInfo checkedRank : m_aRanks)
138 {
139 CheckedID = checkedRank.GetRankID();
140 int thisXP = GetRequiredRankXP(CheckedID);
141
142 if (thisXP < rankXP && thisXP > lowerXP)
143 {
144 lowerXP = thisXP;
145 foundID = CheckedID;
146 }
147 }
148
149 return foundID;
150 }
151
152 // this rank is currently not defined in this specific faction / rank container so the xp cannot be checked.
153 // so we will attempt to get the closest rank by going from the bottom up using the enums
154 foundID = SCR_ECharacterRank.RENEGADE;
155
156 foreach (SCR_RankInfo checkedRank : m_aRanks)
157 {
158 CheckedID = checkedRank.GetRankID();
159
160 if (rankID > CheckedID && CheckedID > foundID)
161 {
162 foundID = CheckedID;
163 }
164 }
165
166 return foundID;
167 }
168
169 //------------------------------------------------------------------------------------------------
170 array<ref SCR_RankInfo> GetAllRanks()
171 {
172 array<ref SCR_RankInfo> outArray = {};
173 foreach (SCR_RankInfo rank : m_aRanks)
174 {
175 outArray.Insert(rank);
176 }
177
178 return outArray;
179 }
180
181 //------------------------------------------------------------------------------------------------
182 SCR_RankInfo GetRankByID(SCR_ECharacterRank rankIdentifier)
183 {
184 foreach (SCR_RankInfo rank : m_aRanks)
185 {
186 if (rank.GetRankID() == rankIdentifier)
187 return rank;
188 }
189
190 return null;
191 }
192
193 //------------------------------------------------------------------------------------------------
196 SCR_RankInfo GetRankByID(SCR_ECharacterRank rankIdentifier, bool fetchNext)
197 {
198 foreach (SCR_RankInfo rank : m_aRanks)
199 {
200 if (rank.GetRankID() == rankIdentifier)
201 return rank;
202 }
203
204 if (fetchNext)
205 return GetRankByID(GetNextRank(rankIdentifier));
206
207 return GetRankByID(GetPreviousRank(rankIdentifier));
208 }
209
210 //------------------------------------------------------------------------------------------------
213 string GetRankName(SCR_ECharacterRank rankID)
214 {
215 SCR_RankInfo rank = GetRankByID(rankID);
216
217 if (rank)
218 return rank.GetRankName();
219 else
220 return string.Empty;
221 }
222
223 //------------------------------------------------------------------------------------------------
226 string GetRankNameUpperCase(SCR_ECharacterRank rankID)
227 {
228 SCR_RankInfo rank = GetRankByID(rankID);
229
230 if (rank)
231 return rank.GetRankNameUpperCase();
232 else
233 return string.Empty;
234 }
235
236 //------------------------------------------------------------------------------------------------
239 string GetRankNameShort(SCR_ECharacterRank rankID)
240 {
241 SCR_RankInfo rank = GetRankByID(rankID);
242
243 if (rank)
244 return rank.GetRankNameShort();
245 else
246 return string.Empty;
247 }
248
249 //------------------------------------------------------------------------------------------------
252 string GetRankInsignia(SCR_ECharacterRank rankID)
253 {
254 SCR_RankInfo rank = GetRankByID(rankID);
255
256 if (rank)
257 return rank.GetRankInsignia();
258 else
259 return string.Empty;
260 }
261}
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
string GetRankNameShort(SCR_ECharacterRank rankID)
SCR_ECharacterRank GetNextRank(SCR_ECharacterRank rankID)
array< ref SCR_RankInfo > GetAllRanks()
SCR_RankInfo GetRankByID(SCR_ECharacterRank rankIdentifier)
bool IsRankRenegade(SCR_ECharacterRank rankID)
SCR_ECharacterRank GetRenegadeRank()
SCR_ECharacterRank GetRankByXP(int XP)
string GetRankNameUpperCase(SCR_ECharacterRank rankID)
string GetRankInsignia(SCR_ECharacterRank rankID)
SCR_ECharacterRank GetPreviousRank(SCR_ECharacterRank rankID)
SCR_RankInfo GetRankByID(SCR_ECharacterRank rankIdentifier, bool fetchNext)
string GetRankName(SCR_ECharacterRank rankID)
int GetRequiredRankXP(SCR_ECharacterRank rankID)
ref array< ref SCR_RankInfo > m_aRanks
string GetRankNameUpperCase()
string GetRankName()
int GetRequiredRankXP()
string GetRankNameShort()
string GetRankInsignia()
bool IsRankRenegade()
SCR_FieldOfViewSettings Attribute