| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- //
- // level.hpp
- // danmaku
- //
- // Created by Sam Jaffe on 5/26/19.
- // Copyright © 2019 Sam Jaffe. All rights reserved.
- //
- #pragma once
- #include "game/engine/scene.hpp"
- #include <deque>
- #include <json/forwards.h>
- #include <memory>
- #include <vector>
- namespace danmaku {
- class actor;
- class bullet;
- class player;
- class level : public engine::scene {
- public:
- level(std::string const & id, Json::Value const & json,
- std::shared_ptr<engine::game_dispatch>);
- level(Json::Value const & json, std::shared_ptr<engine::game_dispatch>);
- ~level();
- void update(float delta) override;
- void render(graphics::renderer & renderer) override;
- void set_player(player * p) { player_ = p; }
- void add_bullet(bullet b);
- public:
- void update_waves(float delta);
- private:
- player * player_;
- std::vector<std::unique_ptr<actor>> actors_;
- std::vector<std::unique_ptr<bullet>> bullets_;
- struct {
- float const interval;
- float remainder{0.f};
- } wave_timer_;
- std::deque<std::vector<std::unique_ptr<actor>>> waves_;
- };
- }
|