DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ Refresh()

void Refresh ( bool hide_selector = true)
protected

См. определение в файле RadialMenu.c строка 228

229 {
230 int item_cards_count = GetItemCardsCount();
231 if (item_cards_count > 0)
232 m_AngleRadOffset = 2 * Math.PI / item_cards_count;
233 float angle_rad = -Math.PI / 2;
234
235 //--PARAM top offset--
236 if (m_OffsetFromTop != 0)
237 {
238 angle_rad = angle_rad + m_OffsetFromTop;
239 }
240 //--------------------
241
242 //delete all delimiters
243 Widget delimiters_panel = m_Parent.FindAnyWidget(RADIAL_DELIMITER_CONTAINER);
244 if (delimiters_panel)
245 {
246 Widget del_child = delimiters_panel.GetChildren();
247 while (del_child)
248 {
249 Widget child_to_destroy1 = del_child;
250 del_child = del_child.GetSibling();
251
252 delete child_to_destroy1;
253 }
254 }
255
256 //Position item cards, crate radial delimiters
257 Widget item_cards_panel = m_Parent.FindAnyWidget(RADIAL_ITEM_CARD_CONTAINER);
258 Widget item_card = item_cards_panel.GetChildren();
259
260 //get radius
261 float original_r = GetRadius();
262 float item_cards_r = original_r;
263
264 //--PARAM top offset--....
265 if (m_ItemCardRadiusOffset != 0)
266 {
267 item_cards_r = item_cards_r * m_ItemCardRadiusOffset;
268 if (item_cards_r < 0) item_cards_r = 0; //min radius is 0
269 }
270
271 m_RadialItemCards.Clear();
272 for (int i = 0; i < item_cards_count; ++i)
273 {
274 //position item cards
275 if (item_card)
276 {
277 //creates circle from simple widget items
278 float pos_x = item_cards_r * Math.Cos(angle_rad);
279 float pos_y = item_cards_r * Math.Sin(angle_rad);
280
281 pos_x = pos_x / original_r;
282 pos_y = pos_y / original_r;
283
284 item_card.SetPos(pos_x, pos_y);
285
286 //store item card
287 m_RadialItemCards.Insert(item_card, angle_rad);
288
289 //get next child
290 item_card = item_card.GetSibling();
291 }
292 //-------------------------
293
294 //create delimiter
295 if (item_cards_count > 1 && delimiters_panel && m_DelimiterLayout)
296 {
297 Widget delimiter_widget = g_Game.GetWorkspace().CreateWidgets(m_DelimiterLayout, delimiters_panel);
298 float delim_angle_rad = angle_rad + (m_AngleRadOffset / 2);
299 delimiter_widget.SetPos(0, 0);
300 delimiter_widget.SetRotation(0, 0, GetAngleInDegrees(delim_angle_rad) + 90);
301 }
302
303 //calculate next angle
304 angle_rad += m_AngleRadOffset;
305 }
306
307 //hide selector on refresh
308 if (hide_selector)
309 {
311 }
312 }
Entity m_Parent
Определения CachedEquipmentStorageBase.c:15
DayZGame g_Game
Определения DayZGame.c:3942
ref map< Widget, float > m_RadialItemCards
Определения RadialMenu.c:17
static const string RADIAL_ITEM_CARD_CONTAINER
Определения RadialMenu.c:27
float m_AngleRadOffset
Определения RadialMenu.c:19
void HideRadialSelector()
Определения RadialMenu.c:346
string m_DelimiterLayout
Определения RadialMenu.c:52
float m_ItemCardRadiusOffset
Определения RadialMenu.c:51
float m_OffsetFromTop
Определения RadialMenu.c:50
int GetItemCardsCount()
Определения RadialMenu.c:357
float GetRadius()
Определения RadialMenu.c:372
static const string RADIAL_DELIMITER_CONTAINER
Определения RadialMenu.c:26
float GetAngleInDegrees(float rad_angle)
Определения RadialMenu.c:498
Определения EnMath.c:7
Определения EnWidgets.c:190
static proto float Cos(float angle)
Returns cosinus of angle in radians.
static proto float Sin(float angle)
Returns sinus of angle in radians.
static const float PI
Определения EnMath.c:12

Перекрестные ссылки Math::Cos(), g_Game, GetAngleInDegrees(), GetItemCardsCount(), GetRadius(), HideRadialSelector(), m_AngleRadOffset, m_DelimiterLayout, m_ItemCardRadiusOffset, m_OffsetFromTop, m_Parent, m_RadialItemCards, Math::PI, RADIAL_DELIMITER_CONTAINER, RADIAL_ITEM_CARD_CONTAINER и Math::Sin().