devilutionX/Source/tmsg.cpp
Anders Jenbo 39999791b3 Revamp ini options and sync in multiplayer
[NetMsg]
F12=Now you DIE!
F11=Here's something for you.
F10=Follow me.
F9=I need help! Come Here!

[Game]
Speed=50
Fast Walk=1
Grab Input=0
Theo Quest=0
Cow Quest=0

[Audio]
Sound Volume=0
Music Volume=0
Walking Sound=1

[Graphics]
Fullscreen=1
Fit to Screen=1
Scaling Quality=2
Integer Scaling=0
Vertical Sync=1
Blended Transparency=1
Gamma Correction=100
Color Cycling=1

[Diablo]
Intro=0

[Hellfire]
Intro=0
SItem=

[Phone Book]
Entry1=127.0.0.1

[Network]
Bind Address=0.0.0.0
2021-03-01 11:52:26 +01:00

66 lines
1.2 KiB
C++

/**
* @file tmsg.cpp
*
* Implementation of functionality transmitting chat messages.
*/
#include "all.h"
DEVILUTION_BEGIN_NAMESPACE
namespace {
TMsg *sgpTimedMsgHead;
}
int tmsg_get(Uint8 *pbMsg, Uint32 dwMaxLen)
{
int len;
TMsg *head;
if (!sgpTimedMsgHead)
return 0;
if ((int)(sgpTimedMsgHead->hdr.dwTime - SDL_GetTicks()) >= 0)
return 0;
head = sgpTimedMsgHead;
sgpTimedMsgHead = head->hdr.pNext;
len = head->hdr.bLen;
// BUGFIX: ignores dwMaxLen
memcpy(pbMsg, head->body, len);
mem_free_dbg(head);
return len;
}
void tmsg_add(Uint8 *pbMsg, Uint8 bLen)
{
TMsg **tail;
TMsg *msg = (TMsg *)DiabloAllocPtr(bLen + sizeof(*msg));
msg->hdr.pNext = nullptr;
msg->hdr.dwTime = SDL_GetTicks() + gnTickDelay * 10;
msg->hdr.bLen = bLen;
memcpy(msg->body, pbMsg, bLen);
for (tail = &sgpTimedMsgHead; *tail; tail = &(*tail)->hdr.pNext) {
;
}
*tail = msg;
}
void tmsg_start()
{
assert(!sgpTimedMsgHead);
}
void tmsg_cleanup()
{
TMsg *next;
while (sgpTimedMsgHead) {
next = sgpTimedMsgHead->hdr.pNext;
MemFreeDbg(sgpTimedMsgHead);
sgpTimedMsgHead = next;
}
}
DEVILUTION_END_NAMESPACE