Compare commits
2 Commits
f92fb66cd8
...
e0a33fb714
Author | SHA1 | Date |
---|---|---|
KikooDX | e0a33fb714 | |
KikooDX | c63cd15cc5 |
49
src/main.c
49
src/main.c
|
@ -10,10 +10,11 @@
|
|||
#include "menu.h"
|
||||
#include "shared_define.h"
|
||||
|
||||
#define MAX_HSPD 2.0
|
||||
#define DRILL_HSPD 6.0
|
||||
#define MAX_HSPD 2.5
|
||||
#define DRILL_HSPD 5.0
|
||||
#define ACCELERATION 1.0
|
||||
#define DECELERATION 0.5
|
||||
#define LOCK_MOMENTUM 5
|
||||
#define MIN_VSPD -12.0
|
||||
#define MAX_VSPD 6.0
|
||||
#define JUMP_SPD -3.99
|
||||
|
@ -44,7 +45,6 @@ int main(void)
|
|||
double vspd = 0.0; //player vertical speed
|
||||
double hspd = 0; //player horizontal speed
|
||||
int move = 0;
|
||||
int direction = 0;
|
||||
int on_ground = 6; //remember if player is on solid
|
||||
char in_water = 0;
|
||||
int player_x = 0;
|
||||
|
@ -68,6 +68,7 @@ int main(void)
|
|||
char drill_toggle = 0;
|
||||
int drill_x = 0;
|
||||
int drill_y = 0;
|
||||
int lock_momentum = 0;
|
||||
set_level(level_id, level);
|
||||
DRAW_LEVEL();
|
||||
player_x = start_x;
|
||||
|
@ -133,7 +134,7 @@ int main(void)
|
|||
if (!drill_buffer)
|
||||
{
|
||||
drill_toggle = !drill_toggle;
|
||||
selected_direction = last_direction;
|
||||
if (drill_toggle) selected_direction = last_direction;
|
||||
}
|
||||
drill_buffer = 1;
|
||||
}
|
||||
|
@ -145,27 +146,25 @@ int main(void)
|
|||
int trunc_hspd;
|
||||
//ice
|
||||
if (collide(player_x, player_y + 1, level, '~')) friction = 0.2;
|
||||
if (lock_momentum) friction = 0; //momentum lock part 1
|
||||
move = keydown(KEY_RIGHT) - keydown(KEY_LEFT);
|
||||
if (move) {
|
||||
if (hspd < MAX_HSPD)
|
||||
{
|
||||
hspd += ACCELERATION * friction;
|
||||
}
|
||||
direction = move;
|
||||
}
|
||||
else if (hspd > 0)
|
||||
hspd += ACCELERATION * friction * move;
|
||||
if (lock_momentum) lock_momentum--; //momentum lock part 2
|
||||
if (hspd > 0)
|
||||
{
|
||||
if (friction != 0.2) hspd -= DECELERATION * friction;
|
||||
if (friction != 0.2)
|
||||
hspd -= ((hspd > MAX_HSPD) + 1) * DECELERATION * friction;
|
||||
else hspd -= DECELERATION / 4 * friction;
|
||||
if (hspd < 0) hspd = 0;
|
||||
}
|
||||
else if (hspd < 0)
|
||||
else if (hspd < -0)
|
||||
{
|
||||
if (friction != 0.2) hspd += DECELERATION * friction;
|
||||
if (friction != 0.2)
|
||||
hspd += ((hspd < -MAX_HSPD) + 1) * DECELERATION * friction;
|
||||
else hspd += DECELERATION / 4 * friction;
|
||||
if (hspd > 0) hspd = 0;
|
||||
}
|
||||
trunc_hspd = hspd * direction;
|
||||
trunc_hspd = hspd;
|
||||
if (1) //glue was here
|
||||
{
|
||||
if (!collide_solid(player_x + trunc_hspd, player_y, level, polarity, 0))
|
||||
|
@ -300,13 +299,14 @@ int main(void)
|
|||
collide_and_erase(drill_x, drill_y, level, 'd');
|
||||
if (collide_spike(drill_x, drill_y, level) || collide_solid(drill_x, drill_y, level, polarity, 0))
|
||||
{
|
||||
if (selected_direction == UP || selected_direction == DOWN)
|
||||
{
|
||||
vspd = -vspd;
|
||||
drill_toggle = 0;
|
||||
drill_toggle = 0;
|
||||
if (selected_direction == UP) vspd = MAX_VSPD;
|
||||
else if (selected_direction == DOWN) vspd = JUMP_SPD;
|
||||
else {
|
||||
lock_momentum = LOCK_MOMENTUM;
|
||||
if (selected_direction == LEFT) hspd = DRILL_HSPD;
|
||||
else /*direction is RIGHT*/ hspd = -DRILL_HSPD;
|
||||
}
|
||||
else if (selected_direction == LEFT) hspd = DRILL_HSPD;
|
||||
else /*direction is RIGHT*/ hspd = -DRILL_HSPD;
|
||||
}
|
||||
}
|
||||
//spike collision and death
|
||||
|
@ -316,6 +316,8 @@ int main(void)
|
|||
player_y = start_y;
|
||||
polarity = 0;
|
||||
drill_toggle = 0;
|
||||
lock_momentum = 0;
|
||||
hspd = 0;
|
||||
vspd = 0;
|
||||
}
|
||||
//border warp
|
||||
|
@ -342,6 +344,9 @@ int main(void)
|
|||
player_x = start_x;
|
||||
player_y = start_y;
|
||||
polarity = 0;
|
||||
drill_toggle = 0;
|
||||
lock_momentum = 0;
|
||||
hspd = 0;
|
||||
vspd = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
0000000000000000000000000000000000000000000000000000000.....rr.dddd.....000000000.....rr.dddd.....000000000.....rr.dddd.....000000000.....rr.dddd.....000000000..E..rr.dddd..t..00000000011111111bbbb.....00000000000000000bbbb1111100000000.........dddd0000000000000.........dddd0000000000000.....T...11110000000000000..S......0000000000000000011111111100000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000.....rr..........000000000..E..rr.......t..00000000011111111bbbb.....00000000000000000bbbb1111100000000.........dddd0000000000000.........dddd0000000000000.....T...11110000000000000..S......0000000000000000011111111100000000000000000000000000000000000000000
|
|
@ -1 +1 @@
|
|||
000000000000000000000000000000000vvvvvv0000000000000000000vv....vv^...v000000000...0v......v^v...000000000...0v..v...v^..^.000000000.S.0vww0v..v^..^.0E.000000rrr0vvww0..v^..^.0..000000.v000vww0.vv^.v^.0v.000000.vv00vvbv.vv^..^..w.000000..v0vvww0..v^..^....000000...0vwrwv..v^..^....000000...0wwwvv..v^v.^w...000000vr..wwvvv.wr...^vvvv0000000vv10000vvv0v0v00000000000000000000000000000000000
|
||||
000000000000000000000000000000000vvvvvv0000000000000000000vv....vv^...v000000000...0v......v^v...000000000...0v..v...v^..^.000000000.S.0vww0v..v^..^.0E.000000rrr0vvww0..v^..^.0..000000.v000vww0.vv^.v^.0v.000000.vv00vvbv.vv^..^..w.000000..v0vvww0..v^..^....000000...0vwrwv..v^..^....000000....wwwvv..v^v.^w...000000vr..wwvvv.wr...^vvvv0000000vv10000vvv0v0v00000000000000000000000000000000000
|
Loading…
Reference in New Issue