expose wasm collisions

This commit is contained in:
nemo 2024-11-19 16:59:23 +01:00
parent 3a8f7f785f
commit 1505f71328
3 changed files with 25 additions and 11 deletions

31
app.c
View File

@ -138,6 +138,7 @@ typedef struct Collision {
#define NB_COLLISIONS 10
Collision collisions[NB_COLLISIONS] = {};
int nb_collisions = 0;
Collision collision_union(Collision rec1, Collision rec2)
{
@ -190,6 +191,21 @@ Collision collision_rec(Collision fix, int i, int scale)
return col;
}
void reset_collisions()
{
nb_collisions = 0;
}
void add_collisions(int x, int y, int width, int height)
{
if (nb_collisions >= NB_COLLISIONS) return;
collisions[nb_collisions++] = (Collision) {
.x = x,
.y = y,
.width = width,
.height = height,
};
}
void set_velocity(float x, float y)
{
velocity = (v2){x, y};
@ -235,32 +251,31 @@ int collision(v2 point, int x, int y, int w, int h)
void init()
{
pengers_init();
int col_id = 0;
collisions[col_id++] = (Collision) {
collisions[nb_collisions++] = (Collision) {
.x = 100,
.y = 400,
.width = 50,
.height = 100,
};
collisions[col_id++] = (Collision) {
collisions[nb_collisions++] = (Collision) {
.x = 150,
.y = 450,
.width = 500,
.height = 50,
};
collisions[col_id++] = (Collision) {
collisions[nb_collisions++] = (Collision) {
.x = 650,
.y = 400,
.width = 50,
.height = 100,
};
collisions[col_id++] = (Collision) {
collisions[nb_collisions++] = (Collision) {
.x = 280,
.y = 200,
.width = 75,
.height = 75,
};
collisions[col_id++] = (Collision) {
collisions[nb_collisions++] = (Collision) {
.x = 445,
.y = 200,
.width = 75,
@ -340,7 +355,7 @@ void draw(float dt)
rebondi(&penger_pos, scale);
for (int i = 0; i < NB_COLLISIONS; i++) {
for (int i = 0; i < nb_collisions; i++) {
Collision col = collision_rec(collisions[i], i, scale);
x_collide = x_collide || (col.height > 1);
}
@ -403,7 +418,7 @@ void draw(float dt)
}
// draw collisions box
for (int i = 0; i < NB_COLLISIONS; i++) {
for (int i = 0; i < nb_collisions; i++) {
for (int y = collisions[i].y; y < collisions[i].y + collisions[i].height; y++) {
for (int x = collisions[i].x; x < collisions[i].x + collisions[i].width; x++) {
if ((y/2 + x/3)%8 < 4)

View File

@ -5,7 +5,7 @@ if [[ "$1" == "clear" ]]; then
exit
fi;
export_sym="init draw key_pressed key_released set_velocity set_mouse get_pos_x get_pos_y draw_player deco_player BUFFER width height id nb_players dir"
export_sym="init draw key_pressed key_released set_velocity set_mouse get_pos_x get_pos_y draw_player deco_player reset_collisions add_collisions BUFFER width height id nb_players dir"
export_cmd=""
for e in $export_sym; do
export_cmd="$export_cmd -Wl,--export=$e";
@ -31,7 +31,7 @@ id=0
for p in $(ls museum); do
file=$(echo $p | sed "s/\.png$//g")
./png2c "museum/"$p $id > museum.c/$file.c
pengers_html+=$' <img src="museum/'$p'" class="penger-img" penger-id="'$id'"></img>\n'
pengers_html+=$' <img src="museum/'$p'" class="penger-img" penger-id="'$id'"></img>\n'
pengers_include+='#include "museum.c/'$file$'.c"\n'
((id=id+1))
done

View File

@ -50,7 +50,6 @@ const connection = new WebSocket(document.URL.replace('http', 'ws').replace('696
connection.onopen = (e) => { console.log("connection to server opened"); };
connection.onmessage = (e) => {
var req = JSON.parse(e.data);
console.log(req);
if (req.name == 'pseudo') {
if (req.value != "") is_connected = true;
document.getElementById('players').innerHTML = req.value;