MCPcopy Create free account
hub / github.com/TheForceEngine/TheForceEngine / pickupInventory

Function pickupInventory

TheForceEngine/TFE_DarkForces/pickup.cpp:679–720  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

677 }
678
679 void pickupInventory()
680 {
681 // Get the size of the PlayerInfo structure up to but not including s_playerInfo.stateUnknown.
682 size_t size = (size_t)&s_playerInfo.pileSaveMarker - (size_t)&s_playerInfo;
683 if (s_playerInvSaved)
684 {
685 // Copy the saved player info and add it to the current player info.
686 u32* dst = (u32*)&s_playerInfo;
687 u32* src = s_playerInvSaved;
688 for (s32 sizeCopied = 0; sizeCopied < size; sizeCopied += 4, src++, dst++)
689 {
690 (*dst) += (*src);
691 }
692
693 // Clear out the nava card item since it is one of the current objectives.
694 s_playerInfo.itemNava = JFALSE;
695 if (s_playerInfo.maxWeapon != s_playerInfo.curWeapon)
696 {
697 if (s_playerWeaponTask)
698 {
699 weapon_queueWeaponSwitch(s_playerInfo.maxWeapon);
700 s_playerInfo.maxWeapon = max(s_playerInfo.curWeapon, s_playerInfo.maxWeapon);
701 }
702 else
703 {
704 s_playerInfo.saveWeapon = s_playerInfo.maxWeapon;
705 }
706 }
707
708 // Free saved inventory.
709 level_free(s_playerInvSaved);
710 s_playerInvSaved = nullptr;
711 // Clamp ammo values.
712 s_playerInfo.ammoEnergy = pickup_addToValue(s_playerInfo.ammoEnergy, 0, s_ammoEnergyMax);
713 s_playerInfo.ammoPower = pickup_addToValue(s_playerInfo.ammoPower, 0, s_ammoPowerMax);
714 s_playerInfo.ammoPlasma = pickup_addToValue(s_playerInfo.ammoPlasma, 0, s_ammoPlasmaMax);
715 s_playerInfo.ammoDetonator = pickup_addToValue(s_playerInfo.ammoDetonator, 0, s_ammoDetonatorMax);
716 s_playerInfo.ammoShell = pickup_addToValue(s_playerInfo.ammoShell, 0, s_ammoShellMax);
717 s_playerInfo.ammoMine = pickup_addToValue(s_playerInfo.ammoMine, 0, s_ammoMineMax);
718 s_playerInfo.ammoMissile = pickup_addToValue(s_playerInfo.ammoMissile, 0, s_ammoMissileMax);
719 }
720 }
721} // TFE_DarkForces

Callers 1

pickupItemFunction · 0.85

Calls 3

weapon_queueWeaponSwitchFunction · 0.85
maxFunction · 0.85
pickup_addToValueFunction · 0.85

Tested by

no test coverage detected