PolyCoreServices.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * CoreServices.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/13/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Services
  10. #pragma once
  11. #include "PolyString.h"
  12. #include "PolyLogger.h"
  13. #include "PolyGlobals.h"
  14. #include "PolyRenderer.h"
  15. #include "PolyMaterialManager.h"
  16. #include "PolyScreenManager.h"
  17. #include "PolySceneManager.h"
  18. #include "PolyTimerManager.h"
  19. #include "PolyFontManager.h"
  20. #include "PolyTweenManager.h"
  21. #include "PolySoundManager.h"
  22. #include "PolyResourceManager.h"
  23. #include "PolyCore.h"
  24. #include "PolyConfig.h"
  25. #include "PolyModule.h"
  26. #include "PolyBasics.h"
  27. #include <map>
  28. namespace Polycode {
  29. class Renderer;
  30. class MaterialManager;
  31. class SceneManager;
  32. class ScreenManager;
  33. class TimerManager;
  34. class TweenManager;
  35. class ResourceManager;
  36. class SoundManager;
  37. class Core;
  38. class CoreMutex;
  39. class _PolyExport CoreServices : public EventDispatcher {
  40. public:
  41. static CoreServices *getInstance();
  42. static CoreMutex *getRenderMutex();
  43. void setRenderer(Renderer *renderer);
  44. Renderer *getRenderer();
  45. void Update(int elapsed);
  46. void setCore(Core *core);
  47. Core *getCore();
  48. void handleEvent(Event *event);
  49. void installModule(PolycodeModule *module);
  50. MaterialManager *getMaterialManager();
  51. ScreenManager *getScreenManager();
  52. SceneManager *getSceneManager();
  53. TimerManager *getTimerManager();
  54. TweenManager *getTweenManager();
  55. ResourceManager *getResourceManager();
  56. SoundManager *getSoundManager();
  57. FontManager *getFontManager();
  58. Config *getConfig();
  59. ~CoreServices();
  60. protected:
  61. CoreServices();
  62. private:
  63. static std::map <long, CoreServices*> instanceMap;
  64. static CoreMutex *renderMutex;
  65. vector<PolycodeModule*> modules;
  66. Core *core;
  67. Config *config;
  68. MaterialManager *materialManager;
  69. ScreenManager *screenManager;
  70. SceneManager *sceneManager;
  71. TimerManager *timerManager;
  72. TweenManager *tweenManager;
  73. ResourceManager *resourceManager;
  74. SoundManager *soundManager;
  75. FontManager *fontManager;
  76. Renderer *renderer;
  77. };
  78. }