TFE: Pickups are set from external data instead of hardcoded as in vanilla DF
| 385 | |
| 386 | // TFE: Pickups are set from external data instead of hardcoded as in vanilla DF |
| 387 | void setPickup(Pickup*& pickup, SecObject* obj, ItemId itemId, TFE_ExternalData::ExternalPickup* externalPickups) |
| 388 | { |
| 389 | // itemId will correspond to position in externalPickups array |
| 390 | pickup->type = ItemType(externalPickups[itemId].type); |
| 391 | pickup->weaponIndex = externalPickups[itemId].weaponIndex; |
| 392 | pickup->playerItem = externalPickups[itemId].playerItem; |
| 393 | pickup->playerAmmo = externalPickups[itemId].playerAmmo; |
| 394 | pickup->amount = pickup->playerAmmo == s_playerBatteryPower |
| 395 | ? s32(externalPickups[itemId].amount / 100.0 * 2 * ONE_16) // convert battery from a percentage |
| 396 | : externalPickups[itemId].amount; |
| 397 | |
| 398 | pickup->msgId[0] = externalPickups[itemId].message1; |
| 399 | pickup->msgId[1] = externalPickups[itemId].message2; |
| 400 | |
| 401 | if (externalPickups[itemId].fullBright) |
| 402 | { |
| 403 | obj->flags |= OBJ_FLAG_FULLBRIGHT; |
| 404 | } |
| 405 | |
| 406 | if (externalPickups[itemId].noRemove) |
| 407 | { |
| 408 | obj->flags |= OBJ_FLAG_NO_REMOVE; |
| 409 | } |
| 410 | |
| 411 | // Set max amounts based on ammo type |
| 412 | TFE_ExternalData::MaxAmounts* maxAmounts = TFE_ExternalData::getMaxAmounts(); |
| 413 | if (externalPickups[itemId].playerAmmo == s_playerAmmoEnergy) |
| 414 | { |
| 415 | pickup->maxAmount = maxAmounts->ammoEnergyMax; |
| 416 | } |
| 417 | else if (externalPickups[itemId].playerAmmo == s_playerAmmoPower) |
| 418 | { |
| 419 | pickup->maxAmount = maxAmounts->ammoPowerMax; |
| 420 | } |
| 421 | else if (externalPickups[itemId].playerAmmo == s_playerAmmoPlasma) |
| 422 | { |
| 423 | pickup->maxAmount = maxAmounts->ammoPlasmaMax; |
| 424 | } |
| 425 | else if (externalPickups[itemId].playerAmmo == s_playerAmmoShell) |
| 426 | { |
| 427 | pickup->maxAmount = maxAmounts->ammoShellMax; |
| 428 | } |
| 429 | else if (externalPickups[itemId].playerAmmo == s_playerAmmoDetonators) |
| 430 | { |
| 431 | pickup->maxAmount = maxAmounts->ammoDetonatorMax; |
| 432 | } |
| 433 | else if (externalPickups[itemId].playerAmmo == s_playerAmmoMines) |
| 434 | { |
| 435 | pickup->maxAmount = maxAmounts->ammoMineMax; |
| 436 | } |
| 437 | else if (externalPickups[itemId].playerAmmo == s_playerAmmoMissiles) |
| 438 | { |
| 439 | pickup->maxAmount = maxAmounts->ammoMissileMax; |
| 440 | } |
| 441 | else if (externalPickups[itemId].playerAmmo == s_playerShields) |
| 442 | { |
| 443 | pickup->maxAmount = maxAmounts->shieldsMax; |
| 444 | } |
no test coverage detected