summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2024-02-07 15:26:14 +0100
committerkdx <kikoodx@paranoici.org>2024-02-07 15:26:14 +0100
commit857f9698b785d961ed6158b921eb529aa0bdee84 (patch)
treea79eb471b133dfada2a8adf409586088acad3852
parentd49cd40f4aab5398e0613d71f5174a087b0e5050 (diff)
downloadmaximalistmanifesto-857f9698b785d961ed6158b921eb529aa0bdee84.tar.gz
gravity trigger
-rw-r--r--inc/entity.h2
-rw-r--r--map/propertytypes.json165
-rw-r--r--src/gravity.c24
-rw-r--r--src/main.c11
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;
+ }
+ }
+}
diff --git a/src/main.c b/src/main.c
index 95f2628..006057e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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);
{