| 608 | } |
| 609 | |
| 610 | void KayakUserInput(ItemInfo* kayakItem, ItemInfo* laraItem) |
| 611 | { |
| 612 | auto* kayak = GetKayakInfo(kayakItem); |
| 613 | auto* lara = GetLaraInfo(laraItem); |
| 614 | |
| 615 | if (laraItem->HitPoints <= 0 && |
| 616 | laraItem->Animation.ActiveState != KAYAK_STATE_IDLE_DEATH) |
| 617 | { |
| 618 | SetAnimation(laraItem, ID_KAYAK_LARA_ANIMS, KAYAK_ANIM_IDLE_DEATH); |
| 619 | } |
| 620 | |
| 621 | int frame = laraItem->Animation.FrameNumber; |
| 622 | |
| 623 | switch (laraItem->Animation.ActiveState) |
| 624 | { |
| 625 | case KAYAK_STATE_IDLE: |
| 626 | if (IsHeld(In::Brake) && |
| 627 | !lara->Context.WaterCurrentActive && |
| 628 | !lara->Context.WaterCurrentPull.x && !lara->Context.WaterCurrentPull.z) |
| 629 | { |
| 630 | if (IsHeld(In::Left) && !IsHeld(In::Walk) && KayakCanGetOut(kayakItem, -1)) |
| 631 | { |
| 632 | laraItem->Animation.TargetState = KAYAK_STATE_DISMOUNT; |
| 633 | laraItem->Animation.RequiredState = KAYAK_STATE_DISMOUNT_LEFT; |
| 634 | } |
| 635 | else if (IsHeld(In::Right) && !IsHeld(In::Walk) && KayakCanGetOut(kayakItem, 1)) |
| 636 | { |
| 637 | laraItem->Animation.TargetState = KAYAK_STATE_DISMOUNT; |
| 638 | laraItem->Animation.RequiredState = KAYAK_STATE_DISMOUNT_RIGHT; |
| 639 | } |
| 640 | } |
| 641 | else if (IsHeld(In::Forward)) |
| 642 | { |
| 643 | laraItem->Animation.TargetState = KAYAK_STATE_TURN_RIGHT; |
| 644 | kayak->Turn = false; |
| 645 | kayak->Forward = true; |
| 646 | } |
| 647 | else if (IsHeld(In::Back)) |
| 648 | laraItem->Animation.TargetState = KAYAK_STATE_BACK; |
| 649 | else if (IsHeld(In::Left) && !IsHeld(In::Walk)) |
| 650 | { |
| 651 | laraItem->Animation.TargetState = KAYAK_STATE_TURN_LEFT; |
| 652 | |
| 653 | if (kayak->Velocity) |
| 654 | kayak->Turn = false; |
| 655 | else |
| 656 | kayak->Turn = true; |
| 657 | |
| 658 | kayak->Forward = false; |
| 659 | } |
| 660 | |
| 661 | else if (IsHeld(In::Right) && !IsHeld(In::Walk)) |
| 662 | { |
| 663 | laraItem->Animation.TargetState = KAYAK_STATE_TURN_RIGHT; |
| 664 | |
| 665 | if (kayak->Velocity) |
| 666 | kayak->Turn = false; |
| 667 | else |
no test coverage detected