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

Function HandlePilotData

netcon/mtclient/mtpilottracker.cpp:462–553  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

460int Motd_version = 0;
461
462void HandlePilotData(uint8_t *data, int len, network_address *from) {
463 udp_packet_header inpacket;
464 vmt_descent3_struct *d3_pilot;
465 memcpy(&inpacket, data, sizeof(inpacket));
466 inpacket.len = INTEL_SHORT(inpacket.len) - 1;
467 if (len) {
468 switch (inpacket.type) {
469 case UNT_MOTD_RESPONSE:
470 if (MOTDState == STATE_WAITING_MOTD) {
471 if (Motdptr) {
472 if ((inpacket.len - PACKED_HEADER_ONLY_SIZE) > Motd_maxlen)
473 inpacket.len = PACKED_HEADER_ONLY_SIZE + Motd_maxlen - 1;
474 strncpy(Motdptr, (char *)inpacket.data, inpacket.len - PACKED_HEADER_ONLY_SIZE);
475 Motdptr[inpacket.len - PACKED_HEADER_ONLY_SIZE] = '\0';
476 }
477 MOTDState = STATE_HAVE_MOTD;
478 }
479 break;
480 case UNT_PILOT_DATA_RESPONSE:
481 if (inpacket.code == CMD_GAME_DESCENT3) {
482 if (D3ReadState == STATE_READING_PILOT) {
483 d3_pilot = (vmt_descent3_struct *)&inpacket.data;
484 xorcode(d3_pilot, DESCENT3_BLOCK_SIZE, inpacket.security);
485 if (stricmp(ProccesingPilot, d3_pilot->pilot_name) == 0) {
486 // Copy the data
487 memcpy(ReadD3Pilot, &inpacket.data, DESCENT3_BLOCK_SIZE);
488 // Set the state
489 D3ReadState = STATE_RECEIVED_PILOT;
490 }
491 }
492 }
493 break;
494 case UNT_PILOT_READ_FAILED:
495 if (inpacket.code == CMD_GAME_DESCENT3) {
496 if (D3ReadState == STATE_READING_PILOT) {
497 D3ReadState = STATE_PILOT_NOT_FOUND;
498 }
499 }
500 break;
501 case UNT_PILOT_WRITE_SUCCESS:
502 if (inpacket.code == CMD_GAME_DESCENT3) {
503 if (D3WriteState == STATE_SENDING_PILOT) {
504 D3WriteState = STATE_WROTE_PILOT;
505 }
506 }
507 break;
508 case UNT_PILOT_WRITE_FAILED:
509 if (inpacket.code == CMD_GAME_DESCENT3) {
510 if (D3WriteState == STATE_SENDING_PILOT) {
511 D3WriteState = STATE_WRITE_PILOT_FAILED;
512 }
513 }
514 break;
515 case UNT_CONTROL:
516 switch (INTEL_INT(inpacket.code)) {
517 case CMD_VALIDATED_USER_ACK:
518 if (ValidState == VALID_STATE_WAITING) {
519 ValidState = VALID_STATE_VALID;

Callers

nothing calls this directly

Calls 2

xorcodeFunction · 0.85
AckServerFunction · 0.85

Tested by

no test coverage detected