2
0
mirror of https://github.com/rehlds/metamod-r.git synced 2024-12-28 15:45:37 +03:00
metamod-r/metamod/src/sdk_util.cpp
asmodai ccea6516cb Finished rewriting of mreg code
Debug macro replaced to inline function
2017-01-09 01:30:23 +03:00

84 lines
1.7 KiB
C++

#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();
}