diff --git a/src/info.c b/src/info.c index 1fd77a8f0..9c0c35031 100644 --- a/src/info.c +++ b/src/info.c @@ -749,13 +749,24 @@ char sprnames[NUMSPRITES + 1][5] = char spr2names[NUMPLAYERSPRITES][5] = { - "STIN", "STIL", "STIR", "STGL", "STGR", // Still - "SLWN", "SLWL", "SLWR", "SLGL", "SLGR", // Slow driving - "FSTN", "FSTL", "FSTR", "FSGL", "FSGR", // Fast driving + "STIN", "STIL", "STIR", // Still + "STGL", "STGR", // Still (glance back) + "STLL", "STLR", // Still (look back) + + "SLWN", "SLWL", "SLWR", // Slow driving + "SLGL", "SLGR", // Slow (glance back) + "SLLL", "SLLR", // Slow (look back) + + "FSTN", "FSTL", "FSTR", // Fast driving + "FSGL", "FSGR", // Fast (glance back) + "FSLL", "FSLR", // Fast (look back) + "DRLN", "DRLO", "DRLI", // Drifting left "DRRN", "DRRO", "DRRI", // Drifting right + "SPIN", // Spinout "DEAD", // Dead + "SIGN", // Finish signpost "XTRA", // Three Faces of Darkness }; @@ -767,18 +778,24 @@ playersprite_t spr2defaults[NUMPLAYERSPRITES] = { SPR2_STIN, // SPR2_STIR SPR2_STIN, // SPR2_STGL SPR2_STIN, // SPR2_STGR + SPR2_STGL, // SPR2_STLL + SPR2_STGR, // SPR2_STLR 0, // SPR2_SLWN SPR2_SLWN, // SPR2_SLWL SPR2_SLWN, // SPR2_SLWR SPR2_SLWN, // SPR2_SLGL SPR2_SLWN, // SPR2_SLGR + SPR2_SLGL, // SPR2_SLLL + SPR2_SLGR, // SPR2_SLLR 0, // SPR2_FSTN SPR2_FSTN, // SPR2_FSTL SPR2_FSTN, // SPR2_FSTR SPR2_FSTN, // SPR2_FSGL SPR2_FSTN, // SPR2_FSGR + SPR2_FSGL, // SPR2_FSLL + SPR2_FSGR, // SPR2_FSLR 0, // SPR2_DRLN SPR2_DRLN, // SPR2_DRLO @@ -825,16 +842,22 @@ state_t states[NUMSTATES] = {SPR_PLAY, SPR2_STIR, 1, {NULL}, 0, 0, S_KART_STILL_R}, // S_KART_STILL_R {SPR_PLAY, SPR2_STGL, 1, {NULL}, 0, 0, S_KART_STILL_GLANCE_L}, // S_KART_STILL_GLANCE_L {SPR_PLAY, SPR2_STGR, 1, {NULL}, 0, 0, S_KART_STILL_GLANCE_R}, // S_KART_STILL_GLANCE_R + {SPR_PLAY, SPR2_STLL, 1, {NULL}, 0, 0, S_KART_STILL_LOOK_L}, // S_KART_STILL_LOOK_L + {SPR_PLAY, SPR2_STLR, 1, {NULL}, 0, 0, S_KART_STILL_LOOK_R}, // S_KART_STILL_LOOK_R {SPR_PLAY, SPR2_SLWN, 1, {NULL}, 0, 0, S_KART_SLOW}, // S_KART_SLOW {SPR_PLAY, SPR2_SLWL, 1, {NULL}, 0, 0, S_KART_SLOW_L}, // S_KART_SLOW_L {SPR_PLAY, SPR2_SLWR, 1, {NULL}, 0, 0, S_KART_SLOW_R}, // S_KART_SLOW_R {SPR_PLAY, SPR2_SLGL, 1, {NULL}, 0, 0, S_KART_SLOW_GLANCE_L}, // S_KART_SLOW_GLANCE_L {SPR_PLAY, SPR2_SLGR, 1, {NULL}, 0, 0, S_KART_SLOW_GLANCE_R}, // S_KART_SLOW_GLANCE_R + {SPR_PLAY, SPR2_SLLL, 1, {NULL}, 0, 0, S_KART_SLOW_LOOK_L}, // S_KART_SLOW_LOOK_L + {SPR_PLAY, SPR2_SLLR, 1, {NULL}, 0, 0, S_KART_SLOW_LOOK_R}, // S_KART_SLOW_LOOK_R {SPR_PLAY, SPR2_FSTN, 1, {NULL}, 0, 0, S_KART_FAST}, // S_KART_FAST {SPR_PLAY, SPR2_FSTL, 1, {NULL}, 0, 0, S_KART_FAST_L}, // S_KART_FAST_L {SPR_PLAY, SPR2_FSTR, 1, {NULL}, 0, 0, S_KART_FAST_R}, // S_KART_FAST_R {SPR_PLAY, SPR2_FSGL, 1, {NULL}, 0, 0, S_KART_FAST_GLANCE_L}, // S_KART_FAST_GLANCE_L {SPR_PLAY, SPR2_FSGR, 1, {NULL}, 0, 0, S_KART_FAST_GLANCE_R}, // S_KART_FAST_GLANCE_R + {SPR_PLAY, SPR2_FSLL, 1, {NULL}, 0, 0, S_KART_FAST_LOOK_L}, // S_KART_FAST_LOOK_L + {SPR_PLAY, SPR2_FSLR, 1, {NULL}, 0, 0, S_KART_FAST_LOOK_R}, // S_KART_FAST_LOOK_R {SPR_PLAY, SPR2_DRLN, 1, {NULL}, 0, 0, S_KART_DRIFT_L}, // S_KART_DRIFT_L {SPR_PLAY, SPR2_DRLO, 1, {NULL}, 0, 0, S_KART_DRIFT_L_OUT}, // S_KART_DRIFT_L_OUT {SPR_PLAY, SPR2_DRLI, 1, {NULL}, 0, 0, S_KART_DRIFT_L_IN}, // S_KART_DRIFT_L_IN diff --git a/src/info.h b/src/info.h index 256c97bee..a8d278fd8 100644 --- a/src/info.h +++ b/src/info.h @@ -1027,9 +1027,12 @@ typedef enum sprite // Since this is zero-based, there can be at most 128 different SPR2_'s without changing that. typedef enum playersprite { - SPR2_STIN = 0, SPR2_STIL, SPR2_STIR, SPR2_STGL, SPR2_STGR, - SPR2_SLWN, SPR2_SLWL, SPR2_SLWR, SPR2_SLGL, SPR2_SLGR, - SPR2_FSTN, SPR2_FSTL, SPR2_FSTR, SPR2_FSGL, SPR2_FSGR, + SPR2_STIN = 0, SPR2_STIL, SPR2_STIR, + SPR2_STGL, SPR2_STGR, SPR2_STLL, SPR2_STLR, + SPR2_SLWN, SPR2_SLWL, SPR2_SLWR, + SPR2_SLGL, SPR2_SLGR, SPR2_SLLL, SPR2_SLLR, + SPR2_FSTN, SPR2_FSTL, SPR2_FSTR, + SPR2_FSGL, SPR2_FSGR, SPR2_FSLL, SPR2_FSLR, SPR2_DRLN, SPR2_DRLO, SPR2_DRLI, SPR2_DRRN, SPR2_DRRO, SPR2_DRRI, SPR2_SPIN, diff --git a/src/k_kart.c b/src/k_kart.c index 956ab711b..fe08b1e3d 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1949,6 +1949,20 @@ void K_KartMoveAnimation(player_t *player) { // Only try glancing if you're driving straight. glanceDir = K_GlanceAtPlayers(player); + + if (cmd->buttons & BT_LOOKBACK) + { + if (glanceDir == 0) + { + // Look to your right by default + glanceDir = -1; + } + else + { + // Looking back AND glancing? Amplify the look! + glanceDir *= 2; + } + } } if (player->speed >= fastspeed && player->speed >= (player->lastspeed - speedthreshold)) @@ -1965,17 +1979,23 @@ void K_KartMoveAnimation(player_t *player) } else { - if (glanceDir == -1) + switch (glanceDir) { - SetState(S_KART_FAST_GLANCE_R); - } - else if (glanceDir == 1) - { - SetState(S_KART_FAST_GLANCE_L); - } - else - { - SetState(S_KART_FAST); + case -2: + SetState(S_KART_FAST_LOOK_R); + break; + case 2: + SetState(S_KART_FAST_LOOK_L); + break; + case -1: + SetState(S_KART_FAST_GLANCE_R); + break; + case 1: + SetState(S_KART_FAST_GLANCE_L); + break; + default: + SetState(S_KART_FAST); + break; } } } @@ -1995,17 +2015,23 @@ void K_KartMoveAnimation(player_t *player) } else { - if (glanceDir == -1) + switch (glanceDir) { - SetState(S_KART_SLOW_GLANCE_R); - } - else if (glanceDir == 1) - { - SetState(S_KART_SLOW_GLANCE_L); - } - else - { - SetState(S_KART_SLOW); + case -2: + SetState(S_KART_SLOW_LOOK_R); + break; + case 2: + SetState(S_KART_SLOW_LOOK_L); + break; + case -1: + SetState(S_KART_SLOW_GLANCE_R); + break; + case 1: + SetState(S_KART_SLOW_GLANCE_L); + break; + default: + SetState(S_KART_SLOW); + break; } } } @@ -2023,17 +2049,23 @@ void K_KartMoveAnimation(player_t *player) } else { - if (glanceDir == -1) + switch (glanceDir) { - SetState(S_KART_STILL_GLANCE_R); - } - else if (glanceDir == 1) - { - SetState(S_KART_STILL_GLANCE_L); - } - else - { - SetState(S_KART_STILL); + case -2: + SetState(S_KART_STILL_LOOK_R); + break; + case 2: + SetState(S_KART_STILL_LOOK_L); + break; + case -1: + SetState(S_KART_STILL_GLANCE_R); + break; + case 1: + SetState(S_KART_STILL_GLANCE_L); + break; + default: + SetState(S_KART_STILL); + break; } } }