1
0
Fork 0
mirror of https://github.com/galaxyhaxz/devilution synced 2025-02-22 12:34:59 +00:00
devilution/2020_03_31/Source/tmsg.cpp
PrisonOfMirrors b720183846 initial up
2020-11-28 18:24:54 -06:00

80 lines
1.3 KiB
C++

#include "diablo.h"
TMsg *sgpTimedMsgHead;
int tmsg_get(unsigned char *pbMsg, unsigned int dwMaxLen)
{
unsigned char *v2; // ebx
DWORD v3; // eax
TMsg *v4; // esi
size_t v6; // edi
v2 = pbMsg;
if ( !sgpTimedMsgHead )
return 0;
v3 = GetTickCount();
v4 = sgpTimedMsgHead;
if ( (signed int)(sgpTimedMsgHead->hdr.dwTime - v3) >= 0 )
return 0;
sgpTimedMsgHead = sgpTimedMsgHead->hdr.pNext;
v6 = v4->hdr.bLen;
memcpy(v2, v4->body, v6);
mem_free_dbg(v4);
return v6;
}
void tmsg_add(const BYTE *pbMsg, unsigned char bLen)
{
unsigned char v2; // bl
//unsigned char *v3; // ebp
size_t v4; // edi
TMsg *v5; // eax
TMsg *v6; // esi
DWORD v7; // eax
TMsg *v8; // ecx
TMsg **v9; // eax
v2 = bLen;
//v3 = pbMsg;
v4 = bLen;
v5 = (TMsg *)DiabloAllocPtr(bLen + 12);
v6 = v5;
v5->hdr.pNext = 0;
v7 = GetTickCount();
v6->hdr.bLen = v2;
v6->hdr.dwTime = v7 + 500;
memcpy(v6->body, pbMsg, v4);
v8 = sgpTimedMsgHead;
v9 = &sgpTimedMsgHead;
while ( v8 )
{
v9 = &v8->hdr.pNext;
v8 = v8->hdr.pNext;
}
*v9 = v6;
}
void tmsg_start()
{
/// ASSERT: assert(! sgpTimedMsgHead);
}
void tmsg_cleanup()
{
TMsg *v0; // eax
TMsg *v1; // esi
v0 = sgpTimedMsgHead;
if ( sgpTimedMsgHead )
{
do
{
v1 = v0->hdr.pNext;
sgpTimedMsgHead = 0;
mem_free_dbg(v0);
v0 = v1;
sgpTimedMsgHead = v1;
}
while ( v1 );
}
}