#include "precompiled.h" char *UTIL_VarArgs(char *format, ...) { va_list argptr; static char string[1024]; va_start(argptr, format); Q_vsnprintf(string, sizeof(string), format, argptr); va_end(argptr); return string; } short FixedSigned16(float value, float scale) { int output; output = (int)(value * scale); if (output > 32767) output = 32767; if (output < -32768) output = -32768; return (short)output; } unsigned short FixedUnsigned16(float value, float scale) { int output; output = (int)(value * scale); if (output < 0) output = 0; if (output > 0xFFFF) output = 0xFFFF; return (unsigned short)output; } void UTIL_HudMessage(edict_t *pEntity, const hudtextparms_t &textparms, const char *pMessage) { if (FNullEnt(pEntity) || pEntity->free) return; MESSAGE_BEGIN(MSG_ONE, SVC_TEMPENTITY, NULL, pEntity); WRITE_BYTE(TE_TEXTMESSAGE); WRITE_BYTE(textparms.channel & 0xFF); WRITE_SHORT(FixedSigned16(textparms.x, 1 << 13)); WRITE_SHORT(FixedSigned16(textparms.y, 1 << 13)); WRITE_BYTE(textparms.effect); WRITE_BYTE(textparms.r1); WRITE_BYTE(textparms.g1); WRITE_BYTE(textparms.b1); WRITE_BYTE(textparms.a1); WRITE_BYTE(textparms.r2); WRITE_BYTE(textparms.g2); WRITE_BYTE(textparms.b2); WRITE_BYTE(textparms.a2); WRITE_SHORT(FixedUnsigned16(textparms.fadeinTime, 1 << 8)); WRITE_SHORT(FixedUnsigned16(textparms.fadeoutTime, 1 << 8)); WRITE_SHORT(FixedUnsigned16(textparms.holdTime, 1 << 8)); if (textparms.effect == 2) WRITE_SHORT(FixedUnsigned16(textparms.fxTime, 1 << 8)); if (strlen(pMessage) < 512) { WRITE_STRING(pMessage); } else { char tmp[512]; strncpy(tmp, pMessage, sizeof tmp - 1); tmp[sizeof tmp - 1] = 0; WRITE_STRING(tmp); } MESSAGE_END(); }