#ifndef LEVEL_H_
#define LEVEL_H_
-#include <SDL2/SDL.h>
-#include <SDL2/SDL_mixer.h>
-#include "./player.h"
-#include "./platforms.h"
-#include "./camera.h"
-#include "./sound_medium.h"
+#include <SDL.h>
-typedef struct level_t level_t;
+#include "game/camera.h"
+#include "game/level/platforms.h"
+#include "game/level/player.h"
+#include "sound_samples.h"
-level_t *create_level_from_file(const char *file_name);
-void destroy_level(level_t *level);
+typedef struct Level Level;
+typedef struct LevelEditor LevelEditor;
-int level_render(const level_t *level, SDL_Renderer *renderer);
-int level_sound(level_t *level, sound_medium_t *sound_medium);
-int level_update(level_t *level, float delta_time);
+Level *create_level_from_level_editor(const LevelEditor *level_editor);
+void destroy_level(Level *level);
-int level_event(level_t *level, const SDL_Event *event);
-int level_input(level_t *level,
+int level_render(const Level *level, const Camera *camera);
+
+int level_sound(Level *level, Sound_samples *sound_samples);
+int level_update(Level *level, float delta_time);
+
+int level_event(Level *level, const SDL_Event *event,
+ Camera *camera, Sound_samples *sound_samples);
+int level_input(Level *level,
const Uint8 *const keyboard_state,
SDL_Joystick *the_stick_of_joy);
-int level_reload_preserve_player(level_t *level,
- const char *file_name);
+int level_enter_camera_event(Level *level, Camera *camera);
-void level_toggle_debug_mode(level_t *level);
-void level_toggle_pause_mode(level_t *level);
+void level_toggle_pause_mode(Level *level);
#endif // LEVEL_H_