slide mechanic + levels up to 6_1
This commit is contained in:
parent
da61dad100
commit
c654fd4121
|
@ -20,33 +20,40 @@ set(ASSETS
|
|||
assets-cg/font.png
|
||||
assets-cg/title.png
|
||||
assets-cg/levels.png
|
||||
assets-cg/level/level1.txt
|
||||
assets-cg/level/level2.txt
|
||||
assets-cg/level/level3.txt
|
||||
assets-cg/level/level4.txt
|
||||
assets-cg/level/level5.txt
|
||||
assets-cg/level/level6.txt
|
||||
assets-cg/level/level7.txt
|
||||
assets-cg/level/level8.txt
|
||||
assets-cg/level/level9.txt
|
||||
assets-cg/level/level10.txt
|
||||
assets-cg/level/level11.txt
|
||||
assets-cg/level/level12.txt
|
||||
assets-cg/level/level13.txt
|
||||
assets-cg/level/level14.txt
|
||||
assets-cg/level/level15.txt
|
||||
assets-cg/level/level16.txt
|
||||
assets-cg/level/level17.txt
|
||||
assets-cg/level/level18.txt
|
||||
assets-cg/level/level19.txt
|
||||
assets-cg/level/level20.txt
|
||||
assets-cg/level/level21.txt
|
||||
assets-cg/level/level22.txt
|
||||
assets-cg/level/level23.txt
|
||||
assets-cg/level/level24.txt
|
||||
assets-cg/level/level25.txt
|
||||
assets-cg/level/level26.txt
|
||||
assets-cg/level/level27.txt
|
||||
assets-cg/level/level1_1.txt
|
||||
assets-cg/level/level1_2.txt
|
||||
assets-cg/level/level1_3.txt
|
||||
assets-cg/level/level1_4.txt
|
||||
assets-cg/level/level1_5.txt
|
||||
assets-cg/level/level2_1.txt
|
||||
assets-cg/level/level2_2.txt
|
||||
assets-cg/level/level2_3.txt
|
||||
assets-cg/level/level2_4.txt
|
||||
assets-cg/level/level2_5.txt
|
||||
assets-cg/level/level2_6.txt
|
||||
assets-cg/level/level3_1.txt
|
||||
assets-cg/level/level3_2.txt
|
||||
assets-cg/level/level3_3.txt
|
||||
assets-cg/level/level3_4.txt
|
||||
assets-cg/level/level3_5.txt
|
||||
assets-cg/level/level4_1.txt
|
||||
assets-cg/level/level4_2.txt
|
||||
assets-cg/level/level4_3.txt
|
||||
assets-cg/level/level4_4.txt
|
||||
assets-cg/level/level4_5.txt
|
||||
assets-cg/level/level4_6.txt
|
||||
assets-cg/level/level5_1.txt
|
||||
assets-cg/level/level5_2.txt
|
||||
assets-cg/level/level5_3.txt
|
||||
assets-cg/level/level5_4.txt
|
||||
assets-cg/level/level5_5.txt
|
||||
assets-cg/level/level5_6.txt
|
||||
assets-cg/level/level6_1.txt
|
||||
assets-cg/level/level6_2.txt
|
||||
assets-cg/level/level6_3.txt
|
||||
assets-cg/level/level6_4.txt
|
||||
assets-cg/level/level6_5.txt
|
||||
assets-cg/level/level6_6.txt
|
||||
)
|
||||
|
||||
fxconv_declare_converters(converters.py)
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 994 B After Width: | Height: | Size: 12 KiB |
|
@ -1,37 +1,37 @@
|
|||
#It's all a matter of\nperspective.
|
||||
|
||||
left fast_2
|
||||
|
||||
middle
|
||||
|
||||
right fast_2
|
||||
|
||||
middle
|
||||
|
||||
left fast_2
|
||||
|
||||
!1.0
|
||||
left
|
||||
|
||||
square left fast_2
|
||||
|
||||
square right
|
||||
|
||||
middle fast_2
|
||||
middle slow_1
|
||||
|
||||
right
|
||||
|
||||
left fast_2
|
||||
middle slow_1
|
||||
|
||||
left
|
||||
|
||||
right fast_2
|
||||
left slow_1
|
||||
|
||||
square left
|
||||
|
||||
square right slow_1
|
||||
|
||||
middle
|
||||
|
||||
right slow_1
|
||||
|
||||
left
|
||||
|
||||
middle fast_2
|
||||
|
||||
left
|
||||
|
||||
right fast_2
|
||||
left slow_1
|
||||
|
||||
right
|
||||
|
||||
left slow_1
|
||||
|
||||
middle
|
||||
|
||||
left slow_1
|
||||
|
||||
right
|
||||
|
||||
right slow_1
|
||||
|
|
|
@ -1,34 +1,34 @@
|
|||
#Regret has two sides.
|
||||
|
||||
left fast_2
|
||||
|
||||
left fast_2
|
||||
!1.1
|
||||
left
|
||||
|
||||
left
|
||||
|
||||
left fast_2
|
||||
small right fast_2
|
||||
left slow_1
|
||||
|
||||
square right fast_2
|
||||
|
||||
square left fast_2
|
||||
|
||||
right fast_2
|
||||
|
||||
middle fast_2
|
||||
|
||||
square left fast_2
|
||||
left
|
||||
small right
|
||||
|
||||
square right
|
||||
|
||||
right fast_2
|
||||
square left
|
||||
|
||||
right
|
||||
|
||||
left fast_2
|
||||
middle
|
||||
|
||||
square left
|
||||
|
||||
square right slow_1
|
||||
|
||||
right
|
||||
|
||||
right slow_1
|
||||
|
||||
left
|
||||
|
||||
left fast_2
|
||||
left slow_1
|
||||
|
||||
left
|
||||
|
||||
left slow_1
|
||||
|
|
|
@ -1,40 +1,38 @@
|
|||
#What we do...
|
||||
!1.05
|
||||
left
|
||||
small right
|
||||
|
||||
left fast_2
|
||||
small right fast_2
|
||||
right
|
||||
|
||||
right fast_2
|
||||
right
|
||||
|
||||
square left slow_1
|
||||
|
||||
square right
|
||||
|
||||
square left fast_2
|
||||
left
|
||||
|
||||
left fast_2
|
||||
|
||||
square right
|
||||
square right fast_1
|
||||
|
||||
square left
|
||||
|
||||
right
|
||||
left fast_1
|
||||
|
||||
square right fast_1 fast_2
|
||||
middle
|
||||
|
||||
square left fast_2
|
||||
left slow_1
|
||||
|
||||
left fast_1 fast_2
|
||||
left
|
||||
|
||||
middle fast_2
|
||||
middle fast_1
|
||||
|
||||
left
|
||||
|
||||
right fast_1
|
||||
|
||||
right
|
||||
|
||||
right fast_2
|
||||
square left fast_1
|
||||
|
||||
middle fast_1 fast_2
|
||||
|
||||
left fast_1 fast_2
|
||||
|
||||
left fast_2
|
||||
|
||||
square left fast_1 fast_2
|
||||
|
||||
square right fast_2
|
||||
square right
|
||||
|
|
|
@ -1,39 +1,40 @@
|
|||
#And the things we wish we has done.
|
||||
|
||||
right fast_2
|
||||
|
||||
right fast_2
|
||||
|
||||
left
|
||||
small right fast_2
|
||||
|
||||
left
|
||||
|
||||
left
|
||||
|
||||
left
|
||||
|
||||
huge left outer_rotate_right
|
||||
|
||||
middle rotate_left
|
||||
|
||||
right fast_2
|
||||
small left fast_2
|
||||
|
||||
left fast_2
|
||||
|
||||
left
|
||||
|
||||
huge right outer_rotate_right
|
||||
|
||||
middle rotate_left fast_2
|
||||
#And the things we wish\nwe had done.
|
||||
!1.20
|
||||
right
|
||||
|
||||
right
|
||||
|
||||
right fast_2
|
||||
left slow_1
|
||||
small right
|
||||
|
||||
left
|
||||
|
||||
left
|
||||
|
||||
left
|
||||
|
||||
left outer_rotate_right
|
||||
|
||||
middle rotate_left
|
||||
|
||||
right fast_2
|
||||
right
|
||||
small left
|
||||
|
||||
|
||||
left
|
||||
|
||||
left slow_1
|
||||
|
||||
right outer_rotate_left
|
||||
|
||||
middle rotate_right
|
||||
|
||||
right slow_1
|
||||
|
||||
right
|
||||
|
||||
middle rotate_left
|
||||
|
||||
right
|
||||
|
||||
right slow_1
|
||||
|
|
|
@ -1,46 +1,46 @@
|
|||
#We may try to make you feel\nguilty.
|
||||
|
||||
middle fast_2
|
||||
|
||||
right fast_2
|
||||
|
||||
right fast_1
|
||||
|
||||
right
|
||||
|
||||
huge right outer_rotate_left
|
||||
|
||||
right fast_2
|
||||
small left fast_2
|
||||
|
||||
right fast_2
|
||||
small left fast_2
|
||||
|
||||
square left fast_2
|
||||
|
||||
square right fast_2
|
||||
|
||||
right fast_1 fast_2
|
||||
|
||||
left fast_1 fast_2
|
||||
|
||||
right
|
||||
|
||||
right fast_2
|
||||
|
||||
right
|
||||
|
||||
right fast_2
|
||||
|
||||
middle fast_2
|
||||
|
||||
!1.35
|
||||
middle
|
||||
|
||||
middle fast_1 fast_2
|
||||
right
|
||||
|
||||
right fast_2
|
||||
right
|
||||
|
||||
middle rorate_left
|
||||
right slow_1
|
||||
|
||||
right outer_rotate_left
|
||||
|
||||
right
|
||||
small left
|
||||
|
||||
right
|
||||
small left
|
||||
|
||||
square left
|
||||
|
||||
square right
|
||||
|
||||
right fast_1
|
||||
|
||||
left
|
||||
|
||||
right slow_1
|
||||
|
||||
right
|
||||
|
||||
right slow_1
|
||||
|
||||
right
|
||||
|
||||
middle
|
||||
|
||||
middle slow_1
|
||||
|
||||
middle fast_1
|
||||
|
||||
left
|
||||
|
||||
middle rorate_left
|
||||
|
||||
left
|
||||
small right
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
#But the real guilt only comes\nfrom you.
|
||||
!1.35
|
||||
middle
|
||||
|
||||
middle fast_2
|
||||
|
||||
left fast_2
|
||||
small right
|
||||
|
||||
square left fast_2
|
||||
|
||||
square right fast_1
|
||||
|
||||
right
|
||||
small left fast_2
|
||||
|
||||
left fast_2
|
||||
|
||||
left fast_1
|
||||
|
||||
middle square
|
||||
|
||||
square right fast_1
|
||||
|
||||
right fast_1
|
||||
small left
|
||||
|
||||
right
|
||||
|
||||
right fast_2
|
||||
left
|
||||
small right slow_1
|
||||
|
||||
square left
|
||||
|
||||
square right fast_1
|
||||
square right slow_1
|
||||
|
||||
square left fast_2
|
||||
right slow_1
|
||||
small left
|
||||
|
||||
left
|
||||
|
||||
left slow_1
|
||||
|
||||
left square slow_1
|
||||
|
||||
right square
|
||||
|
||||
right
|
||||
small left slow_1
|
||||
|
||||
right slow_1
|
||||
|
||||
right
|
||||
|
||||
square left slow_1
|
||||
|
||||
square right
|
||||
|
||||
square left
|
||||
|
||||
square right slow_1
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#Nothing is wrong with you
|
||||
|
||||
#Nothing is wrong with you.
|
||||
!1.0
|
||||
left
|
||||
|
||||
right slide
|
||||
|
|
|
@ -81,6 +81,8 @@ def convert_level(input, output, params, target):
|
|||
action = 8
|
||||
if "fast_3" in r:
|
||||
action = 9
|
||||
if "slow_1" in r:
|
||||
action = 10
|
||||
if "rotate" in r and position == 0:
|
||||
action = 6
|
||||
if "rotate" in r and position == 1:
|
||||
|
@ -98,7 +100,7 @@ def convert_level(input, output, params, target):
|
|||
if shape < 0 and position == 2:
|
||||
shape = 3
|
||||
# No special properties -> normal
|
||||
if shape < 0 and action in [0, 3, 8, 9]:
|
||||
if shape < 0 and action in [0, 3, 7, 8, 9, 10]:
|
||||
shape = 4
|
||||
|
||||
if shape < 0 or action < 0 or position < 0:
|
||||
|
|
19
src/duet.h
19
src/duet.h
|
@ -34,6 +34,7 @@ typedef enum {
|
|||
Action_Slide = 7,
|
||||
Action_Speed2 = 8,
|
||||
Action_Speed3 = 9,
|
||||
Action_Slow1 = 10,
|
||||
} action_t;
|
||||
|
||||
typedef enum {
|
||||
|
@ -69,19 +70,18 @@ typedef struct {
|
|||
#define PLAYER_X 60
|
||||
#define PLAYER_R 40
|
||||
#define PLAYER_SIZE 8
|
||||
#define CORRIDOR_SIZE 150
|
||||
#define CORRIDOR_SIZE 156
|
||||
|
||||
#define RECT_SPEED 50 /* px/tempo */
|
||||
|
||||
typedef struct {
|
||||
float w, h; /* px */
|
||||
float y_init; /* px */
|
||||
float x, y; /* px */
|
||||
float r; /* rad */
|
||||
rectmeta_t const *meta;
|
||||
} rect_t;
|
||||
|
||||
#define RECT_TABLE_SIZE 20
|
||||
|
||||
typedef struct game {
|
||||
/* Current level */
|
||||
level_t const *level;
|
||||
|
@ -144,13 +144,12 @@ void rect_physics(rect_t *r, rectmeta_t const *meta, float time);
|
|||
// Levels
|
||||
//---
|
||||
|
||||
extern level_t level1, level2, level3, level4;
|
||||
extern level_t level5, level6, level7, level8;
|
||||
extern level_t level9, level10, level11, level12;
|
||||
extern level_t level13, level14, level15, level16;
|
||||
extern level_t level17, level18, level19, level20;
|
||||
extern level_t level21, level22, level23, level24;
|
||||
extern level_t level25, level26, level27, level28;
|
||||
extern level_t level1_1, level1_2, level1_3, level1_4, level1_5;
|
||||
extern level_t level2_1, level2_2, level2_3, level2_4, level2_5, level2_6;
|
||||
extern level_t level3_1, level3_2, level3_3, level3_4, level3_5;
|
||||
extern level_t level4_1, level4_2, level4_3, level4_4, level4_5, level4_6;
|
||||
extern level_t level5_1, level5_2, level5_3, level5_4, level5_5, level5_6;
|
||||
extern level_t level6_1, level6_2, level6_3, level6_4, level6_5, level6_6;
|
||||
|
||||
extern episode_t episodes[];
|
||||
extern int episode_count;
|
||||
|
|
21
src/main.c
21
src/main.c
|
@ -28,37 +28,42 @@ episode_t episodes[] = {
|
|||
.name = "ignorance",
|
||||
.level_count = 5,
|
||||
.levels = (level_t *[]){
|
||||
&level1, &level2, &level3, &level4, &level5
|
||||
&level1_1, &level1_2, &level1_3, &level1_4, &level1_5
|
||||
},
|
||||
},
|
||||
{
|
||||
.name = "denial",
|
||||
.level_count = 6,
|
||||
.levels = (level_t *[]){
|
||||
&level6, &level7, &level8, &level9, &level10,
|
||||
&level11,
|
||||
&level2_1, &level2_2, &level2_3, &level2_4, &level2_5, &level2_6
|
||||
},
|
||||
},
|
||||
{
|
||||
.name = "anger",
|
||||
.level_count = 5,
|
||||
.levels = (level_t *[]){
|
||||
&level12, &level13, &level14, &level15, &level16,
|
||||
&level3_1, &level3_2, &level3_3, &level3_4, &level3_5
|
||||
},
|
||||
},
|
||||
{
|
||||
.name = "bargaining",
|
||||
.level_count = 6,
|
||||
.levels = (level_t *[]){
|
||||
&level17, &level18, &level19, &level20, &level21,
|
||||
&level22,
|
||||
&level4_1, &level4_2, &level4_3, &level4_4, &level4_5, &level4_6
|
||||
},
|
||||
},
|
||||
{
|
||||
.name = "guilt",
|
||||
.level_count = 5,
|
||||
.level_count = 6,
|
||||
.levels = (level_t *[]) {
|
||||
&level23, &level24, &level25, &level26, &level27,
|
||||
&level5_1, &level5_2, &level5_3, &level5_4, &level5_5, &level5_6
|
||||
},
|
||||
},
|
||||
{
|
||||
.name = "depression",
|
||||
.level_count = 6,
|
||||
.levels = (level_t *[]){
|
||||
&level6_1, &level6_2, &level6_3, &level6_4, &level6_5, &level6_6
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
@ -96,24 +96,31 @@ void rect_load(rect_t *r, rectmeta_t const *meta)
|
|||
switch(meta->position) {
|
||||
case Position_Left:
|
||||
if(meta->shape == Shape_Square)
|
||||
r->y = DHEIGHT/2 - 0.22*CORRIDOR_SIZE;
|
||||
r->y_init = DHEIGHT/2 - 0.22*CORRIDOR_SIZE;
|
||||
else if(meta->shape == Shape_HugeBar)
|
||||
r->y = DHEIGHT/2 - 0.38*CORRIDOR_SIZE;
|
||||
r->y_init = DHEIGHT/2 - 0.38*CORRIDOR_SIZE;
|
||||
else
|
||||
r->y = DHEIGHT/2 - CORRIDOR_SIZE/2 + r->h/2;
|
||||
r->y_init = DHEIGHT/2 - CORRIDOR_SIZE/2 + r->h/2;
|
||||
break;
|
||||
case Position_Right:
|
||||
if(meta->shape == Shape_Square)
|
||||
r->y = DHEIGHT/2 + 0.22*CORRIDOR_SIZE;
|
||||
r->y_init = DHEIGHT/2 + 0.22*CORRIDOR_SIZE;
|
||||
else if(meta->shape == Shape_HugeBar)
|
||||
r->y = DHEIGHT/2 + 0.38*CORRIDOR_SIZE;
|
||||
r->y_init = DHEIGHT/2 + 0.38*CORRIDOR_SIZE;
|
||||
else
|
||||
r->y = DHEIGHT/2 + CORRIDOR_SIZE/2 - r->h/2;
|
||||
r->y_init = DHEIGHT/2 + CORRIDOR_SIZE/2 - r->h/2;
|
||||
break;
|
||||
case Position_Middle:
|
||||
r->y = DHEIGHT/2;
|
||||
r->y_init = DHEIGHT/2;
|
||||
break;
|
||||
}
|
||||
|
||||
r->y = r->y_init;
|
||||
}
|
||||
|
||||
float cubic_ease(float t)
|
||||
{
|
||||
return (t <= 0.5) ? 4 * t * t * t : 1 - 4 * (1 - t) * (1 - t) * (1 - t);
|
||||
}
|
||||
|
||||
void rect_physics(rect_t *r, rectmeta_t const *meta, float absolute_time)
|
||||
|
@ -121,6 +128,7 @@ void rect_physics(rect_t *r, rectmeta_t const *meta, float absolute_time)
|
|||
float time = absolute_time - meta->time; /* <= 0 most of the time */
|
||||
|
||||
r->x = PLAYER_X - RECT_SPEED * time;
|
||||
r->y = r->y_init;
|
||||
r->r = 0;
|
||||
|
||||
if(meta->action == Action_RotateLeft) {
|
||||
|
@ -132,7 +140,7 @@ void rect_physics(rect_t *r, rectmeta_t const *meta, float absolute_time)
|
|||
r->r = 0.3 - time * vr;
|
||||
}
|
||||
else if(meta->action == Action_Speed1) {
|
||||
/* Double speed between -6 and -4 to skip 2 tempos */
|
||||
/* Double speed between -4 and -2 to skip 2 tempi */
|
||||
float speeding_period = fminf(2.0, fmaxf(0.0, time + 4.0));
|
||||
r->x -= RECT_SPEED * (speeding_period - 2.0);
|
||||
}
|
||||
|
@ -148,13 +156,32 @@ void rect_physics(rect_t *r, rectmeta_t const *meta, float absolute_time)
|
|||
r->r = -time * vr;
|
||||
}
|
||||
else if(meta->action == Action_Slide) {
|
||||
// TODO
|
||||
float amp = 2 * (DHEIGHT/2 - r->y_init);
|
||||
/* Nothing happens until -7 */
|
||||
if(time <= -7.0) {}
|
||||
/* Slide to the opposite side between -7 and -5 */
|
||||
else if(time <= -5.0) r->y += amp * cubic_ease((time + 7) / 2);
|
||||
/* Stay there until -3 */
|
||||
else if(time <= -3.0) r->y += amp;
|
||||
/* Slide back between -3 and -1 */
|
||||
else if(time <= -1.0) r->y += amp * (1 - cubic_ease((time + 3) / 2));
|
||||
/* Stay there until +1 */
|
||||
else if(time <= +1.0) {}
|
||||
/* Move back between +1 and +3 */
|
||||
else if(time <= +3.0) r->y += amp * cubic_ease((time - 1) / 2);
|
||||
/* Stay there indefinitely */
|
||||
else r->y += amp;
|
||||
}
|
||||
else if(meta->action == Action_Speed2) {
|
||||
/* Speed x1.6 permanently */
|
||||
r->x -= RECT_SPEED * time * 0.6;
|
||||
/* Speed x1.5 permanently */
|
||||
r->x -= RECT_SPEED * time * 0.5;
|
||||
}
|
||||
else if(meta->action == Action_Speed3) {
|
||||
// TODO
|
||||
}
|
||||
else if(meta->action == Action_Slow1) {
|
||||
/* Speed x2/3 until they come close enough to you */
|
||||
if(time <= -1.0)
|
||||
r->x += RECT_SPEED * (time + 1) / 3;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue