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

Function DoPickup

TombEngine/Game/pickup/pickup.cpp:287–395  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

285}
286
287void DoPickup(ItemInfo* laraItem)
288{
289 auto* lara = GetLaraInfo(laraItem);
290
291 if (lara->Context.InteractedItem == NO_VALUE)
292 return;
293
294 short pickupItemNumber = lara->Context.InteractedItem;
295 auto* pickupItem = &g_Level.Items[pickupItemNumber];
296
297 if (!Objects[pickupItem->ObjectNumber].isPickup)
298 return;
299
300 auto prevOrient = pickupItem->Pose.Orientation;
301
302 if (pickupItem->ObjectNumber == ID_BURNING_TORCH_ITEM)
303 {
304 PickedUpObject(ID_BURNING_TORCH_ITEM);
305 g_Hud.PickupSummary.AddDisplayPickup(ID_BURNING_TORCH_ITEM, pickupItem->Pose.Position.ToVector3());
306
307 GetFlameTorch();
308 lara->Torch.IsLit = (pickupItem->ItemFlags[3] & 1);
309 lara->Torch.Fade = 0;
310 lara->Torch.CurrentColor = lara->Torch.NextColor = pickupItem->Effect.PrimaryEffectColor;
311
312 KillItem(pickupItemNumber);
313 pickupItem->Pose.Orientation = prevOrient;
314 lara->Context.InteractedItem = NO_VALUE;
315 return;
316 }
317 else if (pickupItem->ObjectNumber == ID_FLARE_ITEM && pickupItem->Active)
318 {
319 lara->Control.Weapon.RequestGunType = LaraWeaponType::Flare;
320 lara->Control.Weapon.GunType = LaraWeaponType::Flare;
321 InitializeNewWeapon(*laraItem);
322 lara->Control.HandStatus = HandStatus::Special;
323 lara->Flare.Life = int(pickupItem->Data) & 0x7FFF;
324 KillItem(pickupItemNumber);
325
326 if (laraItem->Animation.ActiveState == LA_UNDERWATER_PICKUP_FLARE)
327 {
328 DrawFlareMeshes(*laraItem);
329 pickupItem->Pose.Orientation = prevOrient;
330 }
331 }
332 else
333 {
334 // Dirty, but it uses the same state.
335 if (laraItem->Animation.AnimNumber == LA_UNDERWATER_PICKUP)
336 {
337 if (g_GameFlow->IsMassPickupEnabled())
338 {
339 CollectMultiplePickups(lara->Context.InteractedItem);
340 lara->Context.InteractedItem = NO_VALUE;
341 return;
342 }
343
344 PickedUpObject(*pickupItem);

Callers 1

PickupFunction · 0.85

Calls 10

PickedUpObjectFunction · 0.85
GetFlameTorchFunction · 0.85
KillItemFunction · 0.85
InitializeNewWeaponFunction · 0.85
DrawFlareMeshesFunction · 0.85
CollectMultiplePickupsFunction · 0.85
HideOrDisablePickupFunction · 0.85
AddDisplayPickupMethod · 0.80
IsMassPickupEnabledMethod · 0.80
ToVector3Method · 0.45

Tested by

no test coverage detected