SDLGameEngine

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

# src/sgespritegroup.c

    00001 /*
    00002  * Copyright (c) 2007 Heiko Irrgang
    00003  *
    00004  * The license and distribution terms for this file may be
    00005  * found in the file COPYING in this distribution or at
    00006  * http://93-interactive.com/cms/products/software/sdl-game-engine/license/
    00007  */
    00008
    00009 #include <sge.h>
    00010
    00011 SGESPRITEGROUP *sgeSpriteGroupNew(void) {
    00012         SGESPRITEGROUP *ret;
    00013         sgeNew(ret, SGESPRITEGROUP);
    00014         ret->sprite=sgeArrayNew();
    00015         return ret;
    00016 }
    00017
    00018 static void sgeSpriteGroupDestroySpriteHelper(Uint32 id, void *data) {
    00019         SGESPRITE *s=(SGESPRITE *)data;
    00020         if (s!=NULL) sgeSpriteDestroy(s);
    00021 }
    00022
    00023 void sgeSpriteGroupDestroy(SGESPRITEGROUP *g) {
    00024         sgeArrayForEach(g->sprite, sgeSpriteGroupDestroySpriteHelper);
    00025         sgeArrayDestroy(g->sprite);
    00026         sgeFree(g);
    00027 }
    00028
    00029 void sgeSpriteGroupAddSprite(SGESPRITEGROUP *g, SGESPRITE *s) {
    00030         sgeArrayAdd(g->sprite,s);
    00031 }
    00032
    00033 int sgeSpriteGroupCollide(SGESPRITEGROUP *g, SGESPRITEGROUP *cg) {
    00034         if (sgeSpriteGroupGetCollider(g,cg)==NULL) return 0;
    00035         return 1;
    00036 }
    00037
    00038 int sgeSpriteGroupCollideSprite(SGESPRITEGROUP *g, SGESPRITE *s) {
    00039         if (sgeSpriteGroupGetColliderSprite(g,s)==NULL) return 0;
    00040         return 1;
    00041 }
    00042
    00043 SGESPRITE *sgeSpriteGroupGetCollider(SGESPRITEGROUP *g, SGESPRITEGROUP *cg) {
    00044         SGESPRITE *tmpa;
    00045         int i;
    00046         for (i=0;i<g->sprite->numberOfElements;i++) {
    00047                 tmpa=(SGESPRITE *)sgeArrayGet(g->sprite,i);
    00048                 if (sgeSpriteGroupCollideSprite(cg, tmpa)) return tmpa;
    00049         }
    00050         return NULL;
    00051 }
    00052
    00053 SGESPRITE *sgeSpriteGroupGetColliderSprite(SGESPRITEGROUP *g, SGESPRITE *s) {
    00054         SGESPRITE *tmpa;
    00055         int i;
    00056         for (i=0;i<g->sprite->numberOfElements;i++) {
    00057                 tmpa=(SGESPRITE *)sgeArrayGet(g->sprite,i);
    00058                 if (sgeSpriteCollide(tmpa,s)) return tmpa;
    00059         }
    00060         return NULL;
    00061 }
    00062
    00063 void sgeSpriteGroupDraw(SGESPRITEGROUP *g) {
    00064         SGESPRITE *tmpa;
    00065         int i;
    00066         for (i=0;i<g->sprite->numberOfElements;i++) {
    00067                 tmpa=(SGESPRITE *)sgeArrayGet(g->sprite,i);
    00068                 sgeSpriteDraw(tmpa, screen);
    00069         }
    00070 }
    00071
    00072 void sgeSpriteGroupDrawRelative(SGESPRITEGROUP *g, int camx, int camy) {
    00073         SGESPRITE *tmpa;
    00074         int i;
    00075         for (i=0;i<g->sprite->numberOfElements;i++) {
    00076                 tmpa=(SGESPRITE *)sgeArrayGet(g->sprite,i);
    00077                 sgeSpriteDrawXY(tmpa, tmpa->x-camx, tmpa->y-camy, screen);
    00078         }
    00079 }
    00080

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines