equal
deleted
inserted
replaced
39 newConn->netBase = flib_netbase_create(host, port); |
39 newConn->netBase = flib_netbase_create(host, port); |
40 newConn->playerName = flib_strdupnull(playerName); |
40 newConn->playerName = flib_strdupnull(playerName); |
41 newConn->dataDirPath = flib_strdupnull(dataDirPath); |
41 newConn->dataDirPath = flib_strdupnull(dataDirPath); |
42 |
42 |
43 newConn->netconnState = NETCONN_STATE_CONNECTING; |
43 newConn->netconnState = NETCONN_STATE_CONNECTING; |
44 newConn->isAdmin = false; |
|
45 |
44 |
46 newConn->isChief = false; |
45 newConn->isChief = false; |
47 newConn->map = flib_map_create_named("", "NoSuchMap"); |
46 newConn->map = flib_map_create_named("", "NoSuchMap"); |
48 newConn->pendingTeamlist.teamCount = 0; |
47 newConn->pendingTeamlist.teamCount = 0; |
49 newConn->pendingTeamlist.teams = NULL; |
48 newConn->pendingTeamlist.teams = NULL; |
307 flib_log_w("Net: Malformed CLIENT_FLAGS message"); |
306 flib_log_w("Net: Malformed CLIENT_FLAGS message"); |
308 } else { |
307 } else { |
309 const char *flags = netmsg->parts[1]; |
308 const char *flags = netmsg->parts[1]; |
310 bool setFlag = flags[0] == '+'; |
309 bool setFlag = flags[0] == '+'; |
311 |
310 |
312 for(int i=1; flags[i]; i++) { |
311 for(int j = 2; j < netmsg->partCount; ++j) { |
313 switch(flags[i]) { |
312 bool isSelf = !strcmp(conn->playerName, netmsg->parts[j]); |
314 case 'r': |
313 if(isSelf && strchr(flags, 'h')) { |
315 for(int j = 2; j < netmsg->partCount; ++j) { |
314 conn->isChief = setFlag; |
316 conn->onReadyStateCb(conn->onReadyStateCtx, netmsg->parts[j], setFlag); |
315 } |
317 } |
316 conn->onClientFlagsCb(conn->onClientFlagsCtx, netmsg->parts[j], flags+1, setFlag); |
318 break; |
|
319 default: |
|
320 flib_log_w("Net: Unknown flag %c in CLIENT_FLAGS message", flags[i]); |
|
321 break; |
|
322 } |
|
323 } |
317 } |
324 } |
318 } |
325 } else if (!strcmp(cmd, "ADD_TEAM")) { |
319 } else if (!strcmp(cmd, "ADD_TEAM")) { |
326 if(netmsg->partCount != 24 || conn->netconnState!=NETCONN_STATE_ROOM) { |
320 if(netmsg->partCount != 24 || conn->netconnState!=NETCONN_STATE_ROOM) { |
327 flib_log_w("Net: Bad ADD_TEAM message"); |
321 flib_log_w("Net: Bad ADD_TEAM message"); |
587 conn->onDisconnectedCb(conn->onDisconnectedCtx, NETCONN_DISCONNECT_NORMAL, netmsg->parts[1]); |
581 conn->onDisconnectedCb(conn->onDisconnectedCtx, NETCONN_DISCONNECT_NORMAL, netmsg->parts[1]); |
588 } |
582 } |
589 exit = true; |
583 exit = true; |
590 } |
584 } |
591 } else if (!strcmp(cmd, "ADMIN_ACCESS")) { |
585 } else if (!strcmp(cmd, "ADMIN_ACCESS")) { |
592 conn->onAdminAccessCb(conn->onAdminAccessCtx); |
586 // deprecated |
593 conn->isAdmin = true; |
|
594 } else if (!strcmp(cmd, "ROOM_CONTROL_ACCESS")) { |
587 } else if (!strcmp(cmd, "ROOM_CONTROL_ACCESS")) { |
595 if (netmsg->partCount < 2) { |
588 // deprecated |
596 flib_log_w("Net: Bad ROOM_CONTROL_ACCESS message"); |
|
597 } else { |
|
598 conn->isChief = strcmp("0", netmsg->parts[1]); |
|
599 conn->onRoomChiefStatusCb(conn->onRoomChiefStatusCtx, conn->isChief); |
|
600 } |
|
601 } else { |
589 } else { |
602 flib_log_w("Unknown server command: %s", cmd); |
590 flib_log_w("Unknown server command: %s", cmd); |
603 } |
591 } |
604 flib_netmsg_destroy(netmsg); |
592 flib_netmsg_destroy(netmsg); |
605 } |
593 } |