Advertisement
Guest User

Untitled

a guest
Aug 30th, 2013
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #include "RoomManager.h"
  2. #include "../Rooms/MainMenu.h"
  3. #include "../Rooms/Options.h"
  4.  
  5. Room * RoomManager::getRoomByEnum(Rooms room)
  6. {
  7. switch (room)
  8. {
  9. case Rooms::MAIN_MENU:
  10. return new MainMenu();
  11.  
  12. break;
  13.  
  14. case Rooms::OPTIONS:
  15. return new Options();
  16.  
  17. break;
  18. }
  19. }
  20.  
  21. RoomManager::RoomManager(Rooms startRoom) : transitioningOut(false), transitioningIn(true), transitioningOutTime(0), transitioningInTime(0)
  22. {
  23. currentRoom = getRoomByEnum(startRoom);
  24. }
  25.  
  26. bool RoomManager::isTransitioningOut() {return transitioningOut;}
  27. bool RoomManager::isTransitioningIn() {return transitioningIn;}
  28.  
  29. float RoomManager::getTransitioningOutPercent()
  30. {
  31. if (!transitioningOut)
  32. return 0;
  33.  
  34. return transitioningOutTime/currentRoom->getTransitionOutTime();
  35. }
  36.  
  37. float RoomManager::getTransitoningInPercent()
  38. {
  39. if (!transitioningIn)
  40. return 0;
  41.  
  42. return transitioningInTime/currentRoom->getTransitionInTime();
  43. }
  44.  
  45. void RoomManager::setRoom(Rooms room)
  46. {
  47. if (transitioningIn || transitioningOut)
  48. return;
  49.  
  50. nextRoom = getRoomByEnum(room);
  51.  
  52. transitioningOut = true;
  53.  
  54. transitioningOutTime = 0;
  55. }
  56.  
  57. void RoomManager::update(sf::RenderWindow & window, AudioPlayer & audioPlayer)
  58. {
  59. float timePassed = clock.getElapsedTime().asSeconds();
  60.  
  61. clock.restart();
  62.  
  63. if (transitioningOut)
  64. {
  65. transitioningOutTime += timePassed;
  66.  
  67. if (transitioningOutTime >= currentRoom->getTransitionOutTime())
  68. {
  69. transitioningOut = false;
  70. transitioningIn = true;
  71.  
  72. currentRoom = nextRoom;
  73. nextRoom = nullptr;
  74.  
  75. transitioningOutTime = 0;
  76. transitioningInTime = currentRoom->getTransitionInTime();
  77. }
  78. }
  79. else if (transitioningIn)
  80. {
  81. transitioningInTime += timePassed;
  82.  
  83. if (transitioningInTime >= currentRoom->getTransitionInTime())
  84. {
  85. transitioningIn = false;
  86. }
  87. }
  88.  
  89. currentRoom->update(window, audioPlayer, *this);
  90. }
  91.  
  92. void RoomManager::draw(sf::RenderWindow & window)
  93. {
  94. currentRoom->draw(window, *this);
  95.  
  96. window.display();
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement