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:
@@ -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;
|
||||
|
18
src/lara.h
18
src/lara.h
@@ -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;
|
||||
|
Reference in New Issue
Block a user