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

Function MultiSendWorldStates

Descent3/multi_server.cpp:1477–1824  ·  view source on GitHub ↗

Function that sends all the changed world states to an incoming player

Source from the content-addressed store, hash-verified

1475doorway *GetDoorwayFromObject(int door_obj_handle);
1476// Function that sends all the changed world states to an incoming player
1477void MultiSendWorldStates(int slot) {
1478 int i;
1479 ASSERT(Netgame.local_role == LR_SERVER);
1480
1481 uint8_t data[MAX_GAME_DATA_SIZE];
1482 uint8_t cur_data[MAX_GAME_DATA_SIZE];
1483 int cur_count;
1484 int count = 0;
1485 int size_offset;
1486
1487 mprintf(0, "Sending MP_WORLD_STATES packet to player %d!\n", slot);
1488
1489 size_offset = START_DATA(MP_WORLD_STATES, data, &count);
1490
1491 // Send MOTD
1492 if (Dedicated_server && Multi_message_of_the_day[0] != 0) {
1493 cur_count = 0;
1494 MultiAddByte(WS_MOTD, cur_data, &cur_count);
1495 MultiAddString(Multi_message_of_the_day, cur_data, &cur_count);
1496 MultiStoreWorldPacket(slot, data, &count, cur_data, &cur_count, &size_offset);
1497 }
1498
1499 // Send weather
1500 cur_count = 0;
1501 MultiAddByte(WS_WEATHER, cur_data, &cur_count);
1502 MultiAddByte(Weather.flags, cur_data, &cur_count);
1503 MultiAddFloat(Weather.rain_intensity_scalar, cur_data, &cur_count);
1504 MultiAddFloat(Weather.snow_intensity_scalar, cur_data, &cur_count);
1505 MultiAddFloat(Weather.lightning_interval_time, cur_data, &cur_count);
1506 MultiAddShort(Weather.lightning_rand_value, cur_data, &cur_count);
1507 MultiStoreWorldPacket(slot, data, &count, cur_data, &cur_count, &size_offset);
1508
1509 // Send broke glass
1510 if (Num_broke_glass > 0) {
1511 for (i = 0; i < Num_broke_glass; i++) {
1512 cur_count = 0;
1513 MultiAddByte(WS_ROOM_GLASS, cur_data, &cur_count);
1514 MultiAddUshort(Broke_glass_rooms[i], cur_data, &cur_count);
1515 MultiAddUshort(Broke_glass_faces[i], cur_data, &cur_count);
1516 MultiStoreWorldPacket(slot, data, &count, cur_data, &cur_count, &size_offset);
1517 }
1518 }
1519
1520 // Send waypoint
1521 cur_count = 0;
1522 MultiAddByte(WS_WAYPOINT, cur_data, &cur_count);
1523 MultiAddByte(Current_waypoint, cur_data, &cur_count);
1524 MultiStoreWorldPacket(slot, data, &count, cur_data, &cur_count, &size_offset);
1525
1526 // Send player bit-fields
1527 cur_count = 0;
1528 MultiAddByte(WS_PLAYERBF, cur_data, &cur_count);
1529 MultiAddUint(Players_typing, cur_data, &cur_count);
1530 MultiStoreWorldPacket(slot, data, &count, cur_data, &cur_count, &size_offset);
1531
1532 // Do room stuff
1533 for (i = 0; i <= Highest_room_index; i++) {
1534 if (!Rooms[i].used)

Callers 1

MultiDoServerFrameFunction · 0.85

Calls 15

START_DATAFunction · 0.85
MultiAddByteFunction · 0.85
MultiAddStringFunction · 0.85
MultiStoreWorldPacketFunction · 0.85
MultiAddFloatFunction · 0.85
MultiAddShortFunction · 0.85
MultiAddUshortFunction · 0.85
MultiAddUintFunction · 0.85
MultiAddUbyteFunction · 0.85
MultiAddIntFunction · 0.85
GetDoorwayFromObjectFunction · 0.85
ObjGetLightInfoFunction · 0.85

Tested by

no test coverage detected