mirror of
https://github.com/zoriya/Gamacon.git
synced 2026-06-07 13:34:40 +00:00
Cleaning up the scene constructor
This commit is contained in:
+8
-2
@@ -36,9 +36,15 @@ struct gc_scene
|
||||
bool is_paused;
|
||||
};
|
||||
|
||||
gc_scene *scene_create(gc_engine *engine, const char *xml);
|
||||
gc_scene *scene_new(gc_engine *engine);
|
||||
gc_scene *scene_parse_xml(gc_scene *scene, gc_engine *engine, const char *xml);
|
||||
|
||||
callback_t scene_get_callback(gc_scene *scene, char *name);
|
||||
gc_scene *scene_create(gc_engine *engine, const char *mappath);
|
||||
void scene_load_data(gc_engine *engine, gc_scene *scene, node *n);
|
||||
void *scene_get_data(gc_scene *scene, const char *type, const char *name);
|
||||
void scene_destroy(gc_scene *scene);
|
||||
void scene_load_entity(gc_scene *this, gc_engine *engine, node *n, int prefab);
|
||||
void scene_load_entity(gc_scene *this, gc_engine *engine, node *n, int prefab);
|
||||
gc_data *scene_get_data_ptr(gc_scene *this, void *data);
|
||||
gc_list *get_entity_by_cmp(gc_scene *scene, const char *cmp_name);
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
#include "engine.h"
|
||||
#include "entity.h"
|
||||
#include "utility.h"
|
||||
#include "prefab.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
gc_list *get_entity_by_cmp(gc_scene *scene, const char *cmp_name)
|
||||
{
|
||||
@@ -45,31 +43,6 @@ gc_data *scene_get_data_ptr(gc_scene *this, void *data)
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
gc_scene *scene_create(gc_engine *engine, const char *xmlpath)
|
||||
{
|
||||
gc_scene *scene = malloc(sizeof(gc_scene));
|
||||
node *n = NULL;
|
||||
|
||||
if (!scene || (xmlpath && !(n = xml_parse(xmlpath))))
|
||||
return (NULL);
|
||||
scene->is_paused = false;
|
||||
scene->entities = NULL;
|
||||
scene->entities_by_cmp = NULL;
|
||||
scene->add_entity = &entity_add;
|
||||
scene->get_entity = &entity_get;
|
||||
scene->get_entity_by_cmp = &get_entity_by_cmp;
|
||||
scene->destroy = &scene_destroy;
|
||||
scene->get_data = &scene_get_data;
|
||||
scene->get_data_ptr = &scene_get_data_ptr;
|
||||
scene->get_callback = &scene_get_callback;
|
||||
scene->load_entity = &scene_load_entity;
|
||||
scene->callbacks = engine->callbacks;
|
||||
scene_load_data(engine, scene, n);
|
||||
prefab_loadentities(n, engine, scene);
|
||||
xml_destroy(n);
|
||||
return (scene);
|
||||
}
|
||||
|
||||
callback_t scene_get_callback(gc_scene *this, char *name)
|
||||
{
|
||||
if (!name)
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
** EPITECH PROJECT, 2020
|
||||
** my_rpg
|
||||
** File description:
|
||||
** scene_constructor.c
|
||||
*/
|
||||
|
||||
#include "scene.h"
|
||||
#include "prefab.h"
|
||||
#include "xml.h"
|
||||
#include <malloc.h>
|
||||
|
||||
gc_scene *scene_new(gc_engine *engine)
|
||||
{
|
||||
gc_scene *scene = malloc(sizeof(gc_scene));
|
||||
|
||||
if (!scene)
|
||||
return (NULL);
|
||||
scene->is_paused = false;
|
||||
scene->entities = NULL;
|
||||
scene->entities_by_cmp = NULL;
|
||||
scene->add_entity = &entity_add;
|
||||
scene->get_entity = &entity_get;
|
||||
scene->get_entity_by_cmp = &get_entity_by_cmp;
|
||||
scene->destroy = &scene_destroy;
|
||||
scene->get_data = &scene_get_data;
|
||||
scene->get_data_ptr = &scene_get_data_ptr;
|
||||
scene->get_callback = &scene_get_callback;
|
||||
scene->load_entity = &scene_load_entity;
|
||||
scene->callbacks = engine->callbacks;
|
||||
scene->data = NULL;
|
||||
}
|
||||
|
||||
gc_scene *scene_parse_xml(gc_scene *scene, gc_engine *engine, const char *xml)
|
||||
{
|
||||
node *n = NULL;
|
||||
|
||||
if (!scene || (xml && !(n = xml_parse(xml))))
|
||||
return (NULL);
|
||||
scene_load_data(engine, scene, n);
|
||||
prefab_loadentities(n, engine, scene);
|
||||
xml_destroy(n);
|
||||
return (scene);
|
||||
}
|
||||
|
||||
gc_scene *scene_create(gc_engine *engine, const char *xml)
|
||||
{
|
||||
gc_scene *scene = scene_new(engine);
|
||||
scene_parse_xml(scene, engine, xml);
|
||||
return (scene);
|
||||
}
|
||||
@@ -20,7 +20,6 @@ void scene_load_data(gc_engine *engine, gc_scene *scene, node *n)
|
||||
gc_dataloader *loader;
|
||||
gc_data *data;
|
||||
|
||||
scene->data = NULL;
|
||||
if (!(n = xml_getnode(n, "data")))
|
||||
return;
|
||||
for (n = n->child; n; n = n->next) {
|
||||
|
||||
Reference in New Issue
Block a user