Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
pool.h
Aller à la documentation de ce fichier.
1/***************************************************************
2 * @file pool.h
3 * @brief Structure contenant l'ECS
4 *
5 * UTILISATION :
6 * 1) Créer les fichiers.h et .c décrivant votre composante
7 * 2) Dans le .h, utiliser les macros DEFINE_COMPONENT_MANAGER
8 * et DECLARE_SETTER_GETTER dans ecs/component.h
9 * 3) Rajouter votre ComponentManager ici, dans la structure Pool
10 * 4) Ajouter la fonction Component_init dans Pool_init (ecs/pool.c)
11 * 5) Ajouter la fonction Component_remove dans pool_kill_entity (ecs/pool.c)
12 *
13 ***************************************************************/
14
15#pragma once
16
17#include "background.h"
18#include "bullet.h"
19#include "collision_circle.h"
20#include "collision_rectangle.h"
21#include "common.h"
22#include "life.h"
23#include "physics.h"
24#include "sprite.h"
25#include "ecs/ecs.h"
26#include "player.h"
27#include "life.h"
28#include "straight_laser.h"
29#include "looseLaser.h"
30#include "enemy.h"
31#include "flags.h"
32
42typedef struct Pool {
43 //common
44 PositionManager position;
45 TagManager tag;
46 UidManager uid;
47 OwnerManager owner;
48
49 // TimerManager timer;
50 PhysicsManager physics;
51 SpriteManager sprite;
52 CondensationManager condensation;
53
54 EnemyManager enemy;
55
56 //collisions
57 Collision_circleManager collision_circle;
58 Collision_rectangleManager collision_rectangle;
59
60 //lasers
61 Straight_laserManager straightLaser;
62 Loose_laserManager looseLaser;
63
64 LifeManager life;
65 PlayerManager player;
66 WeaponManager weapon;
67
68 flagListManager flagList;
69
70 BackgroundManager background;
71
72 // Nouvelle gestion des indices
73 Entity free_indices[MAX_ENTITIES]; // Le tableau qui stocke les IDs dispos
74 int free_top; // L'index du sommet de la pile (si il est a 5000 la pile est
75 // pleine et si il est a zero jeu saturé)
76
77 //Toute entité devant être détruite est ajoutée à cette file d'attente. L'entité est détruite en fin de tour du game loop.
81
90extern void pool_init(Pool *p);
91
102
112extern void pool_kill_convicts(Pool *p);
113
124extern void pool_kill_entity(Pool *p, Entity e);
125
137
Affichage des backgrounds 2D.
Fonctions qui permettent de tirer des bullets de différentes manières.
collisions circulaires
collisions rectangulaires
Composants communs à toutes les entités (Position, Tag).
Types et déclarations utilisés dans l'ECS.
#define MAX_ENTITIES
Definition ecs.h:14
uint32_t Entity
Une entité est un indice.
Definition ecs.h:20
Composant et fonctions de gestion des ennemis.
Les flags sont des critères qu'une entité peut avoir ou ne pas avoir. Chaque flag active un comportem...
Composante de l'HP.
Composante de Cinématique (Mouvement).
Gestion du joueur : structures Player, Weapon.
void pool_kill_convicts(Pool *p)
Détruit toutes les entités présentes dans la kill_queue.
Entity entity_unbox(Pool *p, BoxedEntity box)
Récupère l'Id d'une entité à partir d'un BoxedEntity si toujours valide.
BoxedEntity entity_box(Pool *p, Entity ent)
Encapsule une Entity dans un BoxedEntity contenant son UID.
void pool_init(Pool *p)
Initialise la pool (ECS) et tous les managers de composants.
void pool_kill_entity(Pool *p, Entity e)
Marque une entité pour destruction en fin de frame.
Entity pool_create_entity(Pool *p)
Crée une nouvelle entité et retourne son identifiant.
Composante du sprite.
Fonctions permettant de créer et gêrer des lasers droits.
Référence unique pour identifier une entité même après qu'elle ai quitté l'ECS.
Definition ecs.h:26
La pool est la structure qui contient l'Entity Component System Elle gêre les différentes composantes...
Definition pool.h:42
int kill_count
Definition pool.h:79
flagListManager flagList
Definition pool.h:68
OwnerManager owner
Definition pool.h:47
Collision_circleManager collision_circle
Definition pool.h:57
TagManager tag
Definition pool.h:45
PositionManager position
Definition pool.h:44
UidManager uid
Definition pool.h:46
WeaponManager weapon
Definition pool.h:66
int free_top
Definition pool.h:74
BackgroundManager background
Definition pool.h:70
Collision_rectangleManager collision_rectangle
Definition pool.h:58
Entity kill_queue[MAX_ENTITIES]
Definition pool.h:78
Straight_laserManager straightLaser
Definition pool.h:61
EnemyManager enemy
Definition pool.h:54
CondensationManager condensation
Definition pool.h:52
SpriteManager sprite
Definition pool.h:51
PhysicsManager physics
Definition pool.h:50
Entity free_indices[MAX_ENTITIES]
Definition pool.h:73
Loose_laserManager looseLaser
Definition pool.h:62
LifeManager life
Definition pool.h:64
PlayerManager player
Definition pool.h:65