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

Function MultiDoAskToJoin

Descent3/multi.cpp:3796–3830  ·  view source on GitHub ↗

Someone is asking to join our game Tell them if its ok

Source from the content-addressed store, hash-verified

3794// Someone is asking to join our game
3795// Tell them if its ok
3796void MultiDoAskToJoin(uint8_t *data, network_address *from_addr) {
3797 uint8_t outdata[MAX_GAME_DATA_SIZE];
3798 int count = 0;
3799 int incount = 0;
3800 int size;
3801
3802 size = START_DATA(MP_JOIN_RESPONSE, outdata, &count);
3803
3804 if (Netgame.local_role == LR_SERVER && Multi_accept_state) {
3805 // First see if this guy is banned
3806 if (GameDLLIsAddressBanned(from_addr, NULL)) {
3807 MultiAddByte(JOIN_ANSWER_REJECTED, outdata, &count);
3808
3809 } else {
3810 if (MultiCountPlayers() < Netgame.max_players) {
3811 int slot = MultiFindFreeSlot();
3812 MULTI_ASSERT(slot > 0, "FindFreeSlot returned -1!");
3813
3814 if (Players[slot].start_roomnum != -1) {
3815 mprintf(0, "Sending OK to join!\n");
3816 MultiAddByte(JOIN_ANSWER_OK, outdata, &count);
3817 } else {
3818 MultiAddByte(JOIN_ANSWER_NO_ROOM, outdata, &count);
3819 }
3820 } else {
3821 MultiAddByte(JOIN_ANSWER_FULL, outdata, &count);
3822 }
3823 }
3824 } else
3825 MultiAddByte(JOIN_ANSWER_NOT_SERVER, outdata, &count);
3826
3827 END_DATA(count, outdata, size);
3828
3829 nw_Send(from_addr, outdata, count, 0);
3830}
3831
3832// Someone is asking about our game
3833void MultiDoGetGameInfo(uint8_t *data, network_address *from_addr) {

Callers 1

MultiProcessDataFunction · 0.85

Calls 7

START_DATAFunction · 0.85
GameDLLIsAddressBannedFunction · 0.85
MultiAddByteFunction · 0.85
MultiCountPlayersFunction · 0.85
MultiFindFreeSlotFunction · 0.85
END_DATAFunction · 0.85
nw_SendFunction · 0.85

Tested by

no test coverage detected