diff options
author | kdx <kikoodx@paranoici.org> | 2024-02-07 15:26:14 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2024-02-07 15:26:14 +0100 |
commit | 857f9698b785d961ed6158b921eb529aa0bdee84 (patch) | |
tree | a79eb471b133dfada2a8adf409586088acad3852 | |
parent | d49cd40f4aab5398e0613d71f5174a087b0e5050 (diff) | |
download | maximalistmanifesto-857f9698b785d961ed6158b921eb529aa0bdee84.tar.gz |
gravity trigger
-rw-r--r-- | inc/entity.h | 2 | ||||
-rw-r--r-- | map/propertytypes.json | 165 | ||||
-rw-r--r-- | src/gravity.c | 24 | ||||
-rw-r--r-- | src/main.c | 11 |
4 files changed, 198 insertions, 4 deletions
diff --git a/inc/entity.h b/inc/entity.h index 317db4c..6614fef 100644 --- a/inc/entity.h +++ b/inc/entity.h @@ -22,7 +22,7 @@ typedef struct Entity { vec2 dim; // player - bool reverseGravity; + i8 reverseGravity; i32 jump_buffer; i32 grace; bool djump; diff --git a/map/propertytypes.json b/map/propertytypes.json index a0f87b3..4e131d4 100644 --- a/map/propertytypes.json +++ b/map/propertytypes.json @@ -1,5 +1,25 @@ [ { + "color": "#fff9a6ff", + "drawFill": true, + "id": 27, + "members": [ + ], + "name": "debug", + "type": "class", + "useAs": [ + "property", + "map", + "layer", + "object", + "tile", + "tileset", + "wangcolor", + "wangset", + "project" + ] + }, + { "color": "#ffffc000", "drawFill": true, "id": 23, @@ -30,6 +50,18 @@ ] }, { + "id": 38, + "name": "Direction", + "storageType": "int", + "type": "enum", + "values": [ + "Invert", + "Up", + "Down" + ], + "valuesAsFlags": false + }, + { "color": "#ff0000ff", "drawFill": true, "id": 24, @@ -69,7 +101,8 @@ "Init", "Jump", "Double Jump", - "Death" + "Death", + "Last Key" ], "valuesAsFlags": false }, @@ -124,6 +157,36 @@ ] }, { + "color": "#ff87ffc3", + "drawFill": true, + "id": 37, + "members": [ + { + "name": "leave", + "type": "bool", + "value": false + }, + { + "name": "multi", + "type": "bool", + "value": false + } + ], + "name": "gravity", + "type": "class", + "useAs": [ + "property", + "map", + "layer", + "object", + "tile", + "tileset", + "wangcolor", + "wangset", + "project" + ] + }, + { "color": "#ffffff00", "drawFill": true, "id": 8, @@ -144,6 +207,46 @@ ] }, { + "color": "#ffffff00", + "drawFill": true, + "id": 36, + "members": [ + ], + "name": "map_link", + "type": "class", + "useAs": [ + "property", + "map", + "layer", + "object", + "tile", + "tileset", + "wangcolor", + "wangset", + "project" + ] + }, + { + "color": "#ff00ffff", + "drawFill": true, + "id": 33, + "members": [ + ], + "name": "map_node", + "type": "class", + "useAs": [ + "property", + "map", + "layer", + "object", + "tile", + "tileset", + "wangcolor", + "wangset", + "project" + ] + }, + { "color": "#ff00ffff", "drawFill": true, "id": 6, @@ -196,6 +299,66 @@ ] }, { + "color": "#ff000000", + "drawFill": true, + "id": 28, + "members": [ + ], + "name": "target", + "type": "class", + "useAs": [ + "property", + "map", + "layer", + "object", + "tile", + "tileset", + "wangcolor", + "wangset", + "project" + ] + }, + { + "color": "#ff00f8ae", + "drawFill": true, + "id": 32, + "members": [ + { + "name": "multi", + "type": "bool", + "value": false + }, + { + "name": "target", + "type": "int", + "value": -1 + }, + { + "name": "x", + "type": "bool", + "value": false + }, + { + "name": "y", + "type": "bool", + "value": false + } + ], + "name": "teleport", + "type": "class", + "useAs": [ + "property", + "map", + "layer", + "object", + "tile", + "tileset", + "wangcolor", + "wangset", + "project" + ] + }, + { "color": "#ff565658", "drawFill": true, "id": 21, diff --git a/src/gravity.c b/src/gravity.c new file mode 100644 index 0000000..37f5bc5 --- /dev/null +++ b/src/gravity.c @@ -0,0 +1,24 @@ +NAME(gravity); +PARENT(trigger); + +INIT { + super("init"); + this->reverseGravity = propertyi_default("direction", 0); +} + +ENTER { + with (e, g_get_entity("player")) { + switch (this->reverseGravity) { + default: + case 0: + e->reverseGravity ^= 1; + break; + case 1: + e->reverseGravity = 1; + break; + case 2: + e->reverseGravity = 0; + break; + } + } +} @@ -11,7 +11,6 @@ int main([[maybe_unused]] int argc, [[maybe_unused]] char **argv) { .height=cfg.display_height, .scale=3, .target_fps=cfg.fps, - .mixer=0, .basepath=argv[1]) == 0); defer(TZR_Quit); TZR_ToggleFullscreen(); @@ -72,6 +71,9 @@ static void _setup_input() { } static int _main_loop([[maybe_unused]] void *udata) { + //if (TZR_GetTick() == 0) + // TZR_PlayMusic("res/bgm.wav", -1); + g_update(); if (TZR_IsKeyPressed(SDL_SCANCODE_ESCAPE) || TZR_IsKeyPressed(SDL_SCANCODE_CAPSLOCK)) @@ -82,7 +84,12 @@ static int _main_loop([[maybe_unused]] void *udata) { TZR_DrawClear(); vec2 v = v2(cfg.tile_width, 0); - const f32 r = (float)(TZR_GetTick() % 768) / 256; + static f32 or = 0.01; + if ((TZR_GetTick() + 15) / 30 % 2 == 0) + or += 0.01; + else + or -= 0.01; + const auto r = sinf(or * 14) / 12; TZR_BlendMode(SDL_BLENDMODE_MUL); { |