From 16f3dfa4431c88cec2384972a3351f9a28544007 Mon Sep 17 00:00:00 2001 From: Cameron Reikes Date: Sat, 5 Nov 2022 16:03:10 -0700 Subject: [PATCH] Add the sun and extra stars in the background --- gamestate.c | 20 +++++++++++++++++++- loaded/stars2.png | Bin 0 -> 1205 bytes loaded/sun.png | Bin 0 -> 3415 bytes main.c | 25 ++++++++++++++++++++++++- server.c | 2 +- types.h | 5 ++++- 6 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 loaded/stars2.png create mode 100644 loaded/sun.png diff --git a/gamestate.c b/gamestate.c index 982e0d0..e400f18 100644 --- a/gamestate.c +++ b/gamestate.c @@ -1005,6 +1005,10 @@ void process(GameState* gs, float dt) p = new_entity(gs); create_player(gs, p); player->entity = get_id(gs, p); + cpVect pos = v2_to_cp(V2sub(entity_pos(p), SUN_POS)); + cpFloat r = cpvlength(pos); + cpFloat v = cpfsqrt(SUN_GRAVITY_STRENGTH/ r) / r; + cpBodySetVelocity(p->body, cpvmult(cpvperp(pos), v)); } assert(p->is_player); @@ -1149,12 +1153,26 @@ void process(GameState* gs, float dt) p->spice_taken_away = clamp01(p->spice_taken_away); } - // process grids + // process entities for (size_t i = 0; i < gs->cur_next_entity; i++) { Entity* e = &gs->entities[i]; if (!e->exists) continue; + if (e->body != NULL) + { + cpVect p = cpvsub(cpBodyGetPosition(e->body),v2_to_cp(SUN_POS)); + cpFloat sqdist = cpvlengthsq(p); + if (sqdist < (SUN_RADIUS * SUN_RADIUS)) + { + entity_destroy(gs, e); + continue; + } + cpVect g = cpvmult(p, -SUN_GRAVITY_STRENGTH / (sqdist * cpfsqrt(sqdist))); + + cpBodyUpdateVelocity(e->body, g, 1.0f, dt); + } + if (e->is_box) { if (e->damage >= 1.0f) diff --git a/loaded/stars2.png b/loaded/stars2.png new file mode 100644 index 0000000000000000000000000000000000000000..43c86271d2d080271398087f8c2c8c49dba00713 GIT binary patch literal 1205 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