Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. #include "stdafx.h"
  2.  
  3. #include "Game.h"
  4.  
  5. #include <tga2d/error/error_manager.h>
  6. #include <tga2d/engine.h>
  7. #include <functional>
  8. #include <time.h>
  9. #include <thread>
  10. #include "../CommonUtilities/CommonUtilities/DL_Debug.h"
  11.  
  12. using namespace std::placeholders;
  13.  
  14.  
  15. #ifdef _DEBUG
  16. #pragma comment(lib,"DX2DEngine_Debug.lib")
  17.  
  18. #endif // DEBUG
  19. #ifdef NDEBUG
  20. #pragma comment(lib,"DX2DEngine_Release.lib")
  21. #endif // DEBUG
  22.  
  23.  
  24. CGame::CGame() : myGameWorld(mySyncronizer)
  25. {
  26. }
  27.  
  28. CGame::~CGame()
  29. {
  30. mySyncronizer.Quit();
  31. myUpdateThread->join();
  32. myRenderThread->join();
  33.  
  34. delete myUpdateThread;
  35. myUpdateThread = nullptr;
  36. delete myRenderThread;
  37. myRenderThread = nullptr;
  38. }
  39.  
  40. void CGame::Init()
  41. {
  42. unsigned short windowWidth = static_cast<float>(GetSystemMetrics(SM_CXSCREEN));
  43. unsigned short windowHeight = static_cast<float>(GetSystemMetrics(SM_CYSCREEN));
  44. while (ShowCursor(false) >= 0);
  45. DX2D::SEngineCreateParameters createParameters;
  46. createParameters.myActivateDebugSystems = true;
  47. createParameters.myInitFunctionToCall = std::bind(&CGame::InitCallBack, this);
  48. createParameters.myUpdateFunctionToCall = std::bind(&CGame::UpdateCallBack, this);
  49. createParameters.myLogFunction = std::bind(&CGame::LogCallback, this, _1);
  50. createParameters.myWindowHeight = windowHeight;
  51. createParameters.myWindowWidth = windowWidth;
  52. createParameters.myRenderHeight = windowHeight;
  53. createParameters.myRenderWidth = windowWidth;
  54. createParameters.myClearColor.Set(0.0f, 0.0f, 0.0f, 1.0f);
  55. createParameters.myWindowSetting = DX2D::EWindowSetting_Borderless;
  56.  
  57. std::wstring appname = L"TGA 2D RELEASE";
  58. #ifdef _DEBUG
  59. appname = L"TGA 2D DEBUG";
  60. #endif
  61.  
  62. createParameters.myApplicationName = appname;
  63. createParameters.myEnableVSync = false;
  64.  
  65. DX2D::CEngine::CreateInstance(createParameters);
  66.  
  67. myTimerManager.CreateTimer();
  68.  
  69. DL_DEBUG::Debug::Create();
  70.  
  71. if (!DX2D::CEngine::GetInstance()->Start())
  72. {
  73. ERROR_AUTO_PRINT("Fatal error! Engine could not start!");
  74. }
  75.  
  76. }
  77.  
  78.  
  79. void CGame::InitCallBack()
  80. {
  81. myGameWorld.Init();
  82. myRenderThread = new std::thread(&CGame::Render, this);
  83. myUpdateThread = new std::thread(&CGame::UpdateLogic, this);
  84. }
  85.  
  86.  
  87. void CGame::UpdateCallBack()
  88. {
  89. myTimerManager.Update();
  90. mySyncronizer.SwapBuffer();
  91. mySyncronizer.BeginNewFrame();
  92. mySyncronizer.WaitForLogicAndRenderToFinish();
  93. }
  94.  
  95. void CGame::UpdateLogic()
  96. {
  97. while (mySyncronizer.HasQuit() == false)
  98. {
  99. mySyncronizer.WaitToDoLogic();
  100. bool run = myGameWorld.Update(myTimerManager.GetTimer(0).DeltaTime().TotalMilliSeconds() / 1000.f);
  101. mySyncronizer.LogisIsDone();
  102. if (run == false)
  103. {
  104. mySyncronizer.Quit();
  105. }
  106. }
  107. }
  108.  
  109. void CGame::Render()
  110. {
  111. while (mySyncronizer.HasQuit() == false)
  112. {
  113. mySyncronizer.WaitToRender();
  114. myRenderer.Render(mySyncronizer.GetRenderCommands(), mySyncronizer.GetTextRenderCommands());
  115. mySyncronizer.RenderIsDone();
  116. }
  117. }
  118.  
  119.  
  120.  
  121. void CGame::LogCallback(std::string aText)
  122. {
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement