#ifndef __LEVEL_MANAGER__ #define __LEVEL_MANAGER__ #include #include #include #include #include namespace gdw { class entity; class engine; class level_manager { public: level_manager(engine& engine); ~level_manager(); level_manager(level_manager&) = delete; level_manager& operator=(level_manager) = delete; level_manager& operator=(level_manager&&) = delete; void build_stage(); entity* player(); entity* camera(); entity* cannon(); entity* blue_portal(); entity* yellow_portal(); void create_victim(float z); void update(float dt); float player_speed() {return player_speed_;} void create_asteroid(glm::vec3 pos, std::string mesh_name, float scale, glm::vec3 rotation); void create_item(glm::vec3 pos, int type); void destroy_victim(glm::vec3 item_spawn_pos, unsigned long long id); void destroy_all_victims(); void destroy_all_asteroids(); maploader& get_maploader() {return maploader_;} weapon_type weapon() {return weapon_type_;} void set_weapon(weapon_type type) {weapon_type_ = type;} void create_blue_portal(glm::vec3 world_pos); void create_yellow_portal(glm::vec3 world_pos); bool level_build() {return is_level_build_;} private: engine& engine_; std::vector victims_; std::vector asteroids_; std::vector items_; unsigned long long player_; unsigned long long camera_; unsigned long long cannon_; unsigned long long deathstar_; unsigned long long blue_portal_; unsigned long long yellow_portal_; std::vector items_to_create; //Player Attributes const float player_speed_; weapon_type weapon_type_; maploader maploader_; float map_load_timer_; float plane_offset_y_; glm::vec4 cannon_socket_offset_; glm::vec4 cannon_offset_; bool is_level_build_; void loadMap(); }; } //Namespace gdw #endif