| 3384 | } |
| 3385 | |
| 3386 | void Player::ReceiveLevelCarryOver(ExitType exitType, const PlayerCarryOver& carryOver) |
| 3387 | { |
| 3388 | _lives = (std::int32_t)carryOver.Lives; |
| 3389 | _score = carryOver.Score; |
| 3390 | _foodEaten = (std::int32_t)carryOver.FoodEaten; |
| 3391 | _foodEatenCheckpoint = _foodEaten; |
| 3392 | _currentWeapon = carryOver.CurrentWeapon; |
| 3393 | |
| 3394 | std::memcpy(_gemsTotal, carryOver.Gems, sizeof(_gemsTotal)); |
| 3395 | std::memcpy(_weaponAmmo, carryOver.Ammo, sizeof(_weaponAmmo)); |
| 3396 | std::memcpy(_weaponAmmoCheckpoint, carryOver.Ammo, sizeof(_weaponAmmoCheckpoint)); |
| 3397 | std::memcpy(_weaponUpgrades, carryOver.WeaponUpgrades, sizeof(_weaponUpgrades)); |
| 3398 | std::memcpy(_weaponUpgradesCheckpoint, carryOver.WeaponUpgrades, sizeof(_weaponUpgradesCheckpoint)); |
| 3399 | |
| 3400 | _weaponAmmo[(std::int32_t)WeaponType::Blaster] = UINT16_MAX; |
| 3401 | _weaponAmmoCheckpoint[(std::int32_t)WeaponType::Blaster] = UINT16_MAX; |
| 3402 | |
| 3403 | ExitType exitTypeMasked = (exitType & ExitType::TypeMask); |
| 3404 | if (exitTypeMasked == ExitType::Warp || exitTypeMasked == ExitType::Bonus || exitTypeMasked == ExitType::Boss) { |
| 3405 | // Use delayed spawning |
| 3406 | SetState(ActorState::ApplyGravitation, false); |
| 3407 | _renderer.setDrawEnabled(false); |
| 3408 | _lastExitType = exitType; |
| 3409 | _controllable = false; |
| 3410 | _controllableTimeout = ((exitType & ExitType::FastTransition) == ExitType::FastTransition ? 5.0f : 55.0f); |
| 3411 | } else if ((exitType & ExitType::Frozen) == ExitType::Frozen) { |
| 3412 | // Use instant spawning |
| 3413 | Freeze(100.0f); |
| 3414 | } |
| 3415 | |
| 3416 | // Preload all weapons |
| 3417 | for (std::int32_t i = 0; i < std::int32_t(arraySize(_weaponAmmo)); i++) { |
| 3418 | if (_weaponAmmo[i] != 0) { |
| 3419 | PreloadMetadataAsync(String("Weapon/"_s + WeaponNames[i])); |
| 3420 | } |
| 3421 | } |
| 3422 | } |
| 3423 | |
| 3424 | PlayerCarryOver Player::PrepareLevelCarryOver() |
| 3425 | { |
no test coverage detected