- Made explosion functions a bit more efficient
- Separated includes into standard, gint, and local
This commit is contained in:
KBD2 2021-06-08 01:14:52 +12:00
parent 7a8046370d
commit a379564e21
14 changed files with 66 additions and 70 deletions

View file

@ -61,14 +61,7 @@ explosion: Pointer to an explosion struct. NOTE: The particles variable *MUST*
have been allocated to `50 * sizeof Particle` bytes!
x, y: Pixel coordinates of the explosion's origin.
*/
void createExplosion(struct ParticleExplosion *explosion, int x, int y);
/* destroyExplosion
Destructor for the given explosion. Frees the particle buffer.
explosion: Pointer to the explosion to destruct.
*/
void destroyExplosion(struct ParticleExplosion *explosion);
void resetExplosion(int x, int y);
/* renderAndUpdateExplosion
Updates the given explosion by one frame.
@ -76,7 +69,7 @@ Updates the given explosion by one frame.
explosion: Pointer to the explosion.
offsetX, offsetY: Delta coordinates to be used with a camera.
*/
void updateExplosion(struct ParticleExplosion *explosion);
void updateExplosion();
/* middleText
Clears the screen and displays some text in the middle.

View file

@ -51,7 +51,7 @@ CFLAGS_FX := -D FX9860G -m3
CFLAGS_CG := -D FXCG50 -m4-nofpu
# Additional compiler flags, change to your own taste!
CFLAGS += -Wall -Wextra -Wno-missing-field-initializers -std=c11 -O2 -lopenlibm -Wno-implicit-fallthrough
CFLAGS += -Wall -Wextra -Wno-missing-field-initializers -std=c11 -O2 -Wno-implicit-fallthrough
# Include paths. Add one -I option for each folder from which you want to
# be able to include files with #include<>.
@ -64,7 +64,7 @@ LIBS_FX :=
LIBS_CG :=
# Base linker flags for the fxSDK, you usually want to keep these.
LDFLAGS_FX := -T fx9860g.ld -lgint-fx $(LIBS_FX) -lgcc -nostdlib -lc
LDFLAGS_FX := -T fx9860g.ld -lgint-fx $(LIBS_FX) -nostdlib -lc -lopenlibm -lgcc
LDFLAGS_CG := -T fxcg50.ld -lgint-cg $(LIBS_CG) -lgint-cg -lgcc
# Additional linker flags, if you need any.

View file

@ -1,4 +1,4 @@
#include <gint/std/stdlib.h>
#include <stdlib.h>
#include "chest.h"
#include "world.h"

View file

@ -1,9 +1,10 @@
#include <gint/std/stdlib.h>
#include <gint/std/string.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <gint/keyboard.h>
#include <gint/gray.h>
#include <gint/timer.h>
#include <stdbool.h>
#include <gint/gint.h>
#include <gint/defs/util.h>

View file

@ -1,12 +1,13 @@
#include <gint/keyboard.h>
#include <gint/defs/util.h>
#include <gint/gray.h>
#include <stdbool.h>
#include <openlibm_math.h>
#include <math.h>
#include <stdlib.h>
#include <gint/timer.h>
#include <gint/gint.h>
#include <gint/std/stdlib.h>
#include <stdlib.h>
#include <gint/keyboard.h>
#include <gint/defs/util.h>
#include <gint/gray.h>
#include "entity.h"
#include "defs.h"
@ -512,7 +513,7 @@ void doEntityCycle(int frames)
{
player.inventory.ticksSinceInteracted = 0;
doEntityDrop(ent->drops);
createExplosion(&world.explosion, ent->props.x + (ent->props.width >> 1), ent->props.y + (ent->props.height >> 1));
resetExplosion(ent->props.x + (ent->props.width >> 1), ent->props.y + (ent->props.height >> 1));
world.removeEntity(idx);
}
}

View file

@ -1,6 +1,8 @@
#include <stdlib.h>
#include <math.h>
#include <gint/std/stdlib.h>
#include <gint/defs/util.h>
#include "math.h"
#include "generate.h"
#include "world.h"

View file

@ -1,12 +1,13 @@
#include <stdbool.h>
#include <string.h>
#include <gint/clock.h>
#include <gint/bfile.h>
#include <gint/hardware.h>
#include <gint/std/stdlib.h>
#include <gint/gray.h>
#include <gint/gint.h>
#include <gint/timer.h>
#include <stdbool.h>
#include <gint/std/string.h>
#include <gint/clock.h>
#include <gint/bfile.h>
#include <gint/hardware.h>
#include "defs.h"
#include "syscalls.h"
@ -88,7 +89,7 @@ bool gameLoop(volatile int *flag)
if(updateRet == UPDATE_EXIT) return true;
else if(updateRet == UPDATE_EXIT_NOSAVE) return false;
if(frames & 1) updateExplosion(&world.explosion);
if(frames & 1) updateExplosion();
if(frames % 8 == 0) worldUpdate();
if(frames % 3600 == 0) doMarkerChecks();
@ -115,7 +116,7 @@ bool gameLoop(volatile int *flag)
else if(respawnCounter > 0) respawnCounter--;
else
{
createExplosion(&world.explosion, player.props.x + (player.props.width >> 1), player.props.y + (player.props.height >> 1));
resetExplosion(player.props.x + (player.props.width >> 1), player.props.y + (player.props.height >> 1));
respawnCounter = 300;
}
}
@ -242,6 +243,7 @@ int main(void)
.entities = (Entity*)malloc(MAX_ENTITIES * sizeof(Entity)),
.explosion = {
.numParticles = 50,
.particles = malloc(50 * sizeof(Particle))
},
@ -331,7 +333,7 @@ int main(void)
}
free(world.entities);
destroyExplosion(&world.explosion);
free(world.explosion.particles);
if(doSave) gint_world_switch(GINT_CALL(&saveGame));
free(world.chests.chests);

View file

@ -1,16 +1,17 @@
// Miscellaneous menus
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
#include <string.h>
#include <gint/gray.h>
#include <gint/gint.h>
#include <gint/keyboard.h>
#include <gint/defs/util.h>
#include <gint/timer.h>
#include <stdbool.h>
#include <gint/std/string.h>
#include <gint/std/stdlib.h>
#include <gint/clock.h>
#include <gint/std/stdio.h>
#include <openlibm/openlibm_math.h>
#include "menu.h"
#include "syscalls.h"

View file

@ -1,8 +1,10 @@
#include <gint/std/stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <gint/gray.h>
#include <gint/keyboard.h>
#include <gint/std/string.h>
#include <gint/defs/util.h>
#include <gint/keyboard.h>
#include <gint/std/stdlib.h>
#include "npc.h"
#include "world.h"

View file

@ -1,5 +1,7 @@
#include <string.h>
#include <gint/defs/attributes.h>
#include <gint/std/string.h>
#include "optimise.h"
typedef struct{

View file

@ -1,12 +1,14 @@
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <gint/gray.h>
#include <gint/defs/util.h>
#include <stdbool.h>
#include <gint/bfile.h>
#include <gint/std/string.h>
#include <gint/timer.h>
#include <gint/std/stdlib.h>
#include <gint/std/stdio.h>
#include <openlibm/openlibm_math.h>
#include "render.h"
#include "defs.h"
@ -371,14 +373,13 @@ void takeVRAMCapture()
BFile_Close(descriptor);
}
void createExplosion(struct ParticleExplosion *explosion, int x, int y)
void resetExplosion(int x, int y)
{
explosion->numParticles = 50;
explosion->deltaTicks = 0;
world.explosion.deltaTicks = 0;
for(int i = 0; i < 50; i++)
{
explosion->particles[i] = (Particle) {
world.explosion.particles[i] = (Particle) {
x,
y,
(float)((rand() % 201) - 80) / 100.0,
@ -388,23 +389,13 @@ void createExplosion(struct ParticleExplosion *explosion, int x, int y)
}
}
void destroyExplosion(struct ParticleExplosion *explosion)
{
if(explosion->particles != NULL)
{
free(explosion->particles);
explosion->particles = NULL;
}
explosion->numParticles = 0;
}
void updateExplosion(struct ParticleExplosion *explosion)
void updateExplosion()
{
Particle* particle;
for(int i = 0; i < explosion->numParticles; i++)
for(int i = 0; i < world.explosion.numParticles; i++)
{
particle = &explosion->particles[i];
particle = &world.explosion.particles[i];
particle->x += round(particle->xVel);
particle->y += round(particle->yVel);
@ -412,7 +403,7 @@ void updateExplosion(struct ParticleExplosion *explosion)
particle->yVel += 0.2;
particle->xVel *= 0.95;
}
explosion->deltaTicks++;
world.explosion.deltaTicks++;
}
void middleText(char *text, int progress)

View file

@ -1,8 +1,9 @@
#include <gint/bfile.h>
#include <stdbool.h>
#include <gint/std/stdio.h>
#include <gint/std/string.h>
#include <gint/std/stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <gint/bfile.h>
#include "save.h"
#include "defs.h"

View file

@ -1,7 +1,8 @@
#include <math.h>
#include <gint/keyboard.h>
#include <gint/gint.h>
#include <gint/defs/util.h>
#include <openlibm/openlibm_math.h>
#include <gint/std/stdlib.h>
#include "update.h"
@ -180,7 +181,7 @@ enum UpdateReturnCodes keyboardUpdate()
if(!player.props.touchingTileTop && player.bonuses.doubleJump)
{
player.bonuses.hasDoubleJumped = true;
createExplosion(&world.explosion, player.props.x + (player.props.width >> 1), player.props.y + player.props.height);
resetExplosion(player.props.x + (player.props.width >> 1), player.props.y + player.props.height);
}
}
}

View file

@ -1,14 +1,13 @@
#include <math.h>
#include <string.h>
#include <gint/std/stdlib.h>
#include <gint/defs/util.h>
#include <openlibm/openlibm_math.h>
#include <string.h>
#include "world.h"
#include "defs.h"
#include "save.h"
#include <gint/gray.h>
#define PI 3.14159265358979323846
extern bopti_image_t