void writeGroup(writer_s &writer) { // Write the group header. Writer_WriteUInt16(&writer, records.size()); // Write the group records. Uri uri; for(int i = 1; i < int(records.size()) + 1; ++i) { uri.setUri(records.stringRef(i), RC_NULL); Uri_Write(reinterpret_cast<uri_s const *>(&uri), &writer); } }
void Net_SendPlayerInfo(int srcPlrNum, int destPlrNum) { size_t nameLen; assert(srcPlrNum >= 0 && srcPlrNum < DDMAXPLAYERS); nameLen = strlen(clients[srcPlrNum].name); #ifdef _DEBUG Con_Message("Net_SendPlayerInfo: src=%i dest=%i name=%s", srcPlrNum, destPlrNum, clients[srcPlrNum].name); #endif Msg_Begin(PKT_PLAYER_INFO); Writer_WriteByte(msgWriter, srcPlrNum); Writer_WriteUInt16(msgWriter, nameLen); Writer_Write(msgWriter, clients[srcPlrNum].name, nameLen); Msg_End(); Net_SendBuffer(destPlrNum, 0); }
/** * The delta is written to the message buffer. */ void Sv_WriteMobjDelta(const void* deltaPtr) { const mobjdelta_t* delta = reinterpret_cast<mobjdelta_t const *>(deltaPtr); const dt_mobj_t* d = &delta->mo; int df = delta->delta.flags; byte moreFlags = 0; // Do we have fast momentum? if(fabs(d->mom[MX]) >= MOM_FAST_LIMIT || fabs(d->mom[MY]) >= MOM_FAST_LIMIT || fabs(d->mom[MZ]) >= MOM_FAST_LIMIT) { df |= MDF_MORE_FLAGS; moreFlags |= MDFE_FAST_MOM; } // Any translucency? if(df & MDFC_TRANSLUCENCY) { df |= MDF_MORE_FLAGS; moreFlags |= MDFE_TRANSLUCENCY; } // A fade target? if(df & MDFC_FADETARGET) { df |= MDF_MORE_FLAGS; moreFlags |= MDFE_FADETARGET; } // On the floor? if(df & MDFC_ON_FLOOR) { df |= MDF_MORE_FLAGS; moreFlags |= MDFE_Z_FLOOR; } // Mobj type? if(df & MDFC_TYPE) { df |= MDF_MORE_FLAGS; moreFlags |= MDFE_TYPE; } // Flags. What elements are included in the delta? if(d->selector & ~DDMOBJ_SELECTOR_MASK) df |= MDF_SELSPEC; // Omit NULL state. if(!d->state) { df &= ~MDF_STATE; } /* // Floor/ceiling z? if(df & MDF_ORIGIN_Z) { if(d->pos[VZ] == DDMINFLOAT || d->pos[VZ] == DDMAXFLOAT) { df &= ~MDF_ORIGIN_Z; df |= MDF_MORE_FLAGS; moreFlags |= (d->pos[VZ] == DDMINFLOAT ? MDFE_Z_FLOOR : MDFE_Z_CEILING); } } */ DENG_ASSERT(!(df & MDFC_NULL)); // don't write NULL deltas DENG_ASSERT((df & 0xffff) != 0); // don't write empty deltas // First the mobj ID number and flags. Writer_WriteUInt16(msgWriter, delta->delta.id); Writer_WriteUInt16(msgWriter, df & 0xffff); // More flags? if(df & MDF_MORE_FLAGS) { Writer_WriteByte(msgWriter, moreFlags); } // Coordinates with three bytes. if(df & MDF_ORIGIN_X) { fixed_t vx = FLT2FIX(d->origin[VX]); Writer_WriteInt16(msgWriter, vx >> FRACBITS); Writer_WriteByte(msgWriter, vx >> 8); }