From def6ee472b6dc1a02dd04beca962aea4ce04e52b Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Tue, 12 Nov 2019 19:20:59 +0100 Subject: [PATCH] Make DrawDiabloMsg time based instead of frame based --- Source/error.cpp | 16 +++++++++------- Source/error.h | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Source/error.cpp b/Source/error.cpp index 8b3748379..b83da59c5 100644 --- a/Source/error.cpp +++ b/Source/error.cpp @@ -3,7 +3,7 @@ DEVILUTION_BEGIN_NAMESPACE char msgtable[MAX_SEND_STR_LEN]; -char msgdelay; +DWORD msgdelay; char msgflag; char msgcnt; @@ -58,17 +58,19 @@ void InitDiabloMsg(char e) { int i; + if (msgcnt >= sizeof(msgtable)) + return; + for (i = 0; i < msgcnt; i++) { if (msgtable[i] == e) return; } msgtable[msgcnt] = e; - if (msgcnt < (BYTE)sizeof(msgtable)) - msgcnt++; + msgcnt++; msgflag = msgtable[0]; - msgdelay = 70; + msgdelay = GetTickCount(); } void ClrDiabloMsg() @@ -131,16 +133,16 @@ void DrawDiabloMsg() sx += fontkern[c] + 1; } - if (msgdelay > 0) { - msgdelay--; + if (msgdelay > 0 && msgdelay <= GetTickCount() - 3500) { + msgdelay = 0; } if (msgdelay == 0) { msgcnt--; - msgdelay = 70; if (msgcnt == 0) { msgflag = 0; } else { msgflag = msgtable[msgcnt]; + msgdelay = GetTickCount(); } } } diff --git a/Source/error.h b/Source/error.h index 4191582ad..3cc061b64 100644 --- a/Source/error.h +++ b/Source/error.h @@ -3,7 +3,7 @@ #define __ERROR_H__ extern char msgtable[MAX_SEND_STR_LEN]; -extern char msgdelay; +extern DWORD msgdelay; extern char msgflag; extern char msgcnt;