123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- //!base class for promo implementation
- class MainMenuDlcHandlerBase extends ScriptedWidgetEventHandler
- {
- protected const string TEXT_OWNED = "#layout_dlc_owned";
- protected const string TEXT_UNOWNED = "#layout_dlc_unowned";
-
- protected int m_ColorBackgroundOriginal;
-
- protected Widget m_Root;
- protected Widget m_BannerFrame;
- protected Widget m_Background;
- protected Widget m_StoreButton;
- protected Widget m_GamepadStoreImage;
- protected ImageWidget m_DlcPromotionImage;
- protected TextWidget m_TitleTextDlc;
- protected MultilineTextWidget m_DescriptionTextDlc;
- protected VideoWidget m_VideoWidget;
- protected ref ModInfo m_ThisModInfo;
- protected ref JsonDataDLCInfo m_DlcInfo;
-
- protected ref BannerHandlerBase m_BannerHandler;
-
- void MainMenuDlcHandlerBase(ModInfo info, Widget parent, JsonDataDLCInfo DlcInfo)
- {
- CreateRootWidget(parent);
- m_Root.SetHandler(this);
- m_DlcInfo = DlcInfo;
- m_ThisModInfo = info;
- Init();
-
- #ifdef PLATFORM_CONSOLE
- GetGame().GetContentDLCService().m_OnChange.Insert(OnDLCChange);
- if (GetGame().GetMission())
- {
- GetGame().GetMission().GetOnInputDeviceChanged().Insert(OnInputDeviceChanged);
- }
- #endif
- }
-
- void ~MainMenuDlcHandlerBase()
- {
- #ifdef PLATFORM_CONSOLE
- if (GetGame().GetContentDLCService())
- GetGame().GetContentDLCService().m_OnChange.Remove(OnDLCChange);
- #endif
- }
-
- void Init()
- {
- m_Background = m_Root;
- m_StoreButton = m_Root.FindAnyWidget("dlc_openStore");
- SetPlatformSpecifics();
- m_VideoWidget = VideoWidget.Cast(m_Root.FindAnyWidget("dlc_Video"));
- m_VideoWidget.Show(false);
- m_DlcPromotionImage = ImageWidget.Cast(m_Root.FindAnyWidget("dlc_ImageMain"));
- m_DlcPromotionImage.Show(true);
- m_BannerFrame = m_Root.FindAnyWidget("dlc_BannerFrame");//dlc_BannerFrame //dlc_BannerFrameVideo
- m_BannerHandler = new BannerHandlerBase(m_BannerFrame);
- m_TitleTextDlc = TextWidget.Cast(m_Root.FindAnyWidget("dlc_title"));
- m_DescriptionTextDlc = MultilineTextWidget.Cast(m_Root.FindAnyWidget("dlc_Description"));
- m_DescriptionTextDlc.SetLineBreakingOverride(LinebreakOverrideMode.LINEBREAK_WESTERN);
- m_ColorBackgroundOriginal = m_Background.GetColor();
-
- UpdateAllPromotionInfo();
- //StartVideo();
- }
-
- void CreateRootWidget(Widget parent)
- {
- m_Root = GetGame().GetWorkspace().CreateWidgets("gui/layouts/new_ui/dlc_panels/DLC_Panel.layout", parent);
- }
-
- void ShowInfoPanel(bool show)
- {
- m_Root.Show(show);
- OnPanelVisibilityChanged();
- }
-
- bool IsInfoPanelVisible()
- {
- return m_Root.IsVisible();
- }
-
- void OnPanelVisibilityChanged()
- {
- UpdateAllPromotionInfo();
- return;
-
- /*if (IsInfoPanelVisible())
- StartVideo();
- else
- PauseVideo();*/
- }
-
- //works on button only
- override bool OnClick(Widget w, int x, int y, int button)
- {
- m_ThisModInfo.GoToStore();
- return super.OnClick(w,x,y,button);
- }
-
- //! returns 'true' when video is loaded
- bool LoadVideoFile()
- {
- if (m_VideoWidget.GetState() != VideoState.NONE)
- return true;
-
- string path = "video\\" + m_DlcInfo.VideoFileName;
- if (m_DlcInfo.VideoFileName != "")
- return m_VideoWidget.Load(path, true);
-
- return false;
- }
-
- void StartVideo()
- {
- if (LoadVideoFile())
- m_VideoWidget.Play();
- }
-
- void StopVideo()
- {
- m_VideoWidget.Stop();
- }
-
- void PauseVideo()
- {
- m_VideoWidget.Pause();
- }
-
- void UnloadVideo()
- {
- m_VideoWidget.Stop();
- m_VideoWidget.Unload();
- }
-
- protected void ColorFocussed(Widget w, int x, int y)
- {
- m_Background.SetColor(ARGB(255,54,16,16));
- }
-
- protected void ColorUnfocussed(Widget w, Widget enterW, int x, int y)
- {
- m_Background.SetColor(m_ColorBackgroundOriginal);
- }
-
- protected void UpdateOwnedStatus()
- {
- if (m_ThisModInfo)
- {
- if (m_ThisModInfo.GetIsOwned())
- {
- m_BannerHandler.SetBannerColor(Colors.COLOR_FROSTLINE_MOUNTAIN_BLUE);
- m_BannerHandler.SetBannerText(TEXT_OWNED);
- }
- else
- {
- m_BannerHandler.SetBannerColor(Colors.COLOR_DAYZ_RED);
- m_BannerHandler.SetBannerText(TEXT_UNOWNED);
- }
- }
- }
-
- protected void OnDLCChange()
- {
- UpdateOwnedStatus();
- }
-
- protected void SetPlatformSpecifics()
- {
- TextWidget desc = TextWidget.Cast(m_StoreButton.FindAnyWidget("dlc_openStore_label"));
- #ifdef PLATFORM_PS4
- m_GamepadStoreImage = m_Root.FindAnyWidget("image_button_ps");
- desc.SetText("#dlc_open_store_PS");
- #endif
- #ifdef PLATFORM_XBOX
- m_GamepadStoreImage = m_Root.FindAnyWidget("image_button_xbox");
- desc.SetText("#dlc_open_store_Xbox");
- #endif
- #ifdef PLATFORM_PC
- m_GamepadStoreImage = m_Root.FindAnyWidget("image_button_xbox");
- desc.SetText("#dlc_open_store");
- #endif
- }
-
- //updates on language change etc.
- void UpdateAllPromotionInfo()
- {
- UpdateDlcData();
- UpdateOwnedStatus();
- UpdateIconVisibility();
- }
-
- protected void UpdateDlcData()
- {
- m_TitleTextDlc.SetText(m_DlcInfo.HeaderText);
- m_DescriptionTextDlc.SetText(m_DlcInfo.DescriptionText);
- }
-
- protected void UpdateIconVisibility()
- {
- #ifdef PLATFORM_CONSOLE
- m_GamepadStoreImage.Show(!GetGame().GetInput().IsEnabledMouseAndKeyboard() || GetGame().GetInput().GetCurrentInputDevice() == EInputDeviceType.CONTROLLER);
- #endif
- }
-
- protected void OnInputDeviceChanged(EInputDeviceType pInputDeviceType)
- {
- UpdateIconVisibility();
- }
-
- ModInfo GetModInfo()
- {
- return m_ThisModInfo;
- }
- }
|