Adding a music renderer

This commit is contained in:
AnonymusRaccoon
2020-01-08 17:12:20 +01:00
parent b8245b3f5d
commit c42c41291f
11 changed files with 81 additions and 2 deletions
+3
View File
@@ -7,6 +7,8 @@
SRC = src/engine/engine.c \
src/engine/engine_internal.c \
src/engine/discard_player.c \
src/engine/sfml_music_player.c \
src/renderer/sfml_functions.c \
src/renderer/update_to_cam.c \
src/renderer/texture_utility.c \
@@ -25,6 +27,7 @@ SRC = src/engine/engine.c \
src/components/friction_giver.c \
src/components/controllers/keyboard_controller.c \
src/scene/scene.c \
src/scene/scene_music.c \
src/utility/arraylen.c \
src/utility/list.c \
src/utility/tupple.c \
+3
View File
@@ -36,6 +36,8 @@ struct gc_engine
gc_list *components;
void (*add_component)(gc_engine *engine, const void *component);
const void *(*get_component)(gc_engine *engine, const char *name);
void (*play_music)(gc_music *music);
};
gc_engine *engine_create(void);
@@ -44,6 +46,7 @@ bool engine_has_focus(gc_engine *engine);
bool engine_is_keypressed(int key);
void handle_events(gc_engine *engine);
void engine_draw(gc_engine *engine);
void engine_play_music(gc_music *music);
int change_scene(gc_engine *engine, gc_scene *scene);
void engine_add_buildin_systems(gc_engine *engine);
+3 -1
View File
@@ -18,6 +18,7 @@ typedef struct gc_scene gc_scene;
struct gc_scene
{
gc_texture **textures;
gc_music *music;
void (*destroy)(gc_scene *scene);
gc_list *entities;
@@ -29,4 +30,5 @@ struct gc_scene
gc_scene *scene_create(gc_engine *engine, const char *mappath);
int scene_add_entity(gc_scene *scene, gc_entity *entity);
void scene_destroy(gc_scene *scene);
void scene_destroy(gc_scene *scene);
int scene_load_musics(gc_scene *scene, node *n);
+2
View File
@@ -9,6 +9,7 @@
#include "system.h"
#include <SFML/Graphics.h>
#include "texture.h"
#include "scene.h"
#include "systems/sfml_renderer_system.h"
#include "systems/camerafollow_system.h"
@@ -28,6 +29,7 @@ bool sfml_has_focus(gc_engine *engine);
bool sfml_is_keypressed(int key);
void sfml_handle_events(gc_engine *engine);
void sfml_draw(gc_engine *engine);
void sfml_play_music(gc_music *music);
void entities_update_to_cam(gc_scene *scene, \
struct sfml_renderer_system *renderer, struct camerafollow_system *cam);
void entities_update_to_cam_size(gc_scene *scene, gc_vector2 size);
+8
View File
@@ -6,10 +6,13 @@
*/
typedef struct gc_texture gc_texture;
typedef struct gc_music gc_music;
#pragma once
#include <SFML/Graphics.h>
#include <SFML/Audio.h>
#include "scene.h"
struct gc_texture
{
@@ -18,5 +21,10 @@ struct gc_texture
void (*destroy)(gc_texture *texture);
};
struct gc_music
{
sfMusic *music;
};
gc_texture *get_texture(gc_scene *scene, char *name);
gc_texture *texture_create(const char *path);
+13
View File
@@ -0,0 +1,13 @@
/*
** EPITECH PROJECT, 2020
** Twac
** File description:
** discard_player
*/
#include "texture.h"
void engine_play_music(gc_music *music)
{
(void)music;
}
+1
View File
@@ -72,6 +72,7 @@ gc_engine *engine_create(void)
engine->game_loop = &game_loop;
engine->draw = &engine_draw;
engine->change_scene = &change_scene;
engine->play_music = &engine_play_music;
engine->destroy = &engine_destroy;
engine_add_buildin_systems(engine);
engine_add_buildin_components(engine);
+16
View File
@@ -0,0 +1,16 @@
/*
** EPITECH PROJECT, 2020
** Twac
** File description:
** sfml_music_player
*/
#include "engine.h"
#include "texture.h"
#include <SFML/Audio.h>
void sfml_play_music(gc_music *music)
{
sfMusic_setLoop(music->music, true);
sfMusic_play(music->music);
}
+3 -1
View File
@@ -54,7 +54,7 @@ gc_scene *scene_create(gc_engine *engine, const char *xmlpath)
scene->textures = NULL;
if (xmlpath && !(n = xml_parse(xmlpath)))
return (NULL);
if (scene_load_textures(scene, n) < 0)
if (scene_load_textures(scene, n) < 0 || scene_load_musics(scene, n) < 0)
return (NULL);
scene->entities = NULL;
scene->entities_by_cmp = NULL;
@@ -72,6 +72,8 @@ int change_scene(gc_engine *engine, gc_scene *scene)
if (engine->scene)
engine->scene->destroy(engine->scene);
engine->scene = scene;
if (scene->music)
engine->play_music(scene->music);
return (0);
}
+28
View File
@@ -0,0 +1,28 @@
/*
** EPITECH PROJECT, 2020
** Twac
** File description:
** scene_music
*/
#include "scene.h"
#include "xml.h"
#include <SFML/Audio.h>
#include <malloc.h>
int scene_load_musics(gc_scene *scene, node *n)
{
char *path;
scene->music = malloc(sizeof(gc_music));
if (!scene->music)
return (-1);
n = xml_getnode(n, "music");
if (!n)
return (0);
path = xml_getproperty(n, "src");
scene->music->music = sfMusic_createFromFile(path);
if (!scene->music->music)
return (-1);
return (0);
}
+1
View File
@@ -78,6 +78,7 @@ void sfmlrend_ctr(void *rend, va_list list)
engine->is_keypressed = &sfml_is_keypressed;
engine->handle_events = &sfml_handle_events;
engine->draw = &sfml_draw;
engine->play_music = &sfml_play_music;
}
void sfmlrend_dtr(void *system)