Added jump effects (sound and graphics).

This commit is contained in:
Steve 2016-02-14 18:13:15 +00:00
parent b5fc0aacbd
commit b99dd3a4e4
7 changed files with 69 additions and 23 deletions

View File

@ -14,11 +14,11 @@ GRAPHICS
gfx/planets/earth.png - modified from the the Blue Marble NASA photograph: http://visibleearth.nasa.gov/view.php?id=57723 gfx/planets/earth.png - modified from the the Blue Marble NASA photograph: http://visibleearth.nasa.gov/view.php?id=57723
All other graphics are CC BY-NC-SA 3.0, with the following attribution: Copyright 2015, Stephen J Sweeney | www.battleforthesolarsystem.com All other graphics are CC BY-NC-SA 3.0, with the following attribution: Copyright 2015,2016, Stephen J Sweeney | www.battleforthesolarsystem.com
DATA FILES (with the exception of Roboto font) DATA FILES (with the exception of Roboto font)
CC BY-NC-SA 3.0, with the following attribution: Copyright 2015, Stephen J Sweeney | www.battleforthesolarsystem.com CC BY-NC-SA 3.0, with the following attribution: Copyright 2015,2016, Stephen J Sweeney | www.battleforthesolarsystem.com
SOUND SOUND
@ -45,6 +45,7 @@ SOUND
321104__nsstudios__blip2.ogg - blip2, by nsstudios - https://freesound.org/people/nsstudios/sounds/321104/ 321104__nsstudios__blip2.ogg - blip2, by nsstudios - https://freesound.org/people/nsstudios/sounds/321104/
321906__bruce965__walkie-talkie-roger-beep.ogg - Walkie Talkie - Roger Beep, by bruce965 - https://freesound.org/people/bruce965/sounds/321906/ 321906__bruce965__walkie-talkie-roger-beep.ogg - Walkie Talkie - Roger Beep, by bruce965 - https://freesound.org/people/bruce965/sounds/321906/
322603__clippysounds__glass-break.ogg - Glass Break, by clippysounds - https://freesound.org/people/clippysounds/sounds/322603/ 322603__clippysounds__glass-break.ogg - Glass Break, by clippysounds - https://freesound.org/people/clippysounds/sounds/322603/
276912__pauldihor__transform.ogg - transform, by PaulDihor - https://freesound.org/people/PaulDihor/sounds/276912/
MUSIC MUSIC

Binary file not shown.

View File

@ -44,25 +44,23 @@ void doEffects(void)
e->x += e->dx; e->x += e->dx;
e->y += e->dy; e->y += e->dy;
e->a -= (e->type != EFFECT_ECM) ? 1 : 3;
e->a = MAX(0, e->a);
e->health--; e->health--;
e->size += e->scaleAmount; e->size += e->scaleAmount;
if (e->health <= 0) if (e->health <= 0)
{ {
e->a -= (e->type != EFFECT_ECM) ? 1 : 3; if (e == battle.effectTail)
if (e->a <= 0)
{ {
if (e == battle.effectTail) battle.effectTail = prev;
{
battle.effectTail = prev;
}
prev->next = e->next;
free(e);
e = prev;
} }
prev->next = e->next;
free(e);
e = prev;
} }
prev = e; prev = e;
@ -84,6 +82,10 @@ void drawEffects(void)
switch (e->type) switch (e->type)
{ {
case EFFECT_POINT:
SDL_RenderDrawPoint(app.renderer, e->x - battle.camera.x, e->y - battle.camera.y);
break;
case EFFECT_LINE: case EFFECT_LINE:
SDL_RenderDrawLine(app.renderer, e->x - battle.camera.x, e->y - battle.camera.y, e->x + (e->dx * 3) - battle.camera.x, e->y + (e->dy * 3) - battle.camera.y); SDL_RenderDrawLine(app.renderer, e->x - battle.camera.x, e->y - battle.camera.y, e->x + (e->dx * 3) - battle.camera.x, e->y + (e->dy * 3) - battle.camera.y);
break; break;
@ -129,12 +131,12 @@ void addSmallFighterExplosion(void)
e->x = self->x + (rand() % 16 - rand() % 16); e->x = self->x + (rand() % 16 - rand() % 16);
e->y = self->y + (rand() % 16 - rand() % 16); e->y = self->y + (rand() % 16 - rand() % 16);
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 32; e->size = 32;
setRandomFlameHue(e); setRandomFlameHue(e);
e->a = 128 + (rand() % 128); e->a = 128 + (rand() % 128);
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
@ -154,12 +156,12 @@ void addDebrisFire(int x, int y)
e->x = x + (rand() % 8 - rand() % 8); e->x = x + (rand() % 8 - rand() % 8);
e->y = y + (rand() % 8 - rand() % 8); e->y = y + (rand() % 8 - rand() % 8);
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 4 + rand() % 12; e->size = 4 + rand() % 12;
setRandomFlameHue(e); setRandomFlameHue(e);
e->a = rand() % 256; e->a = rand() % 256;
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
@ -186,13 +188,13 @@ void addSmallExplosion(void)
e->dy = (rand() % 25) - (rand() % 25); e->dy = (rand() % 25) - (rand() % 25);
e->dy *= 0.025; e->dy *= 0.025;
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 32 + (rand() % 64); e->size = 32 + (rand() % 64);
e->r = 255; e->r = 255;
setRandomFlameHue(e); setRandomFlameHue(e);
e->a = 128 + (rand() % 128); e->a = 128 + (rand() % 128);
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
@ -212,9 +214,9 @@ void addSmallExplosion(void)
e->dx *= 0.1; e->dx *= 0.1;
e->dy = rand() % 64 - rand() % 64; e->dy = rand() % 64 - rand() % 64;
e->dy *= 0.1; e->dy *= 0.1;
e->health = FPS / 2;
e->a = 128; e->a = 128;
e->health = e->a;
setRandomFlameHue(e); setRandomFlameHue(e);
} }
@ -241,13 +243,13 @@ void addMissileExplosion(Bullet *b)
e->dy = (rand() % 25) - (rand() % 25); e->dy = (rand() % 25) - (rand() % 25);
e->dy *= 0.025; e->dy *= 0.025;
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 32 + (rand() % 64); e->size = 32 + (rand() % 64);
e->r = 255; e->r = 255;
setRandomFlameHue(e); setRandomFlameHue(e);
e->a = 128 + (rand() % 128); e->a = 128 + (rand() % 128);
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
@ -267,9 +269,9 @@ void addMissileExplosion(Bullet *b)
e->dx *= 0.1; e->dx *= 0.1;
e->dy = rand() % 64 - rand() % 64; e->dy = rand() % 64 - rand() % 64;
e->dy *= 0.1; e->dy *= 0.1;
e->health = FPS / 2;
e->a = 128; e->a = 128;
e->health = e->a;
setRandomFlameHue(e); setRandomFlameHue(e);
} }
@ -299,13 +301,14 @@ void addEngineEffect(void)
e->x += rand() % 4 - rand() % 4; e->x += rand() % 4 - rand() % 4;
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 16; e->size = 16;
e->r = 128; e->r = 128;
e->g = 128; e->g = 128;
e->b = 255; e->b = 255;
e->a = 64; e->a = 64;
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
} }
@ -331,13 +334,14 @@ void addLargeEngineEffect(void)
e->x -= rand() % 4; e->x -= rand() % 4;
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 64; e->size = 64;
e->r = 128; e->r = 128;
e->g = 128; e->g = 128;
e->b = 255; e->b = 255;
e->a = 64; e->a = 64;
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
} }
@ -363,11 +367,12 @@ void addMissileEngineEffect(Bullet *b)
e->x -= rand() % 4; e->x -= rand() % 4;
e->texture = explosionTexture; e->texture = explosionTexture;
e->health = 0;
e->size = 12; e->size = 12;
setRandomFlameHue(e); setRandomFlameHue(e);
e->a = 128; e->a = 128;
e->health = e->a;
e->x -= e->size / 2; e->x -= e->size / 2;
e->y -= e->size / 2; e->y -= e->size / 2;
} }

View File

@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
static void think(void); static void think(void);
static void handleFleeingEntities(void); static void handleFleeingEntities(void);
static void addEscapeEffect(Entity *ent);
Entity *spawnExtractionPoint(void) Entity *spawnExtractionPoint(void)
{ {
@ -60,9 +61,44 @@ static void handleFleeingEntities(void)
for (i = 0, e = candidates[i] ; e != NULL ; e = candidates[++i]) for (i = 0, e = candidates[i] ; e != NULL ; e = candidates[++i])
{ {
if (e->health > 0 && e->flags & EF_RETREATING && getDistance(self->x, self->y, e->x, e->y) <= 64) if (e->health > 0 && e->flags & EF_RETREATING && getDistance(self->x, self->y, e->x, e->y) <= 255)
{ {
e->alive = ALIVE_ESCAPED; e->alive = ALIVE_ESCAPED;
addEscapeEffect(e);
playSound(SND_JUMP);
} }
} }
} }
static void addEscapeEffect(Entity *ent)
{
Effect *e;
int i, n, speed;
n = ent->w * ent->h;
for (i = 0 ; i < n ; i++)
{
e = malloc(sizeof(Effect));
memset(e, 0, sizeof(Effect));
battle.effectTail->next = e;
battle.effectTail = e;
speed = 50 + rand() % 50;
e->type = EFFECT_POINT;
e->x = ent->x + (rand() % ent->w) - (rand() % ent->w);
e->y = ent->y + (rand() % ent->h) - (rand() % ent->w);
e->dx = self->x - e->x;
e->dx /= speed;
e->dy = self->y - e->y;
e->dy /= speed;
e->r = e->g = e->b = e->a = (rand() % 255);
e->health = speed;
}
}

View File

@ -24,6 +24,7 @@ extern SDL_Texture *getTexture(char *filename);
extern Entity *spawnEntity(void); extern Entity *spawnEntity(void);
extern Entity **getAllEntsWithin(int x, int y, int w, int h, Entity *ignore); extern Entity **getAllEntsWithin(int x, int y, int w, int h, Entity *ignore);
extern int getDistance(int x1, int y1, int x2, int y2); extern int getDistance(int x1, int y1, int x2, int y2);
extern void playSound(int id);
extern Battle battle; extern Battle battle;
extern Entity *self; extern Entity *self;

View File

@ -172,6 +172,7 @@ enum
enum enum
{ {
EFFECT_POINT,
EFFECT_LINE, EFFECT_LINE,
EFFECT_TEXTURE, EFFECT_TEXTURE,
EFFECT_HALO, EFFECT_HALO,
@ -194,6 +195,7 @@ enum
SND_GET_ITEM, SND_GET_ITEM,
SND_MISSILE, SND_MISSILE,
SND_INCOMING, SND_INCOMING,
SND_JUMP,
SND_BOOST, SND_BOOST,
SND_RADIO, SND_RADIO,
SND_GUI_CLICK, SND_GUI_CLICK,

View File

@ -107,6 +107,7 @@ static void loadSounds(void)
sounds[SND_EXPLOSION_2] = Mix_LoadWAV(getFileLocation("sound/207322__animationisaac__short-explosion.ogg")); sounds[SND_EXPLOSION_2] = Mix_LoadWAV(getFileLocation("sound/207322__animationisaac__short-explosion.ogg"));
sounds[SND_EXPLOSION_3] = Mix_LoadWAV(getFileLocation("sound/254071__tb0y298__firework-explosion.ogg")); sounds[SND_EXPLOSION_3] = Mix_LoadWAV(getFileLocation("sound/254071__tb0y298__firework-explosion.ogg"));
sounds[SND_EXPLOSION_4] = Mix_LoadWAV(getFileLocation("sound/47252__nthompson__bad-explosion.ogg")); sounds[SND_EXPLOSION_4] = Mix_LoadWAV(getFileLocation("sound/47252__nthompson__bad-explosion.ogg"));
sounds[SND_JUMP] = Mix_LoadWAV(getFileLocation("sound/276912__pauldihor__transform.ogg"));
sounds[SND_GUI_CLICK] = Mix_LoadWAV(getFileLocation("sound/257786__xtrgamr__mouse-click.ogg")); sounds[SND_GUI_CLICK] = Mix_LoadWAV(getFileLocation("sound/257786__xtrgamr__mouse-click.ogg"));
sounds[SND_GUI_SELECT] = Mix_LoadWAV(getFileLocation("sound/321104__nsstudios__blip2.ogg")); sounds[SND_GUI_SELECT] = Mix_LoadWAV(getFileLocation("sound/321104__nsstudios__blip2.ogg"));