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

◆ StartSlideshow()

void Init::StartSlideshow ( )
protected

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

522{
523 #ifdef DIAG_DEVELOPER
524 static int m_ForcedIndex = -1;//only for debug purposes
525 #endif
526
527 // Const
528 protected int m_SlideShowDelay = 25000; // The speed of the slideshow
529 protected string m_RootPath = "Gui/layouts/new_ui/hints/in_game_hints.layout"; // Layout path
530 protected const string m_DataPath = "scripts/data/hints.json"; // Json path
531 // Widgets
532 protected Widget m_RootFrame;
533 protected Widget m_SpacerFrame;
534 protected ButtonWidget m_UiLeftButton;
535 protected ButtonWidget m_UiRightButton;
538 protected ImageWidget m_UiHintImage;
540 // Data
542 protected int m_PageIndex = int.MIN;
543 protected DayZGame m_Game;
544 protected bool m_Initialized;
545 protected Widget m_ParentWidget;
546 protected int m_PreviousRandomIndex = int.MIN;
547
548 // ---------------------------------------------------------
549
550 // Constructor
551 void UiHintPanel(Widget parent_widget)
552 {
553 DayZGame game = DayZGame.Cast(GetGame());
554 m_ParentWidget = parent_widget;
555 Init(game);
556 }
557 // Destructor
558 void ~UiHintPanel()
559 {
561
562 if(m_RootFrame)
563 m_RootFrame.Unlink();
564 }
565
566
567 void Init(DayZGame game)
568 {
569 //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
570 //however for modding legacy support purposes, this was done without modifying the CTOR signature with the addition of the Init method,
571 //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
572
573 if (m_Initialized)
574 return;
575 if (!game)//is null when instantiated from DayZGame during loading before calling Init explicitly
576 return;
577 m_Initialized = true;
578
579 m_Game = game;
580 // Load Json File
582 // If load successful
583 if (m_ContentList)
584 {
585 // Build the layout
587 // Get random page index
589 // Populate the layout with data
591 // Start the slideshow
593 }
594 else
595 ErrorEx("Could not create the hint panel. The data are missing!");
596 }
597
598 // ------------------------------------------------------
599
600 // Load content data from json file
601 protected void LoadContentList()
602 {
603 string errorMessage;
604 if (!JsonFileLoader<array<ref HintPage>>.LoadFile(m_DataPath, m_ContentList, errorMessage))
605 ErrorEx(errorMessage);
606 }
607
608 // Create and Build the layout
609 protected void BuildLayout(Widget parent_widget)
610 {
611 // Create the layout
612 m_RootFrame = m_Game.GetWorkspace().CreateWidgets(m_RootPath, parent_widget);
613
614 if (m_RootFrame)
615 {
616 // Find Widgets
617 m_SpacerFrame = m_RootFrame.FindAnyWidget("GridSpacerWidget1");
618 m_UiLeftButton = ButtonWidget.Cast(m_RootFrame.FindAnyWidget("LeftButton"));
619 m_UiRightButton = ButtonWidget.Cast(m_RootFrame.FindAnyWidget("RightButton"));
620 m_UiHeadlineLabel = TextWidget.Cast(m_RootFrame.FindAnyWidget("HeadlineLabel"));
621 m_UiDescLabel = RichTextWidget.Cast(m_RootFrame.FindAnyWidget("HintDescLabel"));
622 m_UiHintImage = ImageWidget.Cast(m_RootFrame.FindAnyWidget("HintImage"));
623 m_UiPageingLabel = TextWidget.Cast(m_RootFrame.FindAnyWidget("PageInfoLabel"));
624 // Set handler
625 m_RootFrame.SetHandler(this);
626 }
627 }
628
629 // Populate the hint with content
630 protected void PopulateLayout()
631 {
632 if (m_RootFrame)
633 {
636 SetHintImage();
638 }
639 }
640
641 // -------------------------------------------
642 // Setters
643 protected void SetHintHeadline()
644 {
645 m_UiHeadlineLabel.SetText(m_ContentList.Get(m_PageIndex).GetHeadlineText());
646 }
647 protected void SetHintDescription()
648 {
649 #ifdef DEVELOPER
650 //Print("showing contents for page "+m_PageIndex);
651 #endif
652 m_UiDescLabel.SetText(m_ContentList.Get(m_PageIndex).GetDescriptionText());
653 m_UiDescLabel.Update();
654 m_SpacerFrame.Update();
655 }
656 protected void SetHintImage()
657 {
658 string image_path = m_ContentList.Get(m_PageIndex).GetImagePath();
659
660 // If there is an image
661 if (image_path)
662 {
663 // Show the widget
664 m_UiHintImage.Show(true);
665 // Set the image path
666 m_UiHintImage.LoadImageFile(0, image_path);
667 }
668 else
669 {
670 // Hide the widget
671 m_UiHintImage.Show(false);
672 }
673 }
674 protected void SetHintPaging()
675 {
677 m_UiPageingLabel.SetText(string.Format("%1 / %2", m_PageIndex + 1, m_ContentList.Count()));
678 }
679
680 void ShowRandomPage()
681 {
684 }
685
686 // Set a random page index
687 protected void RandomizePageIndex()
688 {
689 #ifdef DIAG_DEVELOPER
691 {
692 if (m_ForcedIndex != -1)
693 {
694 m_PageIndex = Math.Clamp(m_ForcedIndex,0,m_ContentList.Count() - 1);
695 return;
696 }
697 }
698 #endif
699
700 Math.Randomize(m_Game.GetTime());
701 Math.RandomFloat01();//throw-away value, without calling this, the next random number is always the same, calling Math.Randomize(-1) makes no difference
705
706 }
707 // Show next hint page by incrementing the page index.
708 protected void ShowNextPage()
709 {
710 // Update the page index
711 if ( m_PageIndex < m_ContentList.Count() - 1 )
712 {
713 m_PageIndex++;
714 }
715 else
716 {
717 m_PageIndex = 0;
718 }
719
720 //Update the hint page
722 }
723 // Show previous hint page by decreasing the page index.
724 protected void ShowPreviousPage()
725 {
726 // Update the page index
727 if ( m_PageIndex == 0 )
728 {
729 m_PageIndex = m_ContentList.Count() - 1;
730 }
731 else
732 {
733 m_PageIndex--;
734
735 }
736 //Update the hint page
738 }
739
740 // -------------------------------------------
741 // Slideshow
742
743 // Creates new slidshow thread
744 protected void StartSlideshow()
745 {
747 }
748 // Slidshow thread - run code
749 protected void SlideshowThread()
750 {
751 ShowNextPage();
752 }
753 // Stop the slide show
754 protected void StopSlideShow()
755 {
756 m_Game.GetCallQueue(CALL_CATEGORY_GUI).Remove(SlideshowThread);
757 }
758 // Restart the slide show
759 protected void RestartSlideShow()
760 {
763 }
764
765 // ----------------------------------------
766 // Layout manipulation
767
768 override bool OnClick(Widget w, int x, int y, int button)
769 {
770 if (button == MouseState.LEFT)
771 {
772 switch (w)
773 {
774 case m_UiLeftButton:
775 {
777 return true;
778 }
779 case m_UiRightButton:
780 {
781 ShowNextPage();
782 return true;
783 }
784 }
785 }
786 return false;
787 }
788 override bool OnMouseEnter(Widget w, int x, int y)
789 {
790 if (w == m_RootPath || w == m_UiLeftButton || w == m_UiRightButton)
791 {
793 return true;
794 }
795 return false;
796 }
797 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
798 {
799 if (w == m_RootPath || w == m_UiLeftButton || w == m_UiRightButton)
800 {
802 return true;
803 }
804 return false;
805 }
806}
807
808// ---------------------------------------------------------------------------------------------------------
809class UiHintPanelLoading extends UiHintPanel
810{
811 override void Init(DayZGame game)
812 {
813 m_RootPath = "Gui/layouts/new_ui/hints/in_game_hints_load.layout";
814 super.Init(game);
815 }
816}
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