| 508 | } |
| 509 | |
| 510 | void MultiSendMSafeFunction(uint8_t type, msafe_struct *mstruct) { |
| 511 | int sequence = -1; |
| 512 | int to_slot = -1; |
| 513 | uint32_t to_bitmask = 0xFFFFFFFF; |
| 514 | |
| 515 | ASSERT((Demo_flags == DF_RECORDING) || (Netgame.local_role == LR_SERVER)); |
| 516 | |
| 517 | uint8_t data[MAX_GAME_DATA_SIZE]; |
| 518 | int count = 0; |
| 519 | int size_offset; |
| 520 | |
| 521 | size_offset = START_DATA(MP_MSAFE_FUNCTION, data, &count); |
| 522 | |
| 523 | MultiAddUbyte(type, data, &count); |
| 524 | |
| 525 | switch (type) { |
| 526 | case MSAFE_WEATHER_RAIN: |
| 527 | sequence = NETSEQ_WORLD; |
| 528 | MultiAddByte(mstruct->state, data, &count); |
| 529 | MultiAddFloat(mstruct->scalar, data, &count); |
| 530 | break; |
| 531 | case MSAFE_WEATHER_SNOW: |
| 532 | sequence = NETSEQ_WORLD; |
| 533 | MultiAddByte(mstruct->state, data, &count); |
| 534 | MultiAddFloat(mstruct->scalar, data, &count); |
| 535 | break; |
| 536 | case MSAFE_WEATHER_LIGHTNING: |
| 537 | sequence = NETSEQ_WORLD; |
| 538 | MultiAddByte(mstruct->state, data, &count); |
| 539 | MultiAddUbyte(mstruct->randval, data, &count); |
| 540 | MultiAddFloat(mstruct->scalar, data, &count); |
| 541 | break; |
| 542 | case MSAFE_WEATHER_LIGHTNING_BOLT: |
| 543 | sequence = NETSEQ_WORLD; |
| 544 | MultiAddInt(mstruct->roomnum, data, &count); |
| 545 | MultiAddUshort(mstruct->objhandle & HANDLE_OBJNUM_MASK, data, &count); |
| 546 | |
| 547 | MultiAddFloat(mstruct->pos.x, data, &count); |
| 548 | MultiAddFloat(mstruct->pos.y, data, &count); |
| 549 | MultiAddFloat(mstruct->pos.z, data, &count); |
| 550 | |
| 551 | MultiAddFloat(mstruct->lifetime, data, &count); |
| 552 | |
| 553 | MultiAddFloat(mstruct->pos2.x, data, &count); |
| 554 | MultiAddFloat(mstruct->pos2.y, data, &count); |
| 555 | MultiAddFloat(mstruct->pos2.z, data, &count); |
| 556 | |
| 557 | MultiAddString(GameTextures[mstruct->texnum].name, data, &count); |
| 558 | MultiAddUshort(mstruct->color, data, &count); |
| 559 | MultiAddByte(mstruct->size, data, &count); |
| 560 | MultiAddByte(mstruct->state, data, &count); |
| 561 | MultiAddByte(mstruct->count, data, &count); |
| 562 | MultiAddFloat(mstruct->interval, data, &count); |
| 563 | MultiAddByte(mstruct->index, data, &count); |
| 564 | |
| 565 | if (mstruct->flags) // Do attached lightning effect |
| 566 | { |
| 567 | MultiAddByte(1, data, &count); |
no test coverage detected