MCPcopy Create free account
hub / github.com/OpenFodder/openfodder / Briefing_Update_Helicopter

Method Briefing_Update_Helicopter

Source/Fodder.cpp:3951–4011  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3949}
3950
3951void cFodder::Briefing_Update_Helicopter() {
3952
3953 mBriefingHelicopter_ScreenX = (((int)mHelicopterPosX - 0x20) >> 16);
3954 mBriefingHelicopter_ScreenY = (((int)mHelicopterPosY) >> 16);
3955
3956 mBriefingHelicopter_NextUpdateCountdown -= mBriefingHelicopter_TimeScale;
3957
3958 if (mBriefingHelicopter_NextUpdateCountdown <= 0.0f) {
3959
3960 mBriefingHelicopter_TargetDirection = mBriefing_Helicopter_Offsets_Amiga[mHelicopterOffsetIndex];
3961 mBriefingHelicopter_TargetSpeed = mBriefing_Helicopter_Offsets_Amiga[mHelicopterOffsetIndex + 1];
3962 mBriefingHelicopter_NextUpdateCountdown = (mBriefing_Helicopter_Offsets_Amiga[mHelicopterOffsetIndex + 2]);
3963
3964 if (mBriefingHelicopter_NextUpdateCountdown <= 0.0f)
3965 return;
3966
3967 mHelicopterOffsetIndex += 3;
3968 }
3969
3970 mBriefingHelicopter_DirectionIndex &= 0x1FE;
3971 uint16 bx = mBriefingHelicopter_DirectionIndex;
3972
3973 int32 ax = mDirectionVectorTable[(bx / 2) & 0xFF];
3974 ax >>= 2;
3975
3976 mHelicopterPosX += (ax * mBriefingHelicopter_Speed * mBriefingHelicopter_TimeScale);
3977
3978 bx += 0x80;
3979 bx &= 0x1FE;
3980
3981 ax = mDirectionVectorTable[(bx / 2) & 0xFF];
3982 ax >>= 2;
3983
3984 mHelicopterPosY += (ax * mBriefingHelicopter_Speed * mBriefingHelicopter_TimeScale);
3985
3986 bx = mBriefingHelicopter_TargetDirection - mBriefingHelicopter_DirectionIndex;
3987 bx >>= 5;
3988 --bx;
3989 bx ^= 0x0F;
3990 bx &= 0x0F;
3991
3992 int16 al = mDirectionStepTable[bx];
3993 al <<= 2;
3994 //mBriefingHelicopter_DirectionIndex += al;
3995 mBriefingHelicopter_DirectionIndex += static_cast<int>(al * mBriefingHelicopter_TimeScale);
3996
3997 mBriefingHelicopter_DirectionIndex &= 0x1FE;
3998
3999 if (mBriefingHelicopter_TargetSpeed != mBriefingHelicopter_Speed) {
4000 if (mBriefingHelicopter_Speed > mBriefingHelicopter_TargetSpeed)
4001 mBriefingHelicopter_Speed -= (1.0f * mBriefingHelicopter_TimeScale);
4002 else
4003 mBriefingHelicopter_Speed += (1.0f * mBriefingHelicopter_TimeScale);
4004 }
4005
4006 if (mVersionCurrent->isCannonFodder1() && mVersionCurrent->isPC())
4007 mBriefingHelicopter_FrameCounter += 1;
4008

Callers

nothing calls this directly

Calls 2

isCannonFodder1Method · 0.80
isPCMethod · 0.80

Tested by

no test coverage detected