WindowManagerTests.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include <cstdio>
  2. #include <source_location>
  3. #include <GLFW/glfw3.h>
  4. #include "../Tests.hpp"
  5. import Core.Logger;
  6. import Core.Terminal;
  7. import Core.TerminalConstants;
  8. import Core.Vector;
  9. import Core.WindowManager;
  10. namespace W = Core::Window;
  11. static W::Button closeButton = 0;
  12. static W::Button testButton = 0;
  13. static W::Button textButton = 0;
  14. static bool isRunning(void*) {
  15. return !W::shouldClose() && !W::isButtonDown(closeButton);
  16. }
  17. static void tick(void*) {
  18. if(!W::isInputEnabled()) {
  19. Core::logInfo(
  20. "TPS: {}\nFPS: {}\n", W::getTicksPerSecond(),
  21. W::getFramesPerSecond());
  22. Core::print(
  23. "{12} | Down: {} | DownTime: {3} | Released: {}\n",
  24. W::getButtonName(closeButton), W::isButtonDown(closeButton),
  25. W::getButtonDownTime(closeButton),
  26. W::wasButtonReleased(closeButton));
  27. Core::print(
  28. "{12} | Down: {} | DownTime: {3} | Released: {}\n",
  29. W::getButtonName(testButton), W::isButtonDown(testButton),
  30. W::getButtonDownTime(testButton), W::wasButtonReleased(testButton));
  31. Core::Vector2 mouse = W::getLastMousePosition();
  32. Core::logInfo("Mouse: {} {}\n", mouse[0], mouse[1]);
  33. }
  34. if(W::getButtonDownTime(textButton) == 1) {
  35. if(W::isInputEnabled()) {
  36. W::disableInput();
  37. } else {
  38. W::enableInput();
  39. }
  40. }
  41. if(W::isInputEnabled()) {
  42. Core::print("Input: '{}'\n", W::getInputString());
  43. Core::print("Cursor: {}\n", W::getInputCursor());
  44. }
  45. }
  46. static void render(void*, float) {
  47. }
  48. static void printReport(
  49. Core::LogLevel l, const std::source_location& sl, void*,
  50. const char* message) {
  51. Core::log(
  52. l, Core::Terminal::FG_RED, Core::FormatLocation("{}", sl), message);
  53. }
  54. void testWindow() {
  55. setReportHandler(printReport, nullptr);
  56. W::Options options = {{800, 480}, false, "Test"};
  57. if(W::open(options)) {
  58. return;
  59. }
  60. closeButton = W::addButton("Close Button");
  61. W::bindKeyToButton(closeButton, GLFW_KEY_Q);
  62. testButton = W::addButton("Test Button");
  63. W::bindKeyToButton(testButton, GLFW_KEY_T);
  64. textButton = W::addButton("Text Button");
  65. W::bindKeyToButton(textButton, GLFW_KEY_C);
  66. W::show();
  67. W::setRunHandler(isRunning, nullptr);
  68. W::setTickHandler(tick, nullptr);
  69. W::setRenderHandler(render, nullptr);
  70. W::setNanosPerTick(50'000'000);
  71. W::run();
  72. W::close();
  73. }