GameBridge.mm 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // GameBridge.m
  3. // danmaku
  4. //
  5. // Created by Sam Jaffe on 5/28/19.
  6. // Copyright © 2019 Sam Jaffe. All rights reserved.
  7. //
  8. #import "GameBridge.h"
  9. #import <memory>
  10. #include "danmaku/world.hpp"
  11. #include "game/engine/game_dispatch.hpp"
  12. #include "game/graphics/renderer.hpp"
  13. @implementation GameBridge {
  14. std::shared_ptr<graphics::direct_renderer> renderer;
  15. std::shared_ptr<engine::game_dispatch> game;
  16. }
  17. - (id)init {
  18. if (!(self = [super init])) {
  19. return nil;
  20. }
  21. using namespace graphics;
  22. renderer = std::make_shared<direct_renderer>(driver::openGL);
  23. game = std::make_shared<engine::game_dispatch>(renderer);
  24. auto world = danmaku::world::load_world("scripts/level/world.json", game);
  25. game->register_scene(world);
  26. game->activate_scene("light-1");
  27. return self;
  28. }
  29. - (void) pause {
  30. // env::pause_clock();
  31. }
  32. - (void) unpause {
  33. // env::resume_clock();
  34. }
  35. - (void) update {
  36. game->update();
  37. }
  38. - (void) render {
  39. game->render();
  40. }
  41. - (void) refresh {
  42. renderer->clear();
  43. game->render();
  44. }
  45. - (void) keyEvent:(int)key down:(BOOL)pressed {
  46. game->process_key_event(key, pressed);
  47. }
  48. @end