BVB Source Codes

CRYENGINE Show FlashUI.h Source code

Return Download CRYENGINE: download FlashUI.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. // -------------------------------------------------------------------------
  4. //  File name:   FlashUI.h
  5. //  Version:     v1.00
  6. //  Created:     10/9/2010 by Paul Reindell.
  7. //  Description:
  8. // -------------------------------------------------------------------------
  9. //  History:
  10. //
  11. ////////////////////////////////////////////////////////////////////////////
  12. #ifndef __FlashUI_H__
  13. #define __FlashUI_H__
  14.  
  15. #include <CrySystem/Scaleform/IFlashUI.h>
  16. #include <CryExtension/ClassWeaver.h>
  17. #include <CryInput/IHardwareMouse.h>
  18. #include <CryInput/IInput.h>
  19. #include <CryGame/IGameFramework.h>
  20. #include <ILevelSystem.h>
  21. #include "FlashUIEventSystem.h"
  22.  
  23. #if !defined (_RELEASE) || defined(RELEASE_LOGGING)
  24.         #define UIACTION_LOGGING
  25. #endif
  26.  
  27. #if defined (UIACTION_LOGGING)
  28.         #define UIACTION_LOG(...)     { if (CFlashUI::CV_gfx_uiaction_log) CFlashUI::LogUIAction(IFlashUI::eLEL_Log, __VA_ARGS__); }
  29.         #define UIACTION_WARNING(...) { CFlashUI::LogUIAction(IFlashUI::eLEL_Warning, __VA_ARGS__); }
  30.         #define UIACTION_ERROR(...)   { CFlashUI::LogUIAction(IFlashUI::eLEL_Error, __VA_ARGS__); }
  31. #else
  32.         #define UIACTION_LOG     (void)
  33.         #define UIACTION_WARNING (void)
  34.         #define UIACTION_ERROR   (void)
  35. #endif
  36.  
  37. class CAutoRegUIFlowNode;
  38. struct CUIActionManager;
  39. class CFlashUIActionEvents;
  40.  
  41. class CFlashUI
  42.         : public IFlashUI
  43.           , public IHardwareMouseEventListener
  44.           , public IInputEventListener
  45.           , public IGameFrameworkListener
  46.           , public ILevelSystemListener
  47.           , public ISystemEventListener
  48.           , public ILoadtimeCallback
  49. {
  50.         CRYINTERFACE_BEGIN()
  51.         CRYINTERFACE_ADD(IFlashUI)
  52.         CRYINTERFACE_END()
  53.  
  54.         CRYGENERATE_SINGLETONCLASS(CFlashUI, IFlashUIExtensionName, 0x35AE7F0FBB13437B, 0x9C5FFCD2568616A5)
  55.  
  56.         CFlashUI();
  57.         virtual ~CFlashUI() {}
  58.  
  59. public:
  60.         // IFlashUI
  61.         virtual void                      Init() override;
  62.         virtual bool                      PostInit() override;
  63.         virtual void                      Update(float fDeltatime) override;
  64.         virtual void                      Reload() override;
  65.         virtual void                      ClearUIActions() override { ClearActions(); }
  66.         virtual void                      Shutdown() override;
  67.  
  68.         virtual bool                      LoadElementsFromFile(const char* sFileName) override;
  69.         virtual bool                      LoadActionFromFile(const char* sFileName, IUIAction::EUIActionType type) override;
  70.  
  71.         virtual IUIElement*               GetUIElement(const char* sName) const override { return const_cast<IUIElement*>(m_elements(sName)); }
  72.         virtual IUIElement*               GetUIElement(int index) const override         { return index < m_elements.size() ? const_cast<IUIElement*>(m_elements[index]) : NULL; }
  73.         virtual int                       GetUIElementCount() const override             { return m_elements.size(); }
  74.         virtual IUIElement*               GetUIElementByInstanceStr(const char* sUIInstanceStr) const override;
  75.  
  76.         virtual IUIAction*                GetUIAction(const char* sName) const override { return const_cast<IUIAction*>(m_actions(sName)); }
  77.         virtual IUIAction*                GetUIAction(int index) const override         { return index < m_actions.size() ? const_cast<IUIAction*>(m_actions[index]) : NULL; }
  78.         virtual int                       GetUIActionCount() const override             { return m_actions.size(); }
  79.  
  80.         virtual IUIActionManager*         GetUIActionManager() const override;
  81.         virtual void                      UpdateFG() override;
  82.         virtual void                      EnableEventStack(bool bEnable) override;
  83.         virtual void                      RegisterModule(IUIModule* pModule, const char* name) override;
  84.         virtual void                      UnregisterModule(IUIModule* pModule) override;
  85.  
  86.         virtual void                      SetHudElementsVisible(bool bVisible) override;
  87.  
  88.         virtual IUIEventSystem*           CreateEventSystem(const char* sName, IUIEventSystem::EEventSystemType eType) override;
  89.         virtual IUIEventSystem*           GetEventSystem(const char* name, IUIEventSystem::EEventSystemType eType) override;
  90.         virtual IUIEventSystemIteratorPtr CreateEventSystemIterator(IUIEventSystem::EEventSystemType eType) override;
  91.  
  92.         virtual void                      DispatchControllerEvent(IUIElement::EControllerInputEvent event, IUIElement::EControllerInputState state, float value) override;
  93.         virtual void                      SendFlashMouseEvent(SFlashCursorEvent::ECursorState evt, int iX, int iY, int iButton = 0, float wheel = 0.f, bool bFromController = false) override;
  94.         virtual bool                      DisplayVirtualKeyboard(unsigned int flags, const char* title, const char* initialInput, int maxInputLength, IVirtualKeyboardEvents* pInCallback) override;
  95.         virtual bool                      IsVirtualKeyboardRunning() override;
  96.         virtual bool                      CancelVirtualKeyboard() override;
  97.  
  98.         virtual void                      GetScreenSize(int& width, int& height) override;
  99.         virtual void                      SetEditorScreenSizeCallback(TEditorScreenSizeCallback& cb) override;
  100.         virtual void                      RemoveEditorScreenSizeCallback() override;
  101.  
  102.         virtual void                      SetEditorUILogEventCallback(TEditorUILogEventCallback& cb) override;
  103.         virtual void                      RemoveEditorUILogEventCallback() override;
  104.  
  105.         virtual void                      SetEditorPlatformCallback(TEditorPlatformCallback& cb) override;
  106.         virtual void                      RemoveEditorPlatformCallback() override;
  107.  
  108.         virtual bool                      UseSharedRT(const char* instanceStr, bool defVal) const override;
  109.  
  110.         virtual void                      CheckPreloadedTexture(ITexture* pTexture) const override;
  111.  
  112.         virtual void                      GetMemoryStatistics(ICrySizer* s) const override;
  113.  
  114. #if !defined(_LIB) || defined(IS_EAAS)
  115.         virtual SUIItemLookupSet_Impl<SUIParameterDesc>* CreateLookupParameter() override { return new SUIItemLookupSet_Impl<SUIParameterDesc>(); };
  116.         virtual SUIItemLookupSet_Impl<SUIMovieClipDesc>* CreateLookupMovieClip() override { return new SUIItemLookupSet_Impl<SUIMovieClipDesc>(); };
  117.         virtual SUIItemLookupSet_Impl<SUIEventDesc>*     CreateLookupEvent() override { return new SUIItemLookupSet_Impl<SUIEventDesc>(); };
  118. #endif
  119.         // ~IFlashUI
  120.  
  121.         // IHardwareMouseEventListener
  122.         void OnHardwareMouseEvent(int iX, int iY, EHARDWAREMOUSEEVENT eHardwareMouseEvent, int wheelDelta) override;
  123.         // ~IHardwareMouseEventListener
  124.  
  125.         // IInputEventListener
  126.         virtual bool OnInputEvent(const SInputEvent& event) override;
  127.         virtual bool OnInputEventUI(const SUnicodeEvent& event) override;
  128.         // ~IInputEventListener
  129.  
  130.         // ISystemEventListener
  131.         virtual void OnSystemEvent(ESystemEvent event, UINT_PTR wparam, UINT_PTR lparam) override;
  132.         // ~ISystemEventListener
  133.  
  134.         // IGameFrameworkListener
  135.         virtual void OnPostUpdate(float fDeltaTime) override    {}
  136.         virtual void OnSaveGame(ISaveGame* pSaveGame) override  {}
  137.         virtual void OnLoadGame(ILoadGame* pLoadGame) override  {}
  138.         virtual void OnLevelEnd(const char* nextLevel) override {}
  139.         virtual void OnActionEvent(const SActionEvent& event) override;
  140.         // ~IGameFrameworkListener
  141.  
  142.         // ILevelSystemListener
  143.         virtual void OnLevelNotFound(const char* levelName) override;
  144.         virtual void OnLoadingStart(ILevelInfo* pLevel) override              {}
  145.         virtual void OnLoadingLevelEntitiesStart(ILevelInfo* pLevel) override {}
  146.         virtual void OnLoadingComplete(ILevelInfo* pLevel) override           {}
  147.         virtual void OnLoadingError(ILevelInfo* pLevel, const char* error) override;
  148.         virtual void OnLoadingProgress(ILevelInfo* pLevel, int progressAmount) override;
  149.         virtual void OnUnloadComplete(ILevelInfo* pLevel) override {}
  150.         // ~ILevelSystemListener
  151.  
  152.         // ILoadtimeCallback
  153.         virtual void LoadtimeUpdate(float fDeltaTime) override;
  154.         virtual void LoadtimeRender() override;
  155.         // ~ILoadtimeCallback
  156.  
  157.         // logging
  158.         static void LogUIAction(ELogEventLevel level, const char* format, ...) PRINTF_PARAMS(2, 3);
  159.  
  160.         // cvars
  161.         DeclareStaticConstIntCVar(CV_gfx_draw, 1);
  162.         DeclareStaticConstIntCVar(CV_gfx_debugdraw, 0);
  163.         DeclareStaticConstIntCVar(CV_gfx_uiaction_log, 0);
  164.         DeclareStaticConstIntCVar(CV_gfx_uiaction_enable, 1);
  165.         DeclareStaticConstIntCVar(CV_gfx_loadtimethread, 1);
  166.         DeclareStaticConstIntCVar(CV_gfx_reloadonlanguagechange, 1);
  167.         DeclareStaticConstIntCVar(CV_gfx_uievents_editorenabled, 1);
  168.         DeclareStaticConstIntCVar(CV_gfx_ampserver, 0);
  169.         static int    CV_gfx_enabled;
  170.         static float  CV_gfx_inputevents_triggerstart;
  171.         static float  CV_gfx_inputevents_triggerrepeat;
  172.         static ICVar* CV_gfx_uiaction_log_filter;
  173.         static ICVar* CV_gfx_uiaction_folder;
  174.  
  175.         static void ReloadAllElements(IConsoleCmdArgs* /* pArgs */);
  176.  
  177.         void        InvalidateSortedElements();
  178.  
  179.         bool        IsLoadtimeThread() const { return m_bLoadtimeThread; };
  180.  
  181.         EPlatformUI GetCurrentPlatform();
  182.  
  183.         typedef std::vector<CAutoRegUIFlowNode*> TUIFlowNodes;
  184. private:
  185.         CFlashUI(const CFlashUI&) : m_modules(8) {}
  186.  
  187.         // cppcheck-suppress operatorEqVarError
  188.         void operator=(const CFlashUI&) {}
  189.  
  190.         void RegisterListeners();
  191.         void UnregisterListeners();
  192.  
  193.         void ReloadAll();
  194.  
  195.         void LoadElements();
  196.         void ClearElements();
  197.  
  198.         void LoadActions();
  199.         void ClearActions();
  200.  
  201.         void ResetActions();
  202.         void ReloadScripts();
  203.  
  204.         void CreateNodes();
  205.         void ClearNodes();
  206.  
  207.         void LoadFromFile(const char* sFolderName, const char* pSearch, bool (CFlashUI::* fhFileLoader)(const char*));
  208.         bool LoadFGActionFromFile(const char* sFileName);
  209.         bool LoadLuaActionFromFile(const char* sFileName);
  210.  
  211.         void PreloadTextures(const char* pLevelName = NULL);
  212.         void PreloadTexturesFromNode(const XmlNodeRef& node);
  213.         bool PreloadTexture(const char* pFileName);
  214.         void ReleasePreloadedTextures(bool bReleaseTextures = true);
  215.  
  216.         typedef std::multimap<int, IUIElement*> TSortedElementList;
  217.         inline const TSortedElementList& GetSortedElements();
  218.         inline void                      UpdateSortedElements();
  219.  
  220.         void                             CreateMouseClick(IUIElement::EControllerInputState state);
  221.  
  222.         void                             TriggerEvent(const SInputEvent& event);
  223.  
  224.         SFlashKeyEvent                   MapToFlashKeyEvent(const SInputEvent& inputEvent);
  225.  
  226.         TUIEventSystemMap*               GetEventSystemMap(IUIEventSystem::EEventSystemType eType);
  227.  
  228.         void                             StartRenderThread();
  229.         void                             StopRenderThread();
  230.  
  231.         inline void                      CheckLanguageChanged();
  232.         inline void                      CheckResolutionChange();
  233.  
  234.         void                             ReloadAllBootStrapper();
  235.         void                             ResetDirtyFlags();
  236.  
  237.         static bool                      CheckFilter(const string& str);
  238.  
  239. private:
  240.         CFlashUIActionEvents* m_pFlashUIActionEvents;
  241.  
  242.         TUIEventSystemMap     m_eventSystemsUiToSys;
  243.         TUIEventSystemMap     m_eventSystemsSysToUi;
  244.  
  245.         TUIElementsLookup     m_elements;
  246.         TUIActionsLookup      m_actions;
  247.  
  248.         TSortedElementList    m_sortedElements;
  249.         bool                  m_bSortedElementsInvalidated;
  250.  
  251.         bool                  m_bLoadtimeThread;
  252.         typedef std::vector<IFlashPlayer*> TPlayerList;
  253.         TPlayerList           m_loadtimePlayerList;
  254.  
  255.         TUIFlowNodes          m_UINodes;
  256.  
  257.         typedef std::map<ITexture*, string> TTextureMap;
  258.         TTextureMap       m_preloadedTextures;
  259.  
  260.         CUIActionManager* m_pUIActionManager;
  261.  
  262.         typedef CListenerSet<IUIModule*> TUIModules;
  263.         TUIModules                m_modules;
  264.  
  265.         int                       m_iWidth;
  266.         int                       m_iHeight;
  267.         TEditorScreenSizeCallback m_ScreenSizeCB;
  268.         TEditorUILogEventCallback m_LogCallback;
  269.         TEditorPlatformCallback   m_plattformCallback;
  270.  
  271.         enum ESystemState
  272.         {
  273.                 eSS_NoLevel,
  274.                 eSS_Loading,
  275.                 eSS_LoadingDone,
  276.                 eSS_GameStarted,
  277.                 eSS_Unloading,
  278.         };
  279.  
  280.         ESystemState m_systemState;
  281.         float        m_fLastAdvance;
  282.         float        m_lastTimeTriggered;
  283.         bool         m_bHudVisible;
  284. };
  285.  
  286. #endif // #ifndef __FlashUI_H__
  287.  
downloadFlashUI.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top