PolyScreenManager.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * ScreenManager.cpp
  3. * TAU
  4. *
  5. * Created by Ivan Safrin on 3/15/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. #include "PolyScreenManager.h"
  10. using namespace Polycode;
  11. ScreenManager::ScreenManager() : EventDispatcher() {
  12. }
  13. ScreenManager::~ScreenManager() {
  14. }
  15. void ScreenManager::removeScreen(Screen *screen) {
  16. for(int i=0;i<screens.size();i++) {
  17. if(screens[i] == screen) {
  18. screens.erase(screens.begin()+i);
  19. delete screen;
  20. }
  21. }
  22. }
  23. void ScreenManager::addScreen(Screen *screen) {
  24. screen->setRenderer(CoreServices::getInstance()->getRenderer());
  25. screens.push_back(screen);
  26. }
  27. void ScreenManager::handleEvent(Event *event) {
  28. // if(event->getDispatcher() == CoreServices::getInstance()->getCore()->getInput()) {
  29. InputEvent *inputEvent = (InputEvent*)event;
  30. for(int i=0;i<screens.size();i++) {
  31. screens[i]->handleInputEvent(inputEvent);
  32. }
  33. // }
  34. }
  35. /*
  36. Screen *ScreenManager::createScreen(int screenType) {
  37. Screen *screen;
  38. switch(screenType) {
  39. case REGULAR_SCREEN:
  40. screen = new Screen();
  41. break;
  42. case PHYSICS_SCREEN:
  43. screen = new PhysicsScreen();
  44. break;
  45. }
  46. screen->setRenderer(CoreServices::getInstance()->getRenderer());
  47. screens.push_back(screen);
  48. return screen;
  49. }
  50. */
  51. void ScreenManager::Update() {
  52. for(int i=0;i<screens.size();i++) {
  53. if(screens[i]->enabled)
  54. if(screens[i]->hasFilterShader()) {
  55. screens[i]->drawFilter();
  56. } else {
  57. screens[i]->Render();
  58. }
  59. }
  60. }