Open Source Tomb Raider Engine
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*!
  2. * \file src/OpenRaider.cpp
  3. * \brief Main Game Object
  4. *
  5. * \author xythobuz
  6. */
  7. #include <cstdio>
  8. #include <assert.h>
  9. #include "WindowSDL.h"
  10. #include "config.h"
  11. #include "utils/strings.h"
  12. #include "utils/time.h"
  13. #include "OpenRaider.h"
  14. #define MAX_MS_PER_FRAME (1000 / MAXIMUM_FPS)
  15. OpenRaider::OpenRaider() {
  16. mInit = false;
  17. mRunning = false;
  18. mWindow = NULL;
  19. }
  20. OpenRaider::~OpenRaider() {
  21. if (mWindow)
  22. delete mWindow;
  23. }
  24. int OpenRaider::loadConfig(const char *config) {
  25. assert(config != NULL);
  26. char *configFile = fullPath(config, 0);
  27. printf("Trying to load \"%s\"...\n", configFile);
  28. return 0;
  29. }
  30. int OpenRaider::initialize() {
  31. assert(mWindow == NULL);
  32. assert(mInit == false);
  33. assert(mRunning == false);
  34. // Initialize Windowing
  35. mWindow = new WindowSDL();
  36. if (mWindow->initialize() != 0)
  37. return -1;
  38. mWindow->setFont("~/.OpenRaider/data/test.ttf");
  39. // Initialize windows font
  40. if (mWindow->initializeFont() != 0)
  41. return -2;
  42. mInit = true;
  43. return 0;
  44. }
  45. void OpenRaider::run() {
  46. assert(mInit == true);
  47. assert(mRunning == false);
  48. mRunning = true;
  49. while (mRunning) {
  50. clock_t startTime = systemTimerGet();
  51. mWindow->eventHandling();
  52. /*WindowString s;
  53. s.text = bufferString("Hello World");
  54. s.x = 100;
  55. s.y = 100;
  56. s.scale = 1.0;
  57. s.color[0] = s.color[1] = s.color[2] = 0xFF;
  58. mWindow->writeString(&s);*/
  59. mWindow->swapBuffersGL();
  60. clock_t stopTime = systemTimerGet();
  61. if (MAX_MS_PER_FRAME > (stopTime - startTime))
  62. mWindow->delay(MAX_MS_PER_FRAME - (stopTime - startTime));
  63. }
  64. }