1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-14 00:54:05 +02:00

add jump and underwater rolls

This commit is contained in:
XProger
2018-11-18 08:51:26 +03:00
parent 570c99915d
commit b484b26700
2 changed files with 18 additions and 2 deletions

View File

@@ -1081,7 +1081,7 @@ struct Controller {
if (animation.isFrameActive(frame)) {
if (cmd == TR::ANIM_CMD_EFFECT) {
switch (fx) {
case TR::Effect::ROTATE_180 : angle.y = angle.y + PI; break;
case TR::Effect::ROTATE_180 : angle.x = -angle.x; angle.y = angle.y + PI; break;
case TR::Effect::FLOOR_SHAKE : game->setEffect(this, TR::Effect::Type(fx)); break;
case TR::Effect::FINISH_LEVEL : game->loadNextLevel(); break;
case TR::Effect::FLIP_MAP : game->flipMap(); break;

View File

@@ -144,6 +144,8 @@ struct Lara : Character {
ANIM_SWITCH_BIG_DOWN = 195,
ANIM_SWITCH_BIG_UP = 196,
ANIM_PUSH_BUTTON = 197,
ANIM_ROLL_WATER = 203,
};
// http://www.tombraiderforums.com/showthread.php?t=211681
@@ -216,7 +218,7 @@ struct Lara : Character {
STATE_WADE,
STATE_ROLL_WATER,
STATE_PICKUP_FLARE,
STATE_UNUSED_4,
STATE_ROLL_AIR,
STATE_UNUSED_5,
STATE_DEATH_SLIDE,
@@ -2341,6 +2343,15 @@ struct Lara : Character {
}
}
if ((level->version & TR::VER_VERSION) > TR::VER_TR1) {
bool roll = (input & (FORTH | BACK)) == (FORTH | BACK);
if ((state == STATE_FORWARD_JUMP && (roll || (input & BACK) )) ||
(state == STATE_BACK_JUMP && (roll || (input & FORTH) )) ||
(state == STATE_FAST_DIVE && roll))
return STATE_ROLL_AIR;
}
if (state == STATE_FORWARD_JUMP || state == STATE_FALL_BACK) {
if (emptyHands()) {
if (input & ACTION) return STATE_REACH;
@@ -2602,6 +2613,11 @@ struct Lara : Character {
return animation.setAnim(ANIM_WATER_FALL); // TODO: wronng animation
}
if ((level->version & TR::VER_VERSION) > TR::VER_TR1 && state != STATE_ROLL_WATER) {
if ((input & (FORTH | BACK)) == (FORTH | BACK))
return animation.setAnim(ANIM_ROLL_WATER);
}
if (state == STATE_SWAN_DIVE || state == STATE_FAST_DIVE) {
angle.x = (state == STATE_SWAN_DIVE ? -45.0f : 85.0f) * DEG2RAD;
pos.y += 100.0f;