MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / KayakUserInput

Function KayakUserInput

TombEngine/Objects/TR3/Vehicles/kayak.cpp:610–991  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

KayakControlFunction · 0.85

Calls 11

GetKayakInfoFunction · 0.85
SetAnimationFunction · 0.85
IsHeldFunction · 0.85
KayakCanGetOutFunction · 0.85
KayakDoRippleFunction · 0.85
KayakPaddleTakeFunction · 0.85
KayakPaddlePutFunction · 0.85
GetJointPositionFunction · 0.85
ANGLEFunction · 0.85
SetLaraVehicleFunction · 0.85
Vector3iClass · 0.50

Tested by

no test coverage detected