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

◆ ~UiHintPanel()

void Init::~UiHintPanel ( )
protected

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

336{
337 #ifdef DIAG_DEVELOPER
338 static int m_ForcedIndex = -1;//only for debug purposes
339 #endif
340
341 // Const
342 protected int m_SlideShowDelay = 25000; // The speed of the slideshow
343 protected string m_RootPath = "Gui/layouts/new_ui/hints/in_game_hints.layout"; // Layout path
344 protected const string m_DataPath = "scripts/data/hints.json"; // Json path
345 // Widgets
346 protected Widget m_RootFrame;
347 protected Widget m_SpacerFrame;
348 protected ButtonWidget m_UiLeftButton;
349 protected ButtonWidget m_UiRightButton;
352 protected ImageWidget m_UiHintImage;
354 // Data
356 protected int m_PageIndex = int.MIN;
357 protected DayZGame m_Game;
358 protected bool m_Initialized;
359 protected Widget m_ParentWidget;
360 protected int m_PreviousRandomIndex = int.MIN;
361
362 // ---------------------------------------------------------
363
364 // Constructor
365 void UiHintPanel(Widget parent_widget)
366 {
367 DayZGame game = DayZGame.Cast(GetGame());
368 m_ParentWidget = parent_widget;
369 Init(game);
370 }
371 // Destructor
372 void ~UiHintPanel()
373 {
375
376 if(m_RootFrame)
377 m_RootFrame.Unlink();
378 }
379
380
381 void Init(DayZGame game)
382 {
383 //as this class is now also being instantiated from within the DayZGame CTOR, where GetGame() does not work yet, we need a way to pass the game instance from DayZGame CTOR
384 //however for modding legacy support purposes, this was done without modifying the CTOR signature with the addition of the Init method,
385 //in order to keep compatibility with existing MODs, there is still a way to instantiate this class properly even without calling Init from the outside
386
387 if (m_Initialized)
388 return;
389 if (!game)//is null when instantiated from DayZGame during loading before calling Init explicitly
390 return;
391 m_Initialized = true;
392
393 m_Game = game;
394 // Load Json File
396 // If load successful
397 if (m_ContentList)
398 {
399 // Build the layout
401 // Get random page index
403 // Populate the layout with data
405 // Start the slideshow
407 }
408 else
409 ErrorEx("Could not create the hint panel. The data are missing!");
410 }
411
412 // ------------------------------------------------------
413
414 // Load content data from json file
415 protected void LoadContentList()
416 {
417 string errorMessage;
418 if (!JsonFileLoader<array<ref HintPage>>.LoadFile(m_DataPath, m_ContentList, errorMessage))
419 ErrorEx(errorMessage);
420 }
421
422 // Create and Build the layout
423 protected void BuildLayout(Widget parent_widget)
424 {
425 // Create the layout
426 m_RootFrame = m_Game.GetWorkspace().CreateWidgets(m_RootPath, parent_widget);
427
428 if (m_RootFrame)
429 {
430 // Find Widgets
431 m_SpacerFrame = m_RootFrame.FindAnyWidget("GridSpacerWidget1");
432 m_UiLeftButton = ButtonWidget.Cast(m_RootFrame.FindAnyWidget("LeftButton"));
433 m_UiRightButton = ButtonWidget.Cast(m_RootFrame.FindAnyWidget("RightButton"));
434 m_UiHeadlineLabel = TextWidget.Cast(m_RootFrame.FindAnyWidget("HeadlineLabel"));
435 m_UiDescLabel = RichTextWidget.Cast(m_RootFrame.FindAnyWidget("HintDescLabel"));
436 m_UiHintImage = ImageWidget.Cast(m_RootFrame.FindAnyWidget("HintImage"));
437 m_UiPageingLabel = TextWidget.Cast(m_RootFrame.FindAnyWidget("PageInfoLabel"));
438 // Set handler
439 m_RootFrame.SetHandler(this);
440 }
441 }
442
443 // Populate the hint with content
444 protected void PopulateLayout()
445 {
446 if (m_RootFrame)
447 {
450 SetHintImage();
452 }
453 }
454
455 // -------------------------------------------
456 // Setters
457 protected void SetHintHeadline()
458 {
459 m_UiHeadlineLabel.SetText(m_ContentList.Get(m_PageIndex).GetHeadlineText());
460 }
461 protected void SetHintDescription()
462 {
463 #ifdef DEVELOPER
464 //Print("showing contents for page "+m_PageIndex);
465 #endif
466 m_UiDescLabel.SetText(m_ContentList.Get(m_PageIndex).GetDescriptionText());
467 m_UiDescLabel.Update();
468 m_SpacerFrame.Update();
469 }
470 protected void SetHintImage()
471 {
472 string image_path = m_ContentList.Get(m_PageIndex).GetImagePath();
473
474 // If there is an image
475 if (image_path)
476 {
477 // Show the widget
478 m_UiHintImage.Show(true);
479 // Set the image path
480 m_UiHintImage.LoadImageFile(0, image_path);
481 }
482 else
483 {
484 // Hide the widget
485 m_UiHintImage.Show(false);
486 }
487 }
488 protected void SetHintPaging()
489 {
491 m_UiPageingLabel.SetText(string.Format("%1 / %2", m_PageIndex + 1, m_ContentList.Count()));
492 }
493
494 void ShowRandomPage()
495 {
498 }
499
500 // Set a random page index
501 protected void RandomizePageIndex()
502 {
503 #ifdef DIAG_DEVELOPER
505 {
506 if (m_ForcedIndex != -1)
507 {
508 m_PageIndex = Math.Clamp(m_ForcedIndex,0,m_ContentList.Count() - 1);
509 return;
510 }
511 }
512 #endif
513
514 Math.Randomize(m_Game.GetTime());
515 Math.RandomFloat01();//throw-away value, without calling this, the next random number is always the same, calling Math.Randomize(-1) makes no difference
519
520 }
521 // Show next hint page by incrementing the page index.
522 protected void ShowNextPage()
523 {
524 // Update the page index
525 if ( m_PageIndex < m_ContentList.Count() - 1 )
526 {
527 m_PageIndex++;
528 }
529 else
530 {
531 m_PageIndex = 0;
532 }
533
534 //Update the hint page
536 }
537 // Show previous hint page by decreasing the page index.
538 protected void ShowPreviousPage()
539 {
540 // Update the page index
541 if ( m_PageIndex == 0 )
542 {
543 m_PageIndex = m_ContentList.Count() - 1;
544 }
545 else
546 {
547 m_PageIndex--;
548
549 }
550 //Update the hint page
552 }
553
554 // -------------------------------------------
555 // Slideshow
556
557 // Creates new slidshow thread
558 protected void StartSlideshow()
559 {
561 }
562 // Slidshow thread - run code
563 protected void SlideshowThread()
564 {
565 ShowNextPage();
566 }
567 // Stop the slide show
568 protected void StopSlideShow()
569 {
570 m_Game.GetCallQueue(CALL_CATEGORY_GUI).Remove(SlideshowThread);
571 }
572 // Restart the slide show
573 protected void RestartSlideShow()
574 {
577 }
578
579 // ----------------------------------------
580 // Layout manipulation
581
582 override bool OnClick(Widget w, int x, int y, int button)
583 {
584 if (button == MouseState.LEFT)
585 {
586 switch (w)
587 {
588 case m_UiLeftButton:
589 {
591 return true;
592 }
593 case m_UiRightButton:
594 {
595 ShowNextPage();
596 return true;
597 }
598 }
599 }
600 return false;
601 }
602 override bool OnMouseEnter(Widget w, int x, int y)
603 {
604 if (w == m_RootPath || w == m_UiLeftButton || w == m_UiRightButton)
605 {
607 return true;
608 }
609 return false;
610 }
611 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
612 {
613 if (w == m_RootPath || w == m_UiLeftButton || w == m_UiRightButton)
614 {
616 return true;
617 }
618 return false;
619 }
620}
621
622// ---------------------------------------------------------------------------------------------------------
623class UiHintPanelLoading extends UiHintPanel
624{
625 override void Init(DayZGame game)
626 {
627 m_RootPath = "Gui/layouts/new_ui/hints/in_game_hints_load.layout";
628 super.Init(game);
629 }
630}
override Widget Init()
Определения DayZGame.c:127
Icon x
Icon y
Widget m_RootFrame
Определения UiHintPanel.c:305
const string m_DataPath
Определения UiHintPanel.c:303
void RandomizePageIndex()
Определения UiHintPanel.c:460
void ShowRandomPage()
Определения UiHintPanel.c:453
override bool OnClick(Widget w, int x, int y, int button)
Определения UiHintPanel.c:541
ImageWidget m_UiHintImage
Определения UiHintPanel.c:311
void SetHintHeadline()
Определения UiHintPanel.c:416
void SetHintImage()
Определения UiHintPanel.c:429
void SetHintPaging()
Определения UiHintPanel.c:447
int m_PageIndex
Определения UiHintPanel.c:315
ButtonWidget m_UiRightButton
Определения UiHintPanel.c:308
void ~UiHintPanel()
Определения UiHintPanel.c:331
string m_RootPath
Определения UiHintPanel.c:302
void SetHintDescription()
Определения UiHintPanel.c:420
Widget m_ParentWidget
Определения UiHintPanel.c:318
bool m_Initialized
Определения UiHintPanel.c:317
void StartSlideshow()
Определения UiHintPanel.c:517
ref array< ref HintPage > m_ContentList
Определения UiHintPanel.c:314
void StopSlideShow()
Определения UiHintPanel.c:527
void RestartSlideShow()
Определения UiHintPanel.c:532
override bool OnMouseEnter(Widget w, int x, int y)
Определения UiHintPanel.c:561
void SlideshowThread()
Определения UiHintPanel.c:522
Widget m_SpacerFrame
Определения UiHintPanel.c:306
RichTextWidget m_UiDescLabel
Определения UiHintPanel.c:309
void BuildLayout(Widget parent_widget)
Определения UiHintPanel.c:382
int m_SlideShowDelay
Определения UiHintPanel.c:301
TextWidget m_UiHeadlineLabel
Определения UiHintPanel.c:310
DayZGame m_Game
Определения UiHintPanel.c:316
void ShowPreviousPage()
Определения UiHintPanel.c:497
TextWidget m_UiPageingLabel
Определения UiHintPanel.c:312
void PopulateLayout()
Определения UiHintPanel.c:403
void UiHintPanel(Widget parent_widget)
Определения UiHintPanel.c:324
ButtonWidget m_UiLeftButton
Определения UiHintPanel.c:307
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
Определения UiHintPanel.c:570
int m_PreviousRandomIndex
Определения UiHintPanel.c:319
void LoadContentList()
Определения UiHintPanel.c:374
void ShowNextPage()
Определения UiHintPanel.c:481
Определения EnDebug.c:233
Определения EnMath.c:7
Определения gameplay.c:317
Определения EnWidgets.c:220
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
enum ShapeType ErrorEx
static proto bool IsInitialized()
Checks if DiagMenu is initialized.
static float RandomFloat01()
Returns a random float number between and min [inclusive] and max [inclusive].
Определения EnMath.c:126
static proto int Randomize(int seed)
Sets the seed for the random number generator.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].
Определения EnMath.c:54
MouseState
Определения EnSystem.c:311
const int CALL_CATEGORY_GUI
Определения tools.c:9