refactor: reorganize pxl8 into client/src/ module structure

- core/: main entry, types, logging, I/O, RNG
- asset/: ase loader, cart, save, embed
- gfx/: graphics, animation, atlas, fonts, tilemap, transitions
- sfx/: audio
- script/: lua/fennel runtime, REPL
- hal/: platform abstraction (SDL3)
- world/: BSP, world, procedural gen
- math/: math utilities
- game/: GUI, replay
- lua/: Lua API modules
This commit is contained in:
asrael 2026-01-12 21:46:31 -06:00
parent 272e0bc615
commit 39b604b333
106 changed files with 6078 additions and 3715 deletions

View file

@ -0,0 +1,75 @@
#pragma once
#include "pxl8_types.h"
typedef struct pxl8_gfx pxl8_gfx;
typedef struct pxl8_palette pxl8_palette;
typedef struct pxl8_particles pxl8_particles;
typedef struct pxl8_rng pxl8_rng;
typedef struct pxl8_particle {
f32 angle;
f32 ax, ay, az;
u32 color;
u32 end_color;
u8 flags;
f32 life;
f32 max_life;
f32 size;
f32 spin;
u32 start_color;
f32 vx, vy, vz;
f32 x, y, z;
} pxl8_particle;
typedef void (*pxl8_particle_render_fn)(pxl8_gfx* gfx, pxl8_particle* p, void* userdata);
typedef void (*pxl8_particle_spawn_fn)(pxl8_particles* ps, pxl8_particle* p);
typedef void (*pxl8_particle_update_fn)(pxl8_particle* p, f32 dt, void* userdata);
#ifdef __cplusplus
extern "C" {
#endif
pxl8_particles* pxl8_particles_create(u32 max_count, pxl8_rng* rng);
void pxl8_particles_destroy(pxl8_particles* ps);
void pxl8_particles_clear(pxl8_particles* ps);
void pxl8_particles_emit(pxl8_particles* ps, u32 count);
void pxl8_particles_render(pxl8_particles* ps, pxl8_gfx* gfx);
void pxl8_particles_update(pxl8_particles* ps, f32 dt);
u32 pxl8_particles_count(const pxl8_particles* ps);
u32 pxl8_particles_max_count(const pxl8_particles* ps);
pxl8_particle* pxl8_particles_get(pxl8_particles* ps, u32 index);
pxl8_rng* pxl8_particles_rng(pxl8_particles* ps);
f32 pxl8_particles_get_drag(const pxl8_particles* ps);
f32 pxl8_particles_get_gravity_x(const pxl8_particles* ps);
f32 pxl8_particles_get_gravity_y(const pxl8_particles* ps);
f32 pxl8_particles_get_spawn_rate(const pxl8_particles* ps);
f32 pxl8_particles_get_spread_x(const pxl8_particles* ps);
f32 pxl8_particles_get_spread_y(const pxl8_particles* ps);
f32 pxl8_particles_get_turbulence(const pxl8_particles* ps);
void* pxl8_particles_get_userdata(const pxl8_particles* ps);
f32 pxl8_particles_get_x(const pxl8_particles* ps);
f32 pxl8_particles_get_y(const pxl8_particles* ps);
void pxl8_particles_set_colors(pxl8_particles* ps, u8 color_min, u8 color_max);
void pxl8_particles_set_drag(pxl8_particles* ps, f32 drag);
void pxl8_particles_set_gravity(pxl8_particles* ps, f32 gx, f32 gy);
void pxl8_particles_set_life(pxl8_particles* ps, f32 life_min, f32 life_max);
void pxl8_particles_set_palette(pxl8_particles* ps, pxl8_palette* palette);
void pxl8_particles_set_position(pxl8_particles* ps, f32 x, f32 y);
void pxl8_particles_set_render_fn(pxl8_particles* ps, pxl8_particle_render_fn fn);
void pxl8_particles_set_size(pxl8_particles* ps, f32 size_min, f32 size_max);
void pxl8_particles_set_spawn_fn(pxl8_particles* ps, pxl8_particle_spawn_fn fn);
void pxl8_particles_set_spawn_rate(pxl8_particles* ps, f32 rate);
void pxl8_particles_set_spread(pxl8_particles* ps, f32 spread_x, f32 spread_y);
void pxl8_particles_set_turbulence(pxl8_particles* ps, f32 turbulence);
void pxl8_particles_set_update_fn(pxl8_particles* ps, pxl8_particle_update_fn fn);
void pxl8_particles_set_userdata(pxl8_particles* ps, void* userdata);
void pxl8_particles_set_velocity(pxl8_particles* ps, f32 vx_min, f32 vx_max, f32 vy_min, f32 vy_max);
#ifdef __cplusplus
}
#endif