Array resize bug fixes.

This commit is contained in:
Steve 2016-02-24 23:12:13 +00:00
parent e3dd4d62af
commit 239845a279
6 changed files with 33 additions and 11 deletions

View File

@ -78,6 +78,9 @@ extern void doDebris(void);
extern void drawDebris(void);
extern void doLocations(void);
extern void drawLocations(void);
extern void destroyDebris(void);
extern void destroyBullets(void);
extern void destroyEffects(void);
extern App app;
extern Battle battle;

View File

@ -78,7 +78,7 @@ void doBullets(void)
incomingMissile = 0;
memset(bulletsToDraw, 0, sizeof(Bullet*) * MAX_BULLETS_TO_DRAW);
memset(bulletsToDraw, 0, sizeof(Bullet*) * drawCapacity);
for (b = battle.bulletHead.next ; b != NULL ; b = b->next)
{
@ -143,7 +143,7 @@ static void resizeDrawList(void)
n = drawCapacity + INITIAL_BULLET_DRAW_CAPACITY;
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Resizing bullet draw capacity: %d -> %d\n", drawCapacity, n);
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "Resizing bullet draw capacity: %d -> %d\n", drawCapacity, n);
bullets = malloc(sizeof(Bullet*) * n);
memset(bullets, 0, sizeof(Bullet*) * n);
@ -407,6 +407,10 @@ void fireMissile(Entity *owner)
}
void destroyBulletDefs(void)
{
}
void destroyBullets(void)
{
free(bulletsToDraw);

View File

@ -36,7 +36,7 @@ void initDebris(void)
debrisTexture[4] = getTexture("gfx/debris/debris5.png");
debrisTexture[5] = getTexture("gfx/debris/debris6.png");
drawCapacity = INITIAL_BULLET_DRAW_CAPACITY;
drawCapacity = INITIAL_DEBRIS_DRAW_CAPACITY;
debrisToDraw = malloc(sizeof(Bullet*) * drawCapacity);
memset(debrisToDraw, 0, sizeof(Bullet*) * drawCapacity);
@ -71,7 +71,7 @@ void doDebris(void)
int i;
Debris *d, *prev;
memset(debrisToDraw, 0, sizeof(Debris*) * MAX_DEBRIS_TO_DRAW);
memset(debrisToDraw, 0, sizeof(Debris*) * drawCapacity);
prev = &battle.debrisHead;
@ -124,9 +124,9 @@ static void resizeDrawList(void)
int i, n;
Debris **debris;
n = drawCapacity + INITIAL_BULLET_DRAW_CAPACITY;
n = drawCapacity + INITIAL_DEBRIS_DRAW_CAPACITY;
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Resizing debris draw capacity: %d -> %d\n", drawCapacity, n);
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "Resizing debris draw capacity: %d -> %d\n", drawCapacity, n);
debris = malloc(sizeof(Debris*) * n);
memset(debris, 0, sizeof(Debris*) * n);

View File

@ -22,11 +22,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
static void setRandomFlameHue(Effect *e);
static void setRandomShieldHue(Effect *e);
static void resizeDrawList(void);
static SDL_Texture *explosionTexture;
static SDL_Texture *shieldHitTexture;
static SDL_Texture *haloTexture;
static Effect **effectsToDraw;
static int drawCapacity;
void initEffects(void)
{
@ -34,16 +36,22 @@ void initEffects(void)
shieldHitTexture = getTexture("gfx/effects/shieldHit.png");
haloTexture = getTexture("gfx/effects/halo.png");
drawCapacity = INITIAL_EFFECTS_TO_DRAW;
drawCapacity = INITIAL_EFFECT_DRAW_CAPACITY;
effectsToDraw = malloc(sizeof(Effect*) * drawCapacity);
memset(effectsToDraw, 0, sizeof(Effect*) * drawCapacity);
}
void doEffects(void)
{
int i;
Effect *e;
Effect *prev = &battle.effectHead;
i = 0;
memset(effectsToDraw, 0, sizeof(Effect*) * drawCapacity);
for (e = battle.effectHead.next ; e != NULL ; e = e->next)
{
e->x += e->dx;
@ -69,7 +77,7 @@ void doEffects(void)
}
else
{
if (e->type == EFFECT_LINE || collision(e->x - (e->size / 2) - battle.camera.x, e->y - (b->size / 2) - battle.camera.y, e->size * 2, e->size * 2, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT))
if (e->type == EFFECT_LINE || collision(e->x - (e->size / 2) - battle.camera.x, e->y - (e->size / 2) - battle.camera.y, e->size * 2, e->size * 2, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT))
{
effectsToDraw[i++] = e;
@ -91,7 +99,7 @@ static void resizeDrawList(void)
n = drawCapacity + INITIAL_EFFECT_DRAW_CAPACITY;
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Resizing effect draw capacity: %d -> %d\n", drawCapacity, n);
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "Resizing effect draw capacity: %d -> %d\n", drawCapacity, n);
effects = malloc(sizeof(Effect*) * n);
memset(effects, 0, sizeof(Effect*) * n);

View File

@ -20,11 +20,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "../common.h"
#define INITIAL_EFFECTS_TO_DRAW 128
#define INITIAL_EFFECT_DRAW_CAPACITY 128
extern void blitScaled(SDL_Texture *texture, int x, int y, int w, int h);
extern SDL_Texture *getTexture(char *name);
extern void blit(SDL_Texture *t, int x, int y, int center);
extern int collision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2);
extern App app;
extern Battle battle;

View File

@ -99,6 +99,9 @@ char **getFileList(char *dir, int *count)
struct dirent *ent;
char **filenames;
i = 0;
filenames = NULL;
if ((d = opendir(dir)) != NULL)
{
while ((ent = readdir(d)) != NULL)
@ -136,7 +139,10 @@ char **getFileList(char *dir, int *count)
*count = i;
if (filenames)
{
qsort(filenames, i, sizeof(char*), stringComparator);
}
return filenames;
}