gfxEngine_documentation
bfg_spriteEngine.h
Go to the documentation of this file.
1 #ifndef SPRITEENGINE_H
2 #define SPRITEENGINE_H
3 
4 #ifndef PC_VERSION
5  #include <stdlib.h>
6  #include <kos.h>
7 #else
8  #include <stdlib.h>
9 #endif
10 
11 #define MAX_SPRITE 500
12 #define MAX_ANIMATION 30
13 #define MAX_ANIMATION_FRAME 20
14 #define ANIM_LOOP 1
15 #define ANIM_NOLOOP 0
17 #define ANIMATION_CLASSIQUE 0
18 #define ANIMATION_COMPLEXE 1
20 #define MAXHITBOX 10
22 #define MS_MAXMSPRITE 100
23 #define MS_MAXPART 8
24 #define MS_MAXANIM 10
30 typedef struct
31 {
32  int utilise;
33  float posx;
34  float posy;
35  int ibno;
39  float stepR;
40  int nbFrameR;
44  float stepTX;
45  int nbFrameTX;
46  int finTX;
49  float stepTY;
50  int nbFrameTY;
51  int finTY;
54  int animation_loop[MAX_ANIMATION];
55  int animation_speed[MAX_ANIMATION];
58  int intern1;
60  int rotcenter;
61  int hitbox_x;
62  int hitbox_y;
63  int hitbox_h;
64  int hitbox_l;
66  float rot;
67  float zx;
68  float zy;
69  int layer;
70 } ssprite;
71 
76 typedef struct
77 {
78  float x;
79  float step_x;
80  float y;
81  float step_y;
82  float rot;
83  float step_rot;
84  float zx;
85  float zy;
86  int ibno;
88  int *anim;
89  int anim_loop;
90  int animate;
92  int anim_cpt;
93 } spart;
94 
99 typedef struct
100 {
101 
102  int utilise;
105  float posx;
106  float posy;
107  int nbpart;
109  int offset;
112  int cpt;
113 
116  int loop;
123  int nbHitBox;
124  int hb_x[MAXHITBOX];
125  int hb_y[MAXHITBOX];
126  int hb_h[MAXHITBOX];
127  int hb_l[MAXHITBOX];
129 } smsprite;
130 
131 
139 int spr_isSpriteCollidePerfect(int sprite1,int sprite2);
140 
148 int spr_isSpriteCollidePerfectCompress(int sprite1,int sprite2);
149 
155 int spr_count_used_sprites(void);
156 
157 
162 void spr_initSpriteEngine();
163 
173 void spr_initSprite(int n,float x,float y,float rot,int i);
174 
179 int spr_reserveFreeSprite(void);
180 
186 int spr_reserveFreeSpriteFrom(int borne);
187 
196 int spr_initFreeSprite(float x,float y,float r,int i);
197 
202 void spr_releaseSprite(int n);
203 
207 void spr_releaseAllSprite();
208 
214 void spr_animateSprite(int s,int a);
215 
222 void spr_changeSmoothSpriteRotAbsolute(int s,float nouvelAngle,int nbFrame);
223 
224 
232 void spr_changeSmoothSpriteRotRelative(int s,float AngleStep,int nbFrame);
233 
240 void spr_changeSmoothSpriteTXAbsolute(int s,float nouvelPosX,int nbFrame);
241 
248 void spr_changeSmoothSpriteTXRelative(int s,float StepX,int nbFrame);
249 
256 void spr_changeSmoothSpriteTYAbsolute(int s,float nouvelPosY,int nbFrame);
257 
264 void spr_changeSmoothSpriteTYRelative(int s,float StepY,int nbFrame);
265 
274 void spr_setSpriteAnimation(int s,int a,int speed,int f0,int f1,int f2,int f3,int f4,int f5,int f6,int f7,int f8,int f9,int f10,int f11,int f12,int f13,int f14,int f15,int f16,int f17,int f18,int f19,int loop);
275 
284 void spr_setSpriteAnimation2(int s,int a,int speed,int *v,int loop);
285 
294 void spr_setSpriteHitbox(int sprno,int hbx,int hby,int hbh,int hbl);
295 
302 void spr_moveSprite(int n,float x,float y);
303 
310 void spr_moveSpriteRelative(int n,float x,float y);
311 
318 void spr_changeSpriteRotation(int n,float r,int center);
319 
326 void spr_changeSpriteZoom(int n,float zx,float zy);
327 
333 void spr_changeSpriteImage(int n,int i);
334 
340 void spr_changeSpriteLayer(int n,int lno);
341 
346 void spr_showSprite(int n);
347 
352 void spr_updateSprites(int n);
353 
357 void spr_showAllSprites();
358 
363 void spr_showAllSpritesLayer(int layerno);
364 
369 void spr_updateAllSprites();
370 
375 void spr_stopAnimateSprite(int s);
376 
384 int spr_isSpriteCollide(int sprite1,int sprite2);
385 
386 float spr_getSpriteZoomX(int n);
387 float spr_getSpriteZoomY(int n);
388 float spr_getSpriteRot(int n);
389 float spr_getSpriteX(int n);
390 float spr_getSpriteY(int n);
391 int spr_getFinAnimation(int sprno);
392 int spr_getFinRotation(int sprno);
393 int spr_getFinTX(int sprno);
394 int spr_getFinTY(int sprno);
395 int spr_getCurrentAnimation(int sprno);
396 int spr_getCurrentAnimationFrame(int sprno);
397 int spr_getHitBoxX(int sprno);
398 int spr_getHitBoxY(int sprno);
399 int spr_getHitBoxH(int sprno);
400 int spr_getHitBoxL(int sprno);
401 
402 /**************************/
403 /* GESTION DE MEGA-SPRITE */
404 /**************************/
405 
406 void ms_initMegaSpriteEngine(void);
407 int ms_reserveFreeMegaSprite(int nbPart);
408 void ms_destroyMegaSprite(int msno);
409 
410 
411 
430 void ms_setDataMoveAnimation(int msno,float *data,int loop);
431 
432 
433 void ms_setImagePart(int msno,int ipart,int ibno);
434 void ms_updateMegaSprite(int msno);
435 void ms_updateAllMegaSprite(void);
436 void ms_showMegaSprite(int msno);
437 void ms_showAllMegaSprite(void);
438 void ms_startAnimate(int msno);
439 void ms_stopAnimate(int msno);
440 void ms_setPosXPart(int msno,int pno,float x);
441 void ms_setPosYPart(int msno,int pno,float y);
442 void ms_setPosPart(int msno,int pno,float x,float y);
443 void ms_setRotPart(int msno,int pno,float r);
444 void ms_setPosX(int msno,float x);
445 void ms_setPosY(int msno,float y);
446 int ms_getCurrentPhase(int msno);
447 float ms_getPosX(int msno);
448 float ms_getPosY(int msno);
449 int ms_getFinAnimation(int msno);
450 int ms_isSpriteMegaSpriteCollide(int sprno,int msprno);
451 void ms_setNbHitBox(int msno,int nb);
452 void ms_setHitBox(int msprono,int hno,int vx,int vy,int vh,int vl);
453 void ms_setAnimationPart(int msno,int pno,int *data,int loop);
454 void ms_startAnimatePart(int msno,int pno);
455 void ms_stopAnimatePart(int msno,int pno);
456 #endif
float spr_getSpriteZoomX(int n)
Definition: bfg_spriteEngine.c:748
void ms_setNbHitBox(int msno, int nb)
Definition: bfg_spriteEngine.c:1111
void spr_moveSprite(int n, float x, float y)
Positionne le sprite.
Definition: bfg_spriteEngine.c:511
float spr_getSpriteZoomY(int n)
Definition: bfg_spriteEngine.c:758
float stepTY
Definition: bfg_spriteEngine.h:49
int spr_getFinTY(int sprno)
Definition: bfg_spriteEngine.c:798
int ibno
Definition: bfg_spriteEngine.h:35
void ms_startAnimatePart(int msno, int pno)
Definition: bfg_spriteEngine.c:1178
void spr_showAllSprites()
Affiche tout les sprites actifs.
Definition: bfg_spriteEngine.c:684
void ms_updateMegaSprite(int msno)
Definition: bfg_spriteEngine.c:893
int rotcenter
Definition: bfg_spriteEngine.h:60
int fin_animation
Definition: bfg_spriteEngine.h:119
#define MAX_ANIMATION_FRAME
Definition: bfg_spriteEngine.h:13
int finTX
Definition: bfg_spriteEngine.h:46
void spr_changeSmoothSpriteRotAbsolute(int s, float nouvelAngle, int nbFrame)
Change de maniere fluide la rotation d'un sprite en absolue.
Definition: bfg_spriteEngine.c:404
float x
Definition: bfg_spriteEngine.h:78
int spr_getHitBoxL(int sprno)
Definition: bfg_spriteEngine.c:825
int spr_getFinTX(int sprno)
Definition: bfg_spriteEngine.c:793
float spr_getSpriteX(int n)
Definition: bfg_spriteEngine.c:773
int hitbox_h
Definition: bfg_spriteEngine.h:63
int spr_reserveFreeSprite(void)
Reserve et initialise un sprite.
Definition: bfg_spriteEngine.c:264
int cpt
Definition: bfg_spriteEngine.h:112
void spr_changeSmoothSpriteTYAbsolute(int s, float nouvelPosY, int nbFrame)
Change de maniere fluide la position y d'un sprite en absolue.
Definition: bfg_spriteEngine.c:447
void ms_setImagePart(int msno, int ipart, int ibno)
Definition: bfg_spriteEngine.c:878
void ms_setPosPart(int msno, int pno, float x, float y)
Definition: bfg_spriteEngine.c:1070
void ms_stopAnimate(int msno)
Definition: bfg_spriteEngine.c:1055
int * anim
Definition: bfg_spriteEngine.h:88
Structure contenant les donnees des mega-sprite.
Definition: bfg_spriteEngine.h:99
int utilise
Definition: bfg_spriteEngine.h:32
int ibno
Definition: bfg_spriteEngine.h:86
#define MS_MAXPART
Definition: bfg_spriteEngine.h:23
float step_y
Definition: bfg_spriteEngine.h:81
void spr_setSpriteAnimation2(int s, int a, int speed, int *v, int loop)
Fonction un peu moins pourri pour definir une animation de sprite.
Definition: bfg_spriteEngine.c:468
void ms_initMegaSpriteEngine(void)
Definition: bfg_spriteEngine.c:834
float step_rot
Definition: bfg_spriteEngine.h:83
void ms_stopAnimatePart(int msno, int pno)
Definition: bfg_spriteEngine.c:1184
int hitbox_y
Definition: bfg_spriteEngine.h:62
void ms_setPosX(int msno, float x)
Definition: bfg_spriteEngine.c:1081
int spr_isSpriteCollidePerfectCompress(int sprite1, int sprite2)
Teste la collision parfaite entre deux sprites (Necessite un mask compresse charge en memoire) ...
Definition: bfg_spriteEngine.c:114
float zy
Definition: bfg_spriteEngine.h:85
int spr_reserveFreeSpriteFrom(int borne)
Reserve un sprite libre a partir d'un numero de sprite.
Definition: bfg_spriteEngine.c:293
int finRotation
Definition: bfg_spriteEngine.h:41
int anim_cpt
Definition: bfg_spriteEngine.h:92
int spr_initFreeSprite(float x, float y, float r, int i)
Reserve un sprite specifique a une position x,y avec une rotation et indique son centre de rotation...
Definition: bfg_spriteEngine.c:321
void spr_changeSmoothSpriteTXAbsolute(int s, float nouvelPosX, int nbFrame)
Change de maniere fluide la position x d'un sprite en absolue.
Definition: bfg_spriteEngine.c:426
int utilise
Definition: bfg_spriteEngine.h:102
int fin_animation
Definition: bfg_spriteEngine.h:59
int timer_precedent
Definition: bfg_spriteEngine.h:110
void spr_moveSpriteRelative(int n, float x, float y)
Positionne le sprite de manière relatif.
Definition: bfg_spriteEngine.c:518
float posx
Definition: bfg_spriteEngine.h:105
void ms_setDataMoveAnimation(int msno, float *data, int loop)
Definit les mouvements des differentes parties du megasprite.
Definition: bfg_spriteEngine.c:872
int spr_getHitBoxX(int sprno)
Definition: bfg_spriteEngine.c:813
void spr_setSpriteAnimation(int s, int a, int speed, int f0, int f1, int f2, int f3, int f4, int f5, int f6, int f7, int f8, int f9, int f10, int f11, int f12, int f13, int f14, int f15, int f16, int f17, int f18, int f19, int loop)
Fonction toute pourrie pour definir une animation de sprite.
Definition: bfg_spriteEngine.c:483
void ms_setPosY(int msno, float y)
Definition: bfg_spriteEngine.c:1086
void spr_updateSprites(int n)
Met a jour les animations du sprite.
Definition: bfg_spriteEngine.c:604
void ms_showMegaSprite(int msno)
Definition: bfg_spriteEngine.c:1019
void ms_setRotPart(int msno, int pno, float r)
Definition: bfg_spriteEngine.c:1076
float rot
Definition: bfg_spriteEngine.h:66
int finTY
Definition: bfg_spriteEngine.h:51
void spr_releaseAllSprite()
Libere tout les sprites.
Definition: bfg_spriteEngine.c:372
int current_animation_frame
Definition: bfg_spriteEngine.h:57
int spr_getFinAnimation(int sprno)
Definition: bfg_spriteEngine.c:783
int spr_getHitBoxY(int sprno)
Definition: bfg_spriteEngine.c:817
float posx
Definition: bfg_spriteEngine.h:33
float posy
Definition: bfg_spriteEngine.h:34
Structure contenant les donnees des morceaux de mega-sprite.
Definition: bfg_spriteEngine.h:76
void spr_setSpriteHitbox(int sprno, int hbx, int hby, int hbh, int hbl)
Definit la hitbox d'un sprite.
Definition: bfg_spriteEngine.c:739
void ms_setPosYPart(int msno, int pno, float y)
Definition: bfg_spriteEngine.c:1065
float spr_getSpriteRot(int n)
Definition: bfg_spriteEngine.c:768
int layer
Definition: bfg_spriteEngine.h:69
int nbHitBox
Definition: bfg_spriteEngine.h:123
void ms_setHitBox(int msprono, int hno, int vx, int vy, int vh, int vl)
Definition: bfg_spriteEngine.c:1116
void spr_animateSprite(int s, int a)
Declenche l'animation d'un sprite.
Definition: bfg_spriteEngine.c:390
void spr_initSprite(int n, float x, float y, float rot, int i)
Reserve un sprite specifique a une position x,y avec une rotation et indique son centre de rotation...
Definition: bfg_spriteEngine.c:242
void ms_updateAllMegaSprite(void)
Definition: bfg_spriteEngine.c:1009
#define MAXHITBOX
Definition: bfg_spriteEngine.h:20
float ms_getPosY(int msno)
Definition: bfg_spriteEngine.c:1096
void spr_releaseSprite(int n)
Libere le sprite.
Definition: bfg_spriteEngine.c:357
int nbFrameTX
Definition: bfg_spriteEngine.h:45
float ms_getPosX(int msno)
Definition: bfg_spriteEngine.c:1091
void spr_changeSpriteZoom(int n, float zx, float zy)
Change le zoom du sprite.
Definition: bfg_spriteEngine.c:532
int ms_reserveFreeMegaSprite(int nbPart)
Definition: bfg_spriteEngine.c:844
int ms_getCurrentPhase(int msno)
Definition: bfg_spriteEngine.c:1101
void spr_stopAnimateSprite(int s)
Arrete l'animation d'un sprite.
Definition: bfg_spriteEngine.c:677
float stepR
Definition: bfg_spriteEngine.h:39
int animate
Definition: bfg_spriteEngine.h:90
int spr_count_used_sprites(void)
Compte le nombre de sprite actif.
Definition: bfg_spriteEngine.c:209
#define MAX_ANIMATION
Definition: bfg_spriteEngine.h:12
float zx
Definition: bfg_spriteEngine.h:67
void ms_showAllMegaSprite(void)
Definition: bfg_spriteEngine.c:1038
void spr_showSprite(int n)
Affiche le sprite.
Definition: bfg_spriteEngine.c:644
int nbFrameTY
Definition: bfg_spriteEngine.h:50
int offset
Definition: bfg_spriteEngine.h:109
int anim_loop
Definition: bfg_spriteEngine.h:89
void spr_changeSpriteImage(int n, int i)
Change l'image du sprite.
Definition: bfg_spriteEngine.c:539
void spr_initSpriteEngine()
Initialise le moteur de sprite classique.
Definition: bfg_spriteEngine.c:221
float y
Definition: bfg_spriteEngine.h:80
int ms_getFinAnimation(int msno)
Definition: bfg_spriteEngine.c:1106
int ms_isSpriteMegaSpriteCollide(int sprno, int msprno)
Definition: bfg_spriteEngine.c:1147
float spr_getSpriteY(int n)
Definition: bfg_spriteEngine.c:778
int current_phase
Definition: bfg_spriteEngine.h:118
void ms_destroyMegaSprite(int msno)
Definition: bfg_spriteEngine.c:867
int intern1
Definition: bfg_spriteEngine.h:58
float posy
Definition: bfg_spriteEngine.h:106
float * dataMove_animation
Definition: bfg_spriteEngine.h:114
void spr_changeSpriteRotation(int n, float r, int center)
Change l'angle du sprite.
Definition: bfg_spriteEngine.c:525
int nbpart
Definition: bfg_spriteEngine.h:107
float step_x
Definition: bfg_spriteEngine.h:79
void ms_setAnimationPart(int msno, int pno, int *data, int loop)
Definition: bfg_spriteEngine.c:1171
float zx
Definition: bfg_spriteEngine.h:84
int spr_getCurrentAnimation(int sprno)
Definition: bfg_spriteEngine.c:803
void spr_changeSmoothSpriteTYRelative(int s, float StepY, int nbFrame)
Change de maniere fluide la position y d'un sprite en relatif.
Definition: bfg_spriteEngine.c:458
int hitbox_l
Definition: bfg_spriteEngine.h:64
int current_animation
Definition: bfg_spriteEngine.h:56
void spr_updateAllSprites()
Met a jour les animations de tout les sprites.
Definition: bfg_spriteEngine.c:668
int spr_getCurrentAnimationFrame(int sprno)
Definition: bfg_spriteEngine.c:808
void spr_changeSpriteLayer(int n, int lno)
Change le layer du sprite (Non utilise)
Definition: bfg_spriteEngine.c:545
void spr_showAllSpritesLayer(int layerno)
Affiche tout les sprites d'un certain layer (Non utilise)
Definition: bfg_spriteEngine.c:696
int spr_isSpriteCollide(int sprite1, int sprite2)
Teste la collision hitbox entre deux sprites.
Definition: bfg_spriteEngine.c:731
int anim_offset
Definition: bfg_spriteEngine.h:91
int spr_isSpriteCollidePerfect(int sprite1, int sprite2)
Teste la collision parfaite entre deux sprites (Necessite un mask charge en memoire) ...
Definition: bfg_spriteEngine.c:20
Structure contenant les donnees des sprites.
Definition: bfg_spriteEngine.h:30
float zy
Definition: bfg_spriteEngine.h:68
int spr_getFinRotation(int sprno)
Definition: bfg_spriteEngine.c:788
int loop
Definition: bfg_spriteEngine.h:116
int hitbox_x
Definition: bfg_spriteEngine.h:61
int timer_courant
Definition: bfg_spriteEngine.h:111
void ms_setPosXPart(int msno, int pno, float x)
Definition: bfg_spriteEngine.c:1060
void spr_changeSmoothSpriteRotRelative(int s, float AngleStep, int nbFrame)
Change de maniere fluide la rotation d'un sprite en relatif.
Definition: bfg_spriteEngine.c:415
void ms_startAnimate(int msno)
Definition: bfg_spriteEngine.c:1048
int anim_onoff
Definition: bfg_spriteEngine.h:115
void spr_changeSmoothSpriteTXRelative(int s, float StepX, int nbFrame)
Change de maniere fluide la position x d'un sprite en relatif.
Definition: bfg_spriteEngine.c:437
float stepTX
Definition: bfg_spriteEngine.h:44
float rot
Definition: bfg_spriteEngine.h:82
int spr_getHitBoxH(int sprno)
Definition: bfg_spriteEngine.c:821
int nbFrameR
Definition: bfg_spriteEngine.h:40