MCPcopy Create free account
hub / github.com/ddnet/ddnet / Tick

Method Tick

src/game/server/entities/pickup.cpp:35–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33}
34
35void CPickup::Tick()
36{
37 Move();
38
39 // Check if a player intersected us
40 CEntity *apEnts[MAX_CLIENTS];
41 int Num = GameWorld()->FindEntities(m_Pos, GetProximityRadius() + ms_CollisionExtraSize, apEnts, MAX_CLIENTS, CGameWorld::ENTTYPE_CHARACTER);
42 for(int i = 0; i < Num; ++i)
43 {
44 auto *pChr = static_cast<CCharacter *>(apEnts[i]);
45
46 if(pChr && pChr->IsAlive())
47 {
48 if(m_Layer == LAYER_SWITCH && m_Number > 0 && !Switchers()[m_Number].m_aStatus[pChr->Team()])
49 continue;
50 bool Sound = false;
51 // player picked us up, is someone was hooking us, let them go
52 switch(m_Type)
53 {
54 case POWERUP_HEALTH:
55 if(pChr->Freeze())
56 GameServer()->CreateSound(m_Pos, SOUND_PICKUP_HEALTH, pChr->TeamMask());
57 break;
58
59 case POWERUP_ARMOR:
60 if(pChr->Team() == TEAM_SUPER)
61 continue;
62 for(int j = WEAPON_SHOTGUN; j < NUM_WEAPONS; j++)
63 {
64 if(pChr->GetWeaponGot(j))
65 {
66 pChr->SetWeaponGot(j, false);
67 pChr->SetWeaponAmmo(j, 0);
68 Sound = true;
69 }
70 }
71 pChr->SetNinjaActivationDir(vec2(0, 0));
72 pChr->SetNinjaActivationTick(-500);
73 pChr->SetNinjaCurrentMoveTime(0);
74 if(Sound)
75 {
76 pChr->SetLastWeapon(WEAPON_GUN);
77 GameServer()->CreateSound(m_Pos, SOUND_PICKUP_ARMOR, pChr->TeamMask());
78 }
79 if(pChr->GetActiveWeapon() >= WEAPON_SHOTGUN)
80 pChr->SetActiveWeapon(WEAPON_HAMMER);
81 break;
82
83 case POWERUP_ARMOR_SHOTGUN:
84 if(pChr->Team() == TEAM_SUPER)
85 continue;
86 if(pChr->GetWeaponGot(WEAPON_SHOTGUN))
87 {
88 pChr->SetWeaponGot(WEAPON_SHOTGUN, false);
89 pChr->SetWeaponAmmo(WEAPON_SHOTGUN, 0);
90 pChr->SetLastWeapon(WEAPON_GUN);
91 GameServer()->CreateSound(m_Pos, SOUND_PICKUP_ARMOR, pChr->TeamMask());
92 }

Callers 2

SnapMethod · 0.45
MoveMethod · 0.45

Calls 15

IsAliveMethod · 0.80
CreateSoundMethod · 0.80
SendWeaponPickupMethod · 0.80
FindEntitiesMethod · 0.45
TeamMethod · 0.45
FreezeMethod · 0.45
TeamMaskMethod · 0.45
GetWeaponGotMethod · 0.45
SetWeaponGotMethod · 0.45
SetWeaponAmmoMethod · 0.45
SetNinjaActivationDirMethod · 0.45

Tested by

no test coverage detected