splashscreen.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "pch.h"
  2. //////////////////////////////////////////////////////////////////////////////
  3. //
  4. // Splash Screen
  5. //
  6. //////////////////////////////////////////////////////////////////////////////
  7. class SplashScreen :
  8. public Screen,
  9. public EventTargetContainer<SplashScreen>,
  10. public IKeyboardInput
  11. {
  12. private:
  13. TRef<Pane> m_ppane;
  14. TRef<ButtonPane> m_pbuttonQuit;
  15. TRef<IKeyboardInput> m_keyboardDelegate;
  16. public:
  17. SplashScreen(Modeler* pmodeler)
  18. {
  19. TRef<INameSpace> pns = pmodeler->GetNameSpace("splashscreen");
  20. CastTo(m_ppane, pns->FindMember("screen"));
  21. pmodeler->UnloadNameSpace("splashscreen");
  22. if (g_bQuickstart || true) // REVIEW
  23. AddEventTarget(OnTimeout, GetWindow(), 0.01f);
  24. else
  25. AddEventTarget(OnTimeout, GetWindow(), 6.85f);
  26. m_keyboardDelegate = IKeyboardInput::CreateDelegate(this);
  27. GetWindow()->AddKeyboardInputFilter(m_keyboardDelegate);
  28. }
  29. ~SplashScreen()
  30. {
  31. GetWindow()->RemoveKeyboardInputFilter(m_keyboardDelegate);
  32. }
  33. bool OnTimeout()
  34. {
  35. GetWindow()->screen(ScreenIDIntroScreen);
  36. return false;
  37. }
  38. //////////////////////////////////////////////////////////////////////////////
  39. //
  40. // Screen Methods
  41. //
  42. //////////////////////////////////////////////////////////////////////////////
  43. Pane* GetPane()
  44. {
  45. return m_ppane;
  46. }
  47. //////////////////////////////////////////////////////////////////////////////
  48. //
  49. // IMouseInput
  50. //
  51. //////////////////////////////////////////////////////////////////////////////
  52. MouseResult Button(IInputProvider* pprovider, const Point& point, int button, bool bCaptured, bool bInside, bool bDown)
  53. {
  54. GetWindow()->screen(ScreenIDIntroScreen);
  55. return MouseResult();
  56. }
  57. //////////////////////////////////////////////////////////////////////////////
  58. //
  59. // IKeyboardInput
  60. //
  61. //////////////////////////////////////////////////////////////////////////////
  62. bool OnKey(IInputProvider* pprovider, const KeyState& ks, bool& fForceTranslate)
  63. {
  64. if (ks.bDown)
  65. GetWindow()->screen(ScreenIDIntroScreen);
  66. return false;
  67. }
  68. };
  69. //////////////////////////////////////////////////////////////////////////////
  70. //
  71. // Constructor
  72. //
  73. //////////////////////////////////////////////////////////////////////////////
  74. TRef<Screen> CreateSplashScreen(Modeler* pmodeler)
  75. {
  76. return new SplashScreen(pmodeler);
  77. }