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

Function MultiDoRequestToObserve

Descent3/multi.cpp:6163–6207  ·  view source on GitHub ↗

Someone is asking us for permission to enter observer mode

Source from the content-addressed store, hash-verified

6161
6162// Someone is asking us for permission to enter observer mode
6163void MultiDoRequestToObserve(uint8_t *data) {
6164 int count = 0;
6165 int objnum;
6166
6167 mprintf(0, "Got request to observe!\n");
6168
6169 MULTI_ASSERT_NOMESSAGE(Netgame.local_role == LR_SERVER);
6170
6171 SKIP_HEADER(data, &count);
6172
6173 uint8_t slot = MultiGetByte(data, &count);
6174 uint8_t mode = MultiGetByte(data, &count);
6175 uint8_t on = MultiGetByte(data, &count);
6176
6177 if (mode == OBSERVER_MODE_PIGGYBACK)
6178 objnum = MultiGetInt(data, &count);
6179
6180 if ((Objects[Players[slot].objnum].type == OBJ_PLAYER && on) ||
6181 (Objects[Players[slot].objnum].type == OBJ_OBSERVER && !on)) {
6182 int newcount = 0;
6183 uint8_t newdata[MAX_GAME_DATA_SIZE];
6184 int size_offset;
6185
6186 size_offset = START_DATA(MP_OBSERVER_CHANGE, newdata, &newcount);
6187
6188 MultiAddByte(slot, newdata, &newcount);
6189 MultiAddByte(mode, newdata, &newcount);
6190 MultiAddByte(on, newdata, &newcount);
6191
6192 if (!on) {
6193 int start_slot = PlayerGetRandomStartPosition(slot);
6194 MultiAddShort(start_slot, newdata, &newcount);
6195 } else
6196 MultiAddShort(0, newdata, &newcount);
6197
6198 if (mode == OBSERVER_MODE_PIGGYBACK) {
6199 MultiAddInt(objnum, newdata, &newcount);
6200 }
6201
6202 END_DATA(newcount, newdata, size_offset);
6203
6204 MultiSendReliablyToAllExcept(Player_num, newdata, newcount, NETSEQ_PLAYERS, false);
6205 MultiDoObserverChange(newdata);
6206 }
6207}
6208
6209// We're asking to enter observer mode
6210void MultiSendRequestToObserve(int mode, int on, int objnum) {

Callers 2

MultiProcessDataFunction · 0.85

Calls 11

SKIP_HEADERFunction · 0.85
MultiGetByteFunction · 0.85
MultiGetIntFunction · 0.85
START_DATAFunction · 0.85
MultiAddByteFunction · 0.85
MultiAddShortFunction · 0.85
MultiAddIntFunction · 0.85
END_DATAFunction · 0.85
MultiDoObserverChangeFunction · 0.85

Tested by

no test coverage detected