#include "systems/timer.h"
#include "ecs/component.h"
#include <raymath.h>
#include "components/sprite.h"
#include "components/common.h"
Aller au code source de ce fichier.
|
| bool | loose_laser_update (Pool *pool, Loose_laser *laser) |
| | Met à jour un loose laser pour une frame.
|
| void | loose_lasers_update_all (Pool *pool) |
| | Met à jour tous les loose lasers de la Pool.
|
| Entity | loose_laser_create (Pool *pool, int x, int y, float speed, float length, float width, int duration, Color color) |
| | Crée et attache un Loose_laser à une nouvelle entité.
|
| Entity | node_create (Pool *pool, float x, float y, float radius) |
| | Crée un node (entité) pour un loose laser.
|
| void | Loose_laser_destroy (Pool *pool, Entity id) |
| | Détruit un Loose_laser et libère ses ressources.
|
| void | draw_loose_laser (Loose_laser *laser, PositionManager *positionManager) |
| | Dessine un Loose_laser.
|
| void | draw_all_loose_lasers (Loose_laserManager *looseManager, PositionManager *positionManager) |
| | Dessine tous les loose lasers actifs du manager.
|
◆ DURATION_ETERNAL
| #define DURATION_ETERNAL 20000 |
◆ MAX_LOOSE_LASER
| #define MAX_LOOSE_LASER 282 |
◆ MAX_LOOSE_NODES
| #define MAX_LOOSE_NODES 1000 |
◆ draw_all_loose_lasers()
| void draw_all_loose_lasers |
( |
Loose_laserManager * | looseManager, |
|
|
PositionManager * | positionManager ) |
Dessine tous les loose lasers actifs du manager.
- Paramètres
-
| looseManager | Pointeur vers le Loose_laserManager. |
| positionManager | Pointeur vers le PositionManager. |
◆ draw_loose_laser()
| void draw_loose_laser |
( |
Loose_laser * | laser, |
|
|
PositionManager * | positionManager ) |
Dessine un Loose_laser.
Ne fait rien si moins de deux nodes sont présents. Parcourt les segments, calcule les normales et dessine des triangles et des cercles pour lisser les jonctions.
- Paramètres
-
| laser | Pointeur vers le Loose_laser à afficher. |
| positionManager | Pointeur vers le PositionManager pour consulter les positions des nodes. |
◆ loose_laser_create()
| Entity loose_laser_create |
( |
Pool * | pool, |
|
|
int | x, |
|
|
int | y, |
|
|
float | speed, |
|
|
float | length, |
|
|
float | width, |
|
|
int | duration, |
|
|
Color | color ) |
Crée et attache un Loose_laser à une nouvelle entité.
- Alloue un tableau de MAX_LOOSE_NODES pour stocker les nodes.
- Crée la tête du laser en spawnant une Bullet ennemie.
- Initialise le timer, la longueur cible, la largeur et la couleur.
- Ajoute le composant Loose_laser à l'entité et assigne le tag ENT_LOOSE_LASER.
- Paramètres
-
| pool | pool courante (toutes les données de l'ECS) |
| x | Position X initiale de la tête. |
| y | Position Y initiale de la tête. |
| speed | Vitesse initiale de la tête (transmise au spawn de la bullet). |
| length | Longueur cible du laser. |
| width | Épaisseur du laser. |
| duration | Durée de vie (unités du timer utilisée par le système). |
| color | Couleur du laser pour le rendu. |
- Renvoie
- L'identifiant de l'entité créée contenant le Loose_laser.
◆ Loose_laser_destroy()
| void Loose_laser_destroy |
( |
Pool * | pool, |
|
|
Entity | id ) |
Détruit un Loose_laser et libère ses ressources.
Tue toutes les entités correspondant aux nodes, libère le tableau de nodes et retire le composant du manager.
- Paramètres
-
| pool | pool courante (toutes les données de l'ECS) |
| id | Identifiant de l'entité contenant le Loose_laser. |
◆ loose_laser_update()
Met à jour un loose laser pour une frame.
- Ajoute un nouveau node si la capacité le permet.
- Décale les positions des nodes pour conserver l'historique.
- Tronque la chaîne si la longueur actuelle dépasse looseTargetLength.
- Incrémente le timer et indique si le laser doit persister.
- Paramètres
-
| pool | pool courante (toutes les données de l'ECS) |
| laser | Pointeur vers le Loose_laser à mettre à jour. |
- Renvoie
- true si le laser doit continuer d'exister; false s'il doit être supprimé.
◆ loose_lasers_update_all()
| void loose_lasers_update_all |
( |
Pool * | pool | ) |
|
Met à jour tous les loose lasers de la Pool.
Parcourt le manager de Loose_laser, appelle loose_laser_update pour chaque instance et marque les entités à supprimer si nécessaire.
- Paramètres
-
| pool | pool courante (toutes les données de l'ECS) |
◆ node_create()
| Entity node_create |
( |
Pool * | pool, |
|
|
float | x, |
|
|
float | y, |
|
|
float | radius ) |
Crée un node (entité) pour un loose laser.
Ajoute une Position et une Collision_circle à l'entité nouvellement créée.
- Paramètres
-
| pool | pool courante (toutes les données de l'ECS) |
| x | Position X initiale du node. |
| y | Position Y initiale du node. |
| radius | Rayon du cercle de collision. |
- Renvoie
- Identifiant de l'entité node créée.