mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-17 02:24:07 +02:00
add jump and underwater rolls
This commit is contained in:
@@ -1081,7 +1081,7 @@ struct Controller {
|
|||||||
if (animation.isFrameActive(frame)) {
|
if (animation.isFrameActive(frame)) {
|
||||||
if (cmd == TR::ANIM_CMD_EFFECT) {
|
if (cmd == TR::ANIM_CMD_EFFECT) {
|
||||||
switch (fx) {
|
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::FLOOR_SHAKE : game->setEffect(this, TR::Effect::Type(fx)); break;
|
||||||
case TR::Effect::FINISH_LEVEL : game->loadNextLevel(); break;
|
case TR::Effect::FINISH_LEVEL : game->loadNextLevel(); break;
|
||||||
case TR::Effect::FLIP_MAP : game->flipMap(); 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_DOWN = 195,
|
||||||
ANIM_SWITCH_BIG_UP = 196,
|
ANIM_SWITCH_BIG_UP = 196,
|
||||||
ANIM_PUSH_BUTTON = 197,
|
ANIM_PUSH_BUTTON = 197,
|
||||||
|
|
||||||
|
ANIM_ROLL_WATER = 203,
|
||||||
};
|
};
|
||||||
|
|
||||||
// http://www.tombraiderforums.com/showthread.php?t=211681
|
// http://www.tombraiderforums.com/showthread.php?t=211681
|
||||||
@@ -216,7 +218,7 @@ struct Lara : Character {
|
|||||||
STATE_WADE,
|
STATE_WADE,
|
||||||
STATE_ROLL_WATER,
|
STATE_ROLL_WATER,
|
||||||
STATE_PICKUP_FLARE,
|
STATE_PICKUP_FLARE,
|
||||||
STATE_UNUSED_4,
|
STATE_ROLL_AIR,
|
||||||
STATE_UNUSED_5,
|
STATE_UNUSED_5,
|
||||||
STATE_DEATH_SLIDE,
|
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 (state == STATE_FORWARD_JUMP || state == STATE_FALL_BACK) {
|
||||||
if (emptyHands()) {
|
if (emptyHands()) {
|
||||||
if (input & ACTION) return STATE_REACH;
|
if (input & ACTION) return STATE_REACH;
|
||||||
@@ -2602,6 +2613,11 @@ struct Lara : Character {
|
|||||||
return animation.setAnim(ANIM_WATER_FALL); // TODO: wronng animation
|
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) {
|
if (state == STATE_SWAN_DIVE || state == STATE_FAST_DIVE) {
|
||||||
angle.x = (state == STATE_SWAN_DIVE ? -45.0f : 85.0f) * DEG2RAD;
|
angle.x = (state == STATE_SWAN_DIVE ? -45.0f : 85.0f) * DEG2RAD;
|
||||||
pos.y += 100.0f;
|
pos.y += 100.0f;
|
||||||
|
Reference in New Issue
Block a user