project_files/frontlib/net/netconn.c
changeset 7691 55c0a856ecd0
parent 7580 c92596feac0d
child 9080 9b42757d7e71
equal deleted inserted replaced
7689:855eeee4166f 7691:55c0a856ecd0
    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 	}