![]() |
Yume Project 3.0
Touhou-inspired Danmaku game made in C only
|
Fonctions permettant de créer et gêrer des lasers droits. Plus de détails...
#include "systems/timer.h"#include "component.h"#include "assets.h"#include "components/collision_rectangle.h"#include "components/common.h"#include "components/sprite.h"Aller au code source de ce fichier.
Classes | |
| struct | Straight_laser |
| composante laser droit dans la pool Plus de détails... | |
Macros | |
| #define | LASER_STATE_WARNING -1 |
| #define | LASER_STATE_GROWING 0 |
| #define | LASER_STATE_DURATION 1 |
| #define | LASER_STATE_DONE 2 |
Fonctions | |
| bool | straight_laser_update (Pool *p, Entity laserID) |
| Met à jour un laser droit pour une frame. | |
| void | straight_lasers_update_all (Pool *pool) |
| Met à jour tous les lasers droits présents dans la pool. | |
| void | straight_laser_draw (Straight_laser *laser, Position *pos, Sprite *sprite) |
| Dessine un laser droit. | |
| void | straight_lasers_draw_all (Straight_laserManager *laserManager, PositionManager *positionManager, SpriteManager *spriteManager) |
| Dessine tous les lasers droits actifs du manager. | |
| Entity | straight_laser_create (Pool *pool, int x, int y, int angle, int length, int maxWidth, int warning, int growing, int duration, SpriteID graphic) |
| Crée un laser droit et l'attache à une nouvelle entité. | |
| Entity | straight_laser_enemy_create (Pool *pool, int x, int y, int angle, int length, int maxWidth, int warning, int growing, int duration, SpriteID graphic) |
| Variante de création marquant le laser comme projectile ennemi. | |
Fonctions permettant de créer et gêrer des lasers droits.
| #define LASER_STATE_DONE 2 |
| #define LASER_STATE_DURATION 1 |
| #define LASER_STATE_GROWING 0 |
| #define LASER_STATE_WARNING -1 |
| Entity straight_laser_create | ( | Pool * | pool, |
| int | x, | ||
| int | y, | ||
| int | angle, | ||
| int | length, | ||
| int | maxWidth, | ||
| int | warning, | ||
| int | growing, | ||
| int | duration, | ||
| SpriteID | graphic ) |
Crée un laser droit et l'attache à une nouvelle entité.
Paramètres temporels : warning, growing et duration sont des durées en frames utilisées pour initialiser le timer du composant.
| pool | Pointeur vers la pool. |
| x | Position X initiale du laser. |
| y | Position Y initiale du laser. |
| angle | Angle initial |
| length | Longueur du laser. |
| maxWidth | Largeur maximale du laser. |
| warning | Durée avant la phase de croissance. |
| growing | Durée de croissance pendant laquelle la largeur augmente. |
| duration | Durée pendant laquelle la largeur reste maximale. |
| graphic | ID du visuel à utiliser pour ce laser. |
| void straight_laser_draw | ( | Straight_laser * | laser, |
| Position * | pos, | ||
| Sprite * | sprite ) |
Dessine un laser droit.
Le dessin utilise la longueur et la largeur du composant ainsi que la Position et le sprite fournis.
| laser | laser à afficher |
| pos | position du laser |
| sprite | sprite utilisé pour le rendu du laser |
| Entity straight_laser_enemy_create | ( | Pool * | pool, |
| int | x, | ||
| int | y, | ||
| int | angle, | ||
| int | length, | ||
| int | maxWidth, | ||
| int | warning, | ||
| int | growing, | ||
| int | duration, | ||
| SpriteID | graphic ) |
Variante de création marquant le laser comme projectile ennemi.
Appelle straight_laser_create puis ajoute le flag FLAG_PROJECTILE_ENEMY à la flagList de l'entité.
Met à jour un laser droit pour une frame.
Le laser évolue selon son timer interne. Il peut passer à l'état suivant si son heure d'activation ou de destruction est venue.
| p | pool courante (toutes les données de l'ECS) |
| laserID | id du laser à mettre à jour |
| void straight_lasers_draw_all | ( | Straight_laserManager * | laserManager, |
| PositionManager * | positionManager, | ||
| SpriteManager * | spriteManager ) |
Dessine tous les lasers droits actifs du manager.
| laserManager | Straight_laserManager |
| positionManager | PositionManager |
| spriteManager | SpriteManager |
| void straight_lasers_update_all | ( | Pool * | pool | ) |
Met à jour tous les lasers droits présents dans la pool.
Parcourt le Straight_laserManager et appelle straight_laser_update pour chaque instance et marque les entités à supprimer si nécessaire.
| pool | pool courante (toutes les données de l'ECS) |