From 517395d500619668c31bd00032169fcc0bff69cc Mon Sep 17 00:00:00 2001 From: Alexandre Date: Tue, 13 May 2025 22:11:39 +0200 Subject: [PATCH] heh --- README.md | 152 ------------------------------------------------ bin/back | Bin 85168 -> 85208 bytes obj/base.o | Bin 39984 -> 40024 bytes obj/cars.o | Bin 5768 -> 5824 bytes obj/rooms.o | Bin 40312 -> 40352 bytes src/base.c | 2 + src/cars.c | 1 + src/rooms.c | 1 + src/structure.h | 34 +++++------ 9 files changed, 21 insertions(+), 169 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 60a41d0..0000000 --- a/README.md +++ /dev/null @@ -1,152 +0,0 @@ -# --| Controls |-- -- in-game: -**WASD/ZQSD** (depends on keyboard, usually WASD) - movement -**QE/AE** (depends on keyboard, usually QE)- horizontal camera rotation -**PM** - vertical camera rotation -**ESC** - exit application - -- creative tools: -**Y** select level destination -**R** warp to targetted level (resets player's position) -**T** warp to targetted level (no update top player's position) - -- while in menus: - when editing a value : **A** (add), **S** (subtract), **M** (multiply), **D** (divide), **ENTER/SPACE** (proceed) - -# --| Mods (in case you find it easy) |-- - -*Hidden* (HD) : makes the terrain blink to be totally invisible sometimes -*HardRock* (HR) : multiplies damage taken, enables fall damage and kills you upon falling into the void -*DoubleTime* (DT) : makes everything faster -*SuddenDeath* (SD) : sets your HP at 1 and disables healing -*Flashlight* (FL) : drastically lowers your view distance -*Speedy* (SP) : makes you lose HP over time -*Flip* (FP) : flips the screen over the Y axis, inverting some directions - -# --| Syntax for level files |-- - -1) **General rules** -. each file must be named "room_k" where k is a positive integer - if "room_k" exists then all "room_u" where 0 <= u < k exists - -. you can add text at the end of each line as comments - but *do not use caps*, *this might confuse the parser* - -. at the end of each file, the weight of the room is required (can be any positive integer) - if **there is only one file (==> its name is room_0) AND weight is 0**, the room will only generate at the central chunk (any other will be NULL) - use this if you want to create parkour levels, puzzles... - else, **make sure the total weight (the sum of all) is not equal to 0** *(you may end up with a floating point exception)* - -. no matter what, room_0 will **always** generate at chunk (0, 0) - -2) **Data structure** -below is a detailled list for all block types ; -each block type (Blocks, Teleporters, Entities) must have the corresponding word directly above it -not all three keywords have to be written - -[] is mandatory data -{} is optionnal data - -*Data-specific structure :* -``` -blocks: - [x, y, z, w, h, d, rhz, rvt, r, g, b] - -teleporters: - [x, y, z, w, h, d, rhz, rvt, r, g, b, dest_chx, dest_chy] - -entities: - [x, y, z, w, h, d, rhz, rvt, r, g, b, hp, damage, entityType ..] - - - |> if entityType >= 4, use 1 for HP and 0 for damage <| - |> *Entity types are :* <| - - -> 0 (coin) -> HP equals the coin's value - -> 1 (non-moving explosive) - -> 2 (damaging firebar/spinning platform (set damage to 0)) - [.. hz_rps, vt_rps, x_offset, y_offset, z_offset, dps] with - {hz,vt}_rps = double - hz0, vt_0 = double - {x,y,z}_offset = double // if all is 0.0, the solid will rotate according to its center of mass, this shifts that center - dps = int[>0] - - -> 3 (shooting (towards player), maybe moving explosive) - [.. proj_speed, shoot_speed, shot_freq, shot_ttl] with - {all} = double[>= 0.0] - - -> 4 (moving platform) - [.. amplitude_x, amplitude_y, amplitude_z, mult, divd, phase, {initialState, triggerButton}] with - amplitude_{x,y,z} = double[>= 0.0] - {mult,divd} = int - {phase} = int[0, 360] - {..} = int(>=0) - - -> 5 (linear moving platform) - [.. amplitude_x, amplitude_y, amplitude_z, speed_x, speed_y, speed_z, {initialState, triggerButton}] with - amplitude_{x,y,z} = double[>= 0.0] - speed_{x,y,z} = double - {..} = int(>=0) - - -> 6 (text box) - [.. text, tred, tgreen, tblue] with - text = {char*} - - -> 7 (warp text box) - [.. dest_folder, room_count, text, tred, tgreen, tblue] with - {dest_folder,text} = {char*} (length <= 50) - {r,g,b} = int[0-256] - - - -> 8 (lock box) - [.. cost, doPay, tred, tgreen, tblue] with - cost = int[> 0] (0 breaks) - doPay = {0, 1} (bool) - - -> 9 (beat block) - [.. ontime, offtime, start] with - {ontime,offtime} = double[>0.0] - start = {0,1} - - -> 10 (movable block) - [.. friction, mass] with - friction = double[>0.0] - mass = double[>0.0] (in kg) - - -> 11 (button trigger) - [.. freq, dtime] with - freq = int[0 - 15] - dtime = double([>0.0] for time-limited press, or use -1.0 if no deactivation) - - -> 12 (button block) - [.. freq, defaultState] with - freq = int[0 - 15] - defaultState = {0, 1} - - -> 13 (math block) - [.. defaultState, timeOff] with - defaultState = {0, 1} - dtime = double([>0.0] for time-limited press, or use -1.0 if no deactivation) - - -> 14 (movable object-related button) - [.. freq] with - freq = int[0 - 15] - - -> 15 (gun) - [.. vx, vy, vz, ax, ay, az, cooldown, phase, ttl, dmg, psize_x, psize_y, psize_z] with - all\{dmg} = double (cooldown > 0.0 and ttl > 0.0 and psize_{x,y,z} > 0.0) - dmg = int (>0) - - -> 16 (type 1 entity) - [.. speed, jump_height, dmg, kbPlayer, {buttonActivation}] with - all\{dmg} = double[>=0.0] - dmg = int (>=0) - buttonActivation = int[0-16] - - -> 17 (type 2 entity) - [.. speed, jump_height, dmg, kbPlayer, kbEntity, {buttonActivation}] with - all\{dmg} = double[>=0.0] - dmg = int (>=0) - buttonActivation = int[0-16] - -``` \ No newline at end of file diff --git a/bin/back b/bin/back index 0f0ee94736e7eb84ef06270ad9d5532da3f6f7ca..986167825f70a8c6113fe097a887000b4223e995 100755 GIT binary patch delta 4141 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 T#knBWvYahsvr+@gS?T`(-53cY delta 4159 zcmZWsdvKK16+id8`-S~>zs-Jo_mK_RJeGuH5fXMO33>2HLP8d#8lD9VwlO@SgGfV! zq{FyK95sz}U_Nzmno>H}Ka_C`E+x_{;1`ef+&Ga{?AT)=?^rQNvo0d-;CK^t!4JLt*HR5fAgi^YQG>2 z_N}*5p)mW8{cvkV;axQVBl^#9Y&hlLdk&fZ&`BAbwa>S1WPSFcg(aC4uTwUsh$TJT zNojm@x;d({(2rLmLHGq6(>-sdPyU^!nPaJq=#Qg%=mZe?Q?5O*=qX=j+^b`b>-|vyJcM|yWQ@_@m%iCb@y=XVq4C0<6#~=uo-}y z0UmCV6I`;7Y6bT7-Fe>Gw@j=Z%zfUSOtYa}{IP#UGa+{&fU#)+tgtzS?uW5y5Uhxl z-4NZ@zX=NX2YA<`J>7j!7%4$>-@ZzKdMmyKW&Q=q)|9|B>AUT=?O>G~#OXG6Y}^7? zg#=N)y9&*w8V_QGgmH8KtzcDpPZmN3lHfat6j7__&{evaqT}m{yVyKJbUaNAB@$Q= zIE*?!4PXXwG|AaDk4#EAwnnH-I(6S4)XdkwRv5fa;C{}}c08s)0Lpb^6pmvsr*reD2GLS1^?nTk{2(dJB zGVoo890_Z#w@BqU@BcZ@cXI3lYk`xaOsrWZW@2I)q-l|vSt_$uvkZBnyq^+VXeJSq zL7)gHzZ_Izk78Vt0tU!Hu7EieMVFWS+Bg~bp1>qKtwkT9p6{ZBJ1mlcj}b^yMj5=Z z4-#7J`wW*X{uO~GGTErn)B7W^mP!yqkOu3A5|klW16HR56$sXXwM>EpZ>0p5hc6;q zl8+GE3JL1@W&$fEXy)}~wkn(4&w1JFU}_V0NPD$kDZICflhEP8edK%1L3BplBk6%yF!8{|2V zg0`rN)8!q=%!0Nuh1PfnaVep|O79@9Bo*j{#I~KlnskB(n-yRGRa&EjXrW0SJndvF zGzFDsFGT)|2Uaf=+T(cQvB`^#&MCn+2F>du%6tn%PE7@^{K6*y=(h_0+A(n6xEU{;80V-R?!x1*cCuJg z&<8d0`Nz#b(TimORg&i21M!MHQjgybaZE7ZrpODO=#b z1yz%10R250$kR>rKr7{xj^2-hMK6pCUzh{-^{+%SPoQd&eC`FkHmovls1<$j!navo zZ1i2U(R!e=fVj2&z2JEOP2D=(vYC8rYUZcPo@Z5(K zv3TZt95*VCSZIP{0AeK*6oU{;OfUrLrDh_J>?UfxY$Y%p8x7IXGf_lmukBBV`!;R| z7W636H2^Q*GoS;rdtMC&4mwG!!q9Zh&E50ro0BskD~4y_!Fw;lW(_tXC=Y^&NZAdA z>h6DqU(G^w_h+HGDeu0BTX!Omje(dFsFlw20ElvfNZlTK0z`!bsxc5wW8k4@Kva6) z$)H^lOxYNSBJ1g^d@;o*I|ET{zC?VoGY};bSRhWKE}sT4s&F*OS#}1Zlv85HD>#_4 zGZ53Q0KVHEY7N8;UkjxwTZ4?KmPoY*qDBIzH4roTd&D4H1Cg>uhyl;Z=?y%1Oipj$ z*$Kkw4LrRdoZi4gC0NvXDYEJf#2k67sy7hz=Al?dHV62Whz9cr+9g2z5~qAQsJ#^< zHYm0r1GxgmBPhz=Ks0hPFlBEb=2{i_A*Cdp=75rPngdTC2&XwvnKff(7@xWW`XtNL zRC6F&%?9LA&4E~GE=Ev>Tf`|}4l1*g7}%hIf(+ye81qq-&4Fm+WMInXKrFIc_+69T zf#{I3><%&@WP9Lr2V$|0KG~`}5KedCq3%F9-2s9$2&X$hum*(F9Uxc>;=A2}SRT$t zHq{-76%wfKK&+IYnP;dy5UV6ggFz+NxDIzHdpXWN(m16gEw*1%^ zvso!)2eW}X)`9<*j;*U>TQwHXj@7d{?2cosf$e1M?d)J9o5_Z5yC?evP0?&> VDO;eOZ_4&9W%C)&9$m_+{s$yl5B~rF diff --git a/obj/base.o b/obj/base.o index e9509e0b190de022dc19a644762c056338eb7509..3407883de06e04235e2c236ac17afba4e2146edb 100644 GIT binary patch delta 8489 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 delta 8345 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 diff --git a/obj/cars.o b/obj/cars.o index 60671b2798172152857e1979ded1aecea8efc1f2..af76b9dd63cc4a0fc29be799f95044976760f733 100644 GIT binary patch delta 1184 zcmZ8gT}YEr7(VCh+t0VPpKqI+vu4{Q<^=z4(lWM5SVlxt7X=|U#Nkh&qzuhqN)d`( zv|ch02^536h>G1+7e*J>P2g1ob>U4aMwwUMM7{6%z9HZX-}!IEiEH8P zt8gx3V(p|%lT<>uD0|EE$Ttw>CE#)SaTFdTz{MASV6W(5@gTiT6#AH*_!t4LW_`oL zgph@?kWnadV=PufqZEZ}A~()r4SI4#w+N$hPIm8m4Co$Vf5~Hvh2_PN#W)MsmK=Q4 z$h{Uh0%^k747@T$cn;P~37_kDRJ1vcInMZ69XJCgGuetxCB?Y~*0ms?hhB45`C@jx zD1J82ab=|cRxk8e|3a57?wujOc9-X#IO()>+%buKan5#;^BLGuI#N_mZ_x=t%D1wHc|twQm-5p=7TVW zYOYL`r3f>{*RF1wpXS-0++9PZ9(jynyC=@+e>tEXV#P@cmi9#7SZH}m_Mn8j9>W>^!r=* mG%Wg4{3@&?PC&FG#U~+CkrELPEL9|V1lEz7hG;+vf%t#ov%f$9 delta 1208 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%0A&-(94JwFH&h2Gk>*H*uL?4=1G z49Q+$C>WB%=z%s*2^tK^3nvEf!#uV1MEW3oUOb0GhsK9y&-RnWzq;m(qVmxXY%=u8BD%k7Iw=tyI02 Pii#0_!d6c{G5Y@jkIFs8 delta 8050 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 GhyOn<<2!%= diff --git a/src/base.c b/src/base.c index e0b018d..145bf78 100644 --- a/src/base.c +++ b/src/base.c @@ -36,6 +36,8 @@ void destroy_all() { free(players); } +// ------------------------- // + int ln_baseN(int n, int b) { if(nname = "e"; + res->size = 40; res->itm = NULL; res->nCoins = 0; res->pos = (ptf){.fx = 0.0, .fy = 0.0}; diff --git a/src/rooms.c b/src/rooms.c index f7c6348..a380cb5 100644 --- a/src/rooms.c +++ b/src/rooms.c @@ -20,6 +20,7 @@ chunk** allRooms; int nMaxRooms; int curRoom; +// returns the index of the new chunk int build_empty_room(int CX, int CY, int w, int h, chunk* north, chunk* east, chunk* south, chunk* west) { if(curRoom < nMaxRooms) { chunk* res = malloc(sizeof(chunk)); diff --git a/src/structure.h b/src/structure.h index 40d88d6..0701b45 100644 --- a/src/structure.h +++ b/src/structure.h @@ -12,17 +12,12 @@ typedef struct imgs { // ------------------------------------------------------------------------ // // car shenanigans -typedef struct pt_t { - int ix; - int iy; -} pt; +typedef struct pt_t {int ix; int iy;} pt; -typedef struct ptf_t { - double fx; - double fy; -} ptf; +typedef struct ptf_t {double fx; double fy;} ptf; typedef struct car_t car; + // unused for now typedef struct item_t { const char* name; @@ -33,6 +28,7 @@ typedef struct item_t { typedef struct car_t { const char* name; ptf pos; + int size; ptf vel; int nCoins; item* itm; // either NULL or a pointer to an item @@ -46,6 +42,7 @@ typedef struct color_t { uint8_t blue; } color; +// 2 types of objects : rectangles and circles typedef struct rectangle_t { int x; int y; @@ -73,34 +70,37 @@ typedef struct chunk_t { circle* circles; int nCircles; + // size of the chunk int chW; int chH; // absolute coords int chX; int chY; + + // neighbors struct chunk_t* north; struct chunk_t* east; struct chunk_t* south; struct chunk_t* west; } chunk; -// global car data here +// global car data typedef struct carData_t { car* c; chunk* curChunk; } carData; // ------------------------------------------------------------------------ // -extern imgs* digits; -extern imgs* letters; +extern imgs* digits; // SDL data +extern imgs* letters; // SDL data -extern int currentTurn; +extern int currentTurn; // name explains -extern chunk* start; -extern chunk** allRooms; -extern int nMaxRooms; -extern carData* players; -extern int nPlayers; +extern chunk* start; // starting chunk +extern chunk** allRooms; // an array containing every generated room, used for free() +extern int nMaxRooms; // size of allRooms +extern carData* players; // contains each player and its corresponding data +extern int nPlayers; // size of players #endif \ No newline at end of file