@@ -128,37 +128,29 @@ bool CNetAPI::ProcessPacket(unsigned char bytePacketID, NetBitStreamInterface& B
128128
129129 case PACKET_ID_PLAYER_BULLETSYNC:
130130 {
131- // Read out the player ID
132- ElementID PlayerID;
133- if (BitStream.Read (PlayerID))
134- {
135- // Grab the player
136- CClientPlayer* pPlayer = m_pPlayerManager->Get (PlayerID);
137- if (pPlayer)
138- {
139- // Read out the bulletsync data
140- ReadBulletsync (pPlayer, BitStream);
141- }
142- }
131+ ElementID id;
132+ if (!BitStream.Read (id))
133+ return true ;
134+ 135+ auto * player = m_pPlayerManager->Get (id);
136+ if (!player)
137+ return true ;
143138
139+ ReadBulletsync (player, BitStream);
144140 return true ;
145141 }
146142
147143 case PACKET_ID_WEAPON_BULLETSYNC:
148144 {
149- // Read out the player ID
150- ElementID PlayerID;
151- if (BitStream.Read (PlayerID))
152- {
153- // Grab the player
154- CClientPlayer* pPlayer = m_pPlayerManager->Get (PlayerID);
155- if (pPlayer)
156- {
157- // Read out the bulletsync data
158- ReadWeaponBulletsync (pPlayer, BitStream);
159- }
160- }
145+ ElementID id;
146+ if (!BitStream.Read (id))
147+ return true ;
148+ 149+ auto * player = m_pPlayerManager->Get (id);
150+ if (!player)
151+ return true ;
161152
153+ ReadWeaponBulletsync (player, BitStream);
162154 return true ;
163155 }
164156
@@ -2230,152 +2222,119 @@ void CNetAPI::ReadVehiclePartsState(CClientVehicle* pVehicle, NetBitStreamInterf
22302222 static_cast <CDeathmatchVehicle*>(pVehicle)->ResetDamageModelSync ();
22312223}
22322224
2233- //
2234- // Read bulletsync packet for a remote player
2235- //
2236- void CNetAPI::ReadBulletsync (CClientPlayer* pPlayer, NetBitStreamInterface& BitStream)
2225+ void CNetAPI::ReadBulletsync (CClientPlayer* player, NetBitStreamInterface& stream)
22372226{
2238- // Read the bulletsync data
2239- uchar ucWeapon = 0 ;
2240- if (!BitStream.Read (ucWeapon) || !CClientWeaponManager::HasWeaponBulletSync (ucWeapon))
2227+ std::uint8_t weapon = 0 ;
2228+ if (!stream.Read (weapon) || !CClientWeaponManager::HasWeaponBulletSync (weapon))
22412229 return ;
22422230
2243- eWeaponType weaponType = ( eWeaponType)ucWeapon ;
2231+ const auto type = static_cast < eWeaponType>(weapon) ;
22442232
2245- CVector vecStart, vecEnd;
2246- if (!BitStream.Read ((char *)&vecStart, sizeof (CVector)) || !BitStream.Read ((char *)&vecEnd, sizeof (CVector)))
2233+ CVector start;
2234+ CVector end;
2235+ if (!stream.Read (reinterpret_cast <char *>(&start), sizeof (CVector)) ||
2236+ !stream.Read (reinterpret_cast <char *>(&end), sizeof (CVector)) ||
2237+ !start.IsValid () || !end.IsValid ())
22472238 return ;
22482239
2249- if (!vecStart.IsValid () || !vecEnd.IsValid ())
2240+ std::uint8_t order = 0 ;
2241+ if (!stream.Read (order))
22502242 return ;
22512243
2252- uchar ucOrderCounter = 0 ;
2253- if (!BitStream. Read (ucOrderCounter))
2254- return ;
2244+ float damage = 0 . 0f ;
2245+ std:: uint8_t zone = 0 ;
2246+ CClientPlayer* damaged = nullptr ;
22552247
2256- float fDamage = 0 ;
2257- uchar ucHitZone = 0 ;
2258- CClientPlayer* pDamagedPlayer = NULL ;
2259- if (BitStream.ReadBit ())
2248+ if (stream.ReadBit ())
22602249 {
2261- ElementID DamagedPlayerID = INVALID_ELEMENT_ID;
2262- if (!BitStream .Read (fDamage ) || !BitStream .Read (ucHitZone ) || !BitStream .Read (DamagedPlayerID ))
2250+ ElementID id = INVALID_ELEMENT_ID;
2251+ if (!stream .Read (damage ) || !stream .Read (zone ) || !stream .Read (id ))
22632252 return ;
22642253
2265- pDamagedPlayer = DynamicCast<CClientPlayer>(CElementIDs::GetElement (DamagedPlayerID ));
2254+ damaged = DynamicCast<CClientPlayer>(CElementIDs::GetElement (id ));
22662255 }
22672256
2268- // Duplicate bullet check
2269- {
2270- bool bIsDuplicate = false ;
2257+ bool duplicate = false ;
22712258
2272- // Check if duplicate by comparing with previously sent vectors
2273- if (vecStart == pPlayer->m_vecPrevBulletSyncStart && vecEnd == pPlayer->m_vecPrevBulletSyncEnd )
2274- {
2275- bIsDuplicate = true ;
2276- }
2277- pPlayer->m_vecPrevBulletSyncStart = vecStart;
2278- pPlayer->m_vecPrevBulletSyncEnd = vecEnd;
2259+ if (start == player->m_vecPrevBulletSyncStart && end == player->m_vecPrevBulletSyncEnd )
2260+ duplicate = true ;
22792261
2280- // Verify if duplicate by comparing order counter
2281- char cDif = ucOrderCounter - pPlayer->m_ucPrevBulletSyncOrderCounter ;
2282- if (cDif > 0 )
2283- bIsDuplicate = false ;
2262+ player->m_vecPrevBulletSyncStart = start;
2263+ player->m_vecPrevBulletSyncEnd = end;
22842264
2285- pPlayer->m_ucPrevBulletSyncOrderCounter = ucOrderCounter;
2265+ if (static_cast <char >(order - player->m_ucPrevBulletSyncOrderCounter ) > 0 )
2266+ duplicate = false ;
22862267
2287- if (bIsDuplicate)
2288- return ;
2289- }
2268+ player->m_ucPrevBulletSyncOrderCounter = order;
22902269
2291- pPlayer->DischargeWeapon (weaponType, vecStart, vecEnd, fDamage , ucHitZone, pDamagedPlayer);
2270+ if (duplicate)
2271+ return ;
2272+ 2273+ player->DischargeWeapon (type, start, end, damage, zone, damaged);
22922274}
22932275
2294- //
2295- // Read bulletsync packet for a remote player
2296- //
2297- void CNetAPI::ReadWeaponBulletsync (CClientPlayer* pPlayer, NetBitStreamInterface& BitStream)
2276+ void CNetAPI::ReadWeaponBulletsync (CClientPlayer* player, NetBitStreamInterface& stream)
22982277{
2299- // Read the bulletsync data
2300- ElementID elementID;
2301- if (!BitStream.Read (elementID))
2302- return ;
2303- 2304- CClientWeapon* pWeapon = DynamicCast<CClientWeapon>(CElementIDs::GetElement (elementID));
2305- if (!pWeapon || !CClientWeaponManager::HasWeaponBulletSync (pWeapon->GetWeaponType ()))
2278+ ElementID id;
2279+ if (!stream.Read (id))
23062280 return ;
23072281
2308- CVector vecStart, vecEnd ;
2309- if (!BitStream. Read (( char *)&vecStart, sizeof (CVector)) || !BitStream. Read (( char *)&vecEnd, sizeof (CVector )))
2282+ auto * weapon = DynamicCast<CClientWeapon>( CElementIDs::GetElement (id)) ;
2283+ if (!weapon || !CClientWeaponManager::HasWeaponBulletSync (weapon-> GetWeaponType ( )))
23102284 return ;
23112285
2312- if (!vecStart.IsValid () || !vecEnd.IsValid ())
2286+ CVector start;
2287+ CVector end;
2288+ if (!stream.Read (reinterpret_cast <char *>(&start), sizeof (CVector)) || !stream.Read (reinterpret_cast <char *>(&end), sizeof (CVector)) || !start.IsValid () ||
2289+ !end.IsValid ())
23132290 return ;
23142291
2315- uchar ucOrderCounter = 0 ;
2316- if (!BitStream .Read (ucOrderCounter ))
2292+ uint8_t order = 0 ;
2293+ if (!stream .Read (order ))
23172294 return ;
23182295
2319- pWeapon ->FireInstantHit (vecStart, vecEnd , false , true );
2296+ weapon ->FireInstantHit (start, end , false , true );
23202297}
23212298
2322- //
2323- // Send bulletsync fire button press packet to remote players
2324- //
2325- void CNetAPI::SendBulletSyncFire (eWeaponType weaponType, const CVector& vecStart, const CVector& vecEnd, float fDamage , uchar ucHitZone,
2326- CClientPlayer* pRemoteDamagedPlayer)
2299+ void CNetAPI::SendBulletSyncFire (eWeaponType weapon, const CVector& start, const CVector& end, float damage, std::uint8_t zone, CClientPlayer* damaged)
23272300{
2328- // Send a bulletsync packet
2329- NetBitStreamInterface* pBitStream = g_pNet->AllocateNetBitStream ();
2330- 2331- // Write the bulletsync data
2332- pBitStream->Write ((char )weaponType);
2301+ auto * stream = g_pNet->AllocateNetBitStream ();
23332302
2334- pBitStream->Write ((const char *)&vecStart, sizeof (CVector));
2335- pBitStream->Write ((const char *)&vecEnd, sizeof (CVector));
2303+ stream->Write (static_cast <char >(weapon));
2304+ stream->Write (reinterpret_cast <const char *>(&start), sizeof (CVector));
2305+ stream->Write (reinterpret_cast <const char *>(&end), sizeof (CVector));
2306+ stream->Write (m_ucBulletSyncOrderCounter++);
23362307
2337- pBitStream->Write (m_ucBulletSyncOrderCounter++);
2338- 2339- if (fDamage > 0 && pRemoteDamagedPlayer)
2308+ if (damage > 0 .0f && damaged)
23402309 {
2341- pBitStream ->WriteBit (true );
2342- pBitStream ->Write (fDamage );
2343- pBitStream ->Write (ucHitZone );
2344- pBitStream ->Write (pRemoteDamagedPlayer ->GetID ());
2310+ stream ->WriteBit (true );
2311+ stream ->Write (damage );
2312+ stream ->Write (zone );
2313+ stream ->Write (damaged ->GetID ());
23452314 }
23462315 else
23472316 {
2348- pBitStream ->WriteBit (false );
2317+ stream ->WriteBit (false );
23492318 }
23502319
2351- // Send the packet
2352- g_pNet->SendPacket (PACKET_ID_PLAYER_BULLETSYNC, pBitStream, PACKET_PRIORITY_MEDIUM, PACKET_RELIABILITY_RELIABLE);
2353- g_pNet->DeallocateNetBitStream (pBitStream);
2320+ g_pNet->SendPacket (PACKET_ID_PLAYER_BULLETSYNC, stream, PACKET_PRIORITY_MEDIUM, PACKET_RELIABILITY_RELIABLE);
2321+ g_pNet->DeallocateNetBitStream (stream);
23542322}
23552323
2356- //
2357- // Send bulletsync fire button press packet to remote players
2358- //
2359- void CNetAPI::SendBulletSyncCustomWeaponFire (CClientWeapon* pWeapon, const CVector& vecStart, const CVector& vecEnd)
2324+ void CNetAPI::SendBulletSyncCustomWeaponFire (CClientWeapon* weapon, const CVector& start, const CVector& end)
23602325{
2361- // Ignore old bullet sync stuff
2362- if (pWeapon->IsLocalEntity ())
2326+ if (weapon->IsLocalEntity ())
23632327 return ;
23642328
2365- // Send a bulletsync packet
2366- NetBitStreamInterface* pBitStream = g_pNet->AllocateNetBitStream ();
2367- 2368- // Write the bulletsync data
2369- pBitStream->Write (pWeapon->GetID ());
2370- 2371- pBitStream->Write ((const char *)&vecStart, sizeof (CVector));
2372- pBitStream->Write ((const char *)&vecEnd, sizeof (CVector));
2329+ auto * stream = g_pNet->AllocateNetBitStream ();
23732330
2374- pBitStream->Write (m_ucCustomWeaponBulletSyncOrderCounter++);
2331+ stream->Write (weapon->GetID ());
2332+ stream->Write (reinterpret_cast <const char *>(&start), sizeof (CVector));
2333+ stream->Write (reinterpret_cast <const char *>(&end), sizeof (CVector));
2334+ stream->Write (m_ucCustomWeaponBulletSyncOrderCounter++);
23752335
2376- // Send the packet
2377- g_pNet->SendPacket (PACKET_ID_WEAPON_BULLETSYNC, pBitStream, PACKET_PRIORITY_MEDIUM, PACKET_RELIABILITY_RELIABLE);
2378- g_pNet->DeallocateNetBitStream (pBitStream);
2336+ g_pNet->SendPacket (PACKET_ID_WEAPON_BULLETSYNC, stream, PACKET_PRIORITY_MEDIUM, PACKET_RELIABILITY_RELIABLE);
2337+ g_pNet->DeallocateNetBitStream (stream);
23792338}
23802339
23812340//
0 commit comments