mcDungeonsMenu.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma once
  2. #include <gl2d/gl2d.h>
  3. #include <imgui.h>
  4. #include <baseContainer.h>
  5. #include <shortcutApi/shortcutApi.h>
  6. #include <pikaSizes.h>
  7. #include <imgui_spinner.h>
  8. #include <glui/glui.h>
  9. #include <engineLibraresSupport/engineGL2DSupport.h>
  10. struct McDungeonsMenu : public Container
  11. {
  12. gl2d::Renderer2D renderer;
  13. gl2d::Font font;
  14. gl2d::Texture logo;
  15. gl2d::Texture button;
  16. glui::RendererUi ui;
  17. static ContainerStaticInfo containerInfo()
  18. {
  19. ContainerStaticInfo info = {};
  20. info.defaultHeapMemorySize = pika::MB(100);
  21. info.requestImguiFbo = true;
  22. //info.openOnApplicationStartup = true;
  23. return info;
  24. }
  25. bool create(RequestedContainerInfo &requestedInfo, pika::StaticString<256> commandLineArgument)
  26. {
  27. renderer.create(requestedInfo.requestedFBO.fbo);
  28. //pika::initShortcutApi(); //todo do this in dll load
  29. font = pika::gl2d::loadFont(PIKA_RESOURCES_PATH "mcDungeons/CommodorePixeled.ttf", requestedInfo);
  30. logo = pika::gl2d::loadTexture(PIKA_RESOURCES_PATH "mcDungeons/logo.png", requestedInfo);
  31. button = pika::gl2d::loadTexture(PIKA_RESOURCES_PATH "mcDungeons/button.png", requestedInfo);
  32. return true;
  33. }
  34. bool update(pika::Input input, pika::WindowState windowState,
  35. RequestedContainerInfo &requestedInfo)
  36. {
  37. glClear(GL_COLOR_BUFFER_BIT);
  38. renderer.updateWindowMetrics(windowState.windowW, windowState.windowH);
  39. ui.Begin(69);
  40. {
  41. ui.Texture(1, logo);
  42. if (ui.Button("Start game", Colors_White, button))
  43. {
  44. requestedInfo.createContainer("McDungeonsGameplay");
  45. return 0;
  46. }
  47. //ui.BeginMenu("Settings", Colors_White, button);
  48. //{
  49. // if (ui.Button("Adaptive rezolution", Colors_White, button))
  50. // {
  51. //
  52. // }
  53. //}
  54. //ui.EndMenu();
  55. }
  56. ui.End();
  57. ui.renderFrame(renderer, font, {input.mouseX, input.mouseY},
  58. input.lMouse.pressed(), input.lMouse.held(), input.lMouse.released(),
  59. input.buttons[pika::Button::Escape].released(), input.typedInput, input.deltaTime);
  60. renderer.flush();
  61. return true;
  62. }
  63. void destruct(RequestedContainerInfo &requestedInfo)
  64. {
  65. renderer.cleanup();
  66. font.texture.cleanup();
  67. logo.cleanup();
  68. button.cleanup();
  69. }
  70. };