Guided missile release
| 5543 | |
| 5544 | // Guided missile release |
| 5545 | void 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 | |
| 5589 | void MultiSendMissileRelease(int slot, bool is_guided) { |
| 5590 | ASSERT(slot >= 0 && slot < MAX_PLAYERS); |
no test coverage detected