MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / DoEnergyToShields

Function DoEnergyToShields

Descent3/Player.cpp:3716–3757  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3714}
3715
3716void DoEnergyToShields(int pnum) {
3717 float amount; // how much energy gets transfered
3718 static float last_play_time = 0;
3719
3720 if (Players[pnum].energy - INITIAL_ENERGY <= 0) {
3721 if (pnum == Player_num)
3722 AddHUDMessage(TXT_NEEDMOREENERGY, INITIAL_ENERGY);
3723 return;
3724 }
3725 if (Objects[Players[pnum].objnum].shields >= MAX_SHIELDS) {
3726 if (pnum == Player_num)
3727 AddHUDMessage(TXT_SHIELDSATMAX);
3728 return;
3729 }
3730
3731 amount = std::min({Frametime * CONVERTER_RATE, Players[pnum].energy - INITIAL_ENERGY, (MAX_SHIELDS - Objects[Players[pnum].objnum].shields) * CONVERTER_SCALE});
3732
3733 Players[pnum].energy -= amount;
3734
3735 if ((!(Game_mode & GM_MULTI)) || Netgame.local_role == LR_SERVER)
3736 Objects[Players[pnum].objnum].shields += amount / CONVERTER_SCALE;
3737 else
3738 Multi_additional_shields[SHIELD_REQUEST_ENERGY_TO_SHIELD] += Frametime;
3739
3740 if (pnum == Player_num) {
3741 if (last_play_time > Gametime)
3742 last_play_time = 0;
3743
3744 if (Gametime > last_play_time + CONVERTER_SOUND_DELAY) {
3745 Sound_system.Play3dSound(SOUND_ENERGY_CONVERTER, &Objects[Players[pnum].objnum], MAX_GAME_VOLUME / 2);
3746
3747 ain_hear hear;
3748 hear.f_directly_player = true;
3749 hear.hostile_level = 0.3f;
3750 hear.curiosity_level = 1.0f;
3751 hear.max_dist = Sounds[SOUND_ENERGY_CONVERTER].max_distance * 0.5f;
3752 AINotify(&Objects[Players[Player_num].objnum], AIN_HEAR_NOISE, (void *)&hear);
3753
3754 last_play_time = Gametime;
3755 }
3756 }
3757}
3758
3759// Sets the start position that the player will respawn at
3760void PlayerAddWaypoint(int index) {

Callers 2

DoKeyboardMiscFunction · 0.85
DoControllerMiscFunction · 0.85

Calls 3

AddHUDMessageFunction · 0.85
AINotifyFunction · 0.85
Play3dSoundMethod · 0.80

Tested by

no test coverage detected