Someone is asking to join our game Tell them if its ok
| 3794 | // Someone is asking to join our game |
| 3795 | // Tell them if its ok |
| 3796 | void 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 |
| 3833 | void MultiDoGetGameInfo(uint8_t *data, network_address *from_addr) { |
no test coverage detected