level.hpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // level.hpp
  3. // danmaku
  4. //
  5. // Created by Sam Jaffe on 5/26/19.
  6. // Copyright © 2019 Sam Jaffe. All rights reserved.
  7. //
  8. #pragma once
  9. #include "game/engine/scene.hpp"
  10. #include <deque>
  11. #include <json/forwards.h>
  12. #include <memory>
  13. #include <vector>
  14. namespace danmaku {
  15. class actor;
  16. class bullet;
  17. class player;
  18. class level : public engine::scene {
  19. public:
  20. level(std::string const & id, Json::Value const & json,
  21. std::shared_ptr<engine::game_dispatch>);
  22. level(Json::Value const & json, std::shared_ptr<engine::game_dispatch>);
  23. ~level();
  24. void update(float delta) override;
  25. void render(graphics::renderer & renderer) override;
  26. void add_bullet(bullet b);
  27. public:
  28. void update_waves(float delta);
  29. private:
  30. player * player_;
  31. std::vector<std::unique_ptr<actor>> actors_;
  32. std::vector<std::unique_ptr<bullet>> bullets_;
  33. struct {
  34. float const interval;
  35. float remainder{0.f};
  36. } wave_timer_;
  37. std::deque<std::vector<std::unique_ptr<actor>>> waves_;
  38. };
  39. }