mirror of
https://github.com/zoriya/Gamacon.git
synced 2026-05-30 10:11:00 +00:00
Adding a music renderer
This commit is contained in:
@@ -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 \
|
||||
|
||||
@@ -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
@@ -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);
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
** EPITECH PROJECT, 2020
|
||||
** Twac
|
||||
** File description:
|
||||
** discard_player
|
||||
*/
|
||||
|
||||
#include "texture.h"
|
||||
|
||||
void engine_play_music(gc_music *music)
|
||||
{
|
||||
(void)music;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user