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

Function MultiDoMissileRelease

Descent3/multi.cpp:5545–5587  ·  view source on GitHub ↗

Guided missile release

Source from the content-addressed store, hash-verified

5543
5544// Guided missile release
5545void MultiDoMissileRelease(int slot, uint8_t *data) {
5546 // if we are the server, we'll have to forward this packet to the clients
5547 int count = 0;
5548 uint8_t pnum_release;
5549
5550 SKIP_HEADER(data, &count);
5551
5552 bool is_guided = false;
5553 pnum_release = MultiGetUbyte(data, &count);
5554 if (pnum_release & 0x80) {
5555 pnum_release &= ~0x80;
5556 is_guided = true;
5557 }
5558
5559 if (Netgame.local_role == LR_SERVER) {
5560 // verify that slot and player match up
5561 if (pnum_release != slot) {
5562 mprintf(0, "%s Release: Packet pnum does not match real pnum\n", (is_guided) ? "Guided" : "Timeout");
5563 return;
5564 }
5565
5566 // relay the packet to the clients
5567 MultiSendMissileRelease(pnum_release, is_guided);
5568
5569 // actually perform the guided release
5570 if (is_guided)
5571 ReleaseGuidedMissile(pnum_release);
5572 else
5573 ReleaseUserTimeoutMissile(pnum_release);
5574 } else {
5575 // make sure we got this packet from the server
5576 if (slot != 0) {
5577 mprintf(0, "%s Release: got packet from non-server!?!\n", (is_guided) ? "Guided" : "Timeout");
5578 return;
5579 }
5580
5581 // actually perform the guided release
5582 if (is_guided)
5583 ReleaseGuidedMissile(pnum_release);
5584 else
5585 ReleaseUserTimeoutMissile(pnum_release);
5586 }
5587}
5588
5589void MultiSendMissileRelease(int slot, bool is_guided) {
5590 ASSERT(slot >= 0 && slot < MAX_PLAYERS);

Callers 1

MultiProcessDataFunction · 0.85

Calls 5

SKIP_HEADERFunction · 0.85
MultiGetUbyteFunction · 0.85
MultiSendMissileReleaseFunction · 0.85
ReleaseGuidedMissileFunction · 0.85

Tested by

no test coverage detected