Merge pull request #353 from Sergeanur/Debug

obrstr + Debug
This commit is contained in:
aap 2020-03-25 09:08:33 +01:00 committed by GitHub
commit 8703758a7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 221 additions and 5 deletions

View File

@ -1,12 +1,91 @@
#include "common.h"
#include "Debug.h" #include "Debug.h"
#include "Font.h"
#include "main.h"
#include "Text.h"
int CDebug::ms_nCurrentTextLine; bool gbDebugStuffInRelease = false;
void CDebug::DebugInitTextBuffer() #define DEBUG_X_POS (300)
#define DEBUG_Y_POS (41)
#define DEBUG_LINE_HEIGHT (22)
int16 CDebug::ms_nCurrentTextLine;
char CDebug::ms_aTextBuffer[MAX_LINES][MAX_STR_LEN];
void
CDebug::DebugInitTextBuffer()
{ {
ms_nCurrentTextLine = 0; ms_nCurrentTextLine = 0;
} }
void CDebug::DebugDisplayTextBuffer() void
CDebug::DebugAddText(const char *str)
{ {
int32 i = 0;
if (*str != '\0') {
while (i < MAX_STR_LEN) {
ms_aTextBuffer[ms_nCurrentTextLine][i++] = *(str++);
if (*str == '\0')
break;
}
}
ms_aTextBuffer[ms_nCurrentTextLine++][i] = '\0';
if (ms_nCurrentTextLine >= MAX_LINES)
ms_nCurrentTextLine = 0;
}
void
CDebug::DebugDisplayTextBuffer()
{
#ifndef MASTER
if (gbDebugStuffInRelease)
{
int32 i = 0;
int32 y = DEBUG_Y_POS;
#ifdef FIX_BUGS
CFont::SetPropOn();
CFont::SetBackgroundOff();
CFont::SetScale(1.0f, 1.0f);
CFont::SetCentreOff();
CFont::SetRightJustifyOff();
CFont::SetJustifyOn();
CFont::SetRightJustifyWrap(0.0f);
CFont::SetBackGroundOnlyTextOff();
CFont::SetFontStyle(FONT_BANK);
#else
// this is not even readable
CFont::SetPropOff();
CFont::SetBackgroundOff();
CFont::SetScale(1.0f, 1.0f);
CFont::SetCentreOff();
CFont::SetRightJustifyOn();
CFont::SetRightJustifyWrap(0.0f);
CFont::SetBackGroundOnlyTextOff();
CFont::SetFontStyle(FONT_BANK);
CFont::SetPropOff();
#endif
do {
char *line;
while (true) {
line = ms_aTextBuffer[(ms_nCurrentTextLine + i++) % MAX_LINES];
if (*line != '\0')
break;
y += DEBUG_LINE_HEIGHT;
if (i == MAX_LINES) {
CFont::DrawFonts();
return;
}
}
AsciiToUnicode(line, gUString);
CFont::SetColor(CRGBA(0, 0, 0, 255));
CFont::PrintString(DEBUG_X_POS, y-1, gUString);
CFont::SetColor(CRGBA(255, 128, 128, 255));
CFont::PrintString(DEBUG_X_POS+1, y, gUString);
y += DEBUG_LINE_HEIGHT;
} while (i != MAX_LINES);
CFont::DrawFonts();
}
#endif
} }

View File

@ -2,10 +2,19 @@
class CDebug class CDebug
{ {
static int ms_nCurrentTextLine; enum
{
MAX_LINES = 15,
MAX_STR_LEN = 80,
};
static int16 ms_nCurrentTextLine;
static char ms_aTextBuffer[MAX_LINES][MAX_STR_LEN];
public: public:
static void DebugInitTextBuffer(); static void DebugInitTextBuffer();
static void DebugDisplayTextBuffer(); static void DebugDisplayTextBuffer();
static void DebugAddText(const char *str);
}; };
extern bool gbDebugStuffInRelease;

119
src/core/obrstr.cpp Normal file
View File

@ -0,0 +1,119 @@
#include "common.h"
#include "Debug.h"
#include "obrstr.h"
char obrstr[128];
char obrstr2[128];
void ObrInt(int32 n1)
{
IntToStr(n1, obrstr);
CDebug::DebugAddText(obrstr);
}
void ObrInt2(int32 n1, int32 n2)
{
IntToStr(n1, obrstr);
strcat(obrstr, " ");
IntToStr(n2, obrstr2);
strcat(obrstr, obrstr2);
CDebug::DebugAddText(obrstr);
}
void ObrInt3(int32 n1, int32 n2, int32 n3)
{
IntToStr(n1, obrstr);
strcat(obrstr, " ");
IntToStr(n2, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n3, obrstr2);
strcat(obrstr, obrstr2);
CDebug::DebugAddText(obrstr);
}
void ObrInt4(int32 n1, int32 n2, int32 n3, int32 n4)
{
IntToStr(n1, obrstr);
strcat(obrstr, " ");
IntToStr(n2, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n3, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n4, obrstr2);
strcat(obrstr, obrstr2);
CDebug::DebugAddText(obrstr);
}
void ObrInt5(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5)
{
IntToStr(n1, obrstr);
strcat(obrstr, " ");
IntToStr(n2, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n3, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n4, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n5, obrstr2);
strcat(obrstr, obrstr2);
CDebug::DebugAddText(obrstr);
}
void ObrInt6(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6)
{
IntToStr(n1, obrstr);
strcat(obrstr, " ");
IntToStr(n2, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n3, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n4, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n5, obrstr2);
strcat(obrstr, obrstr2);
strcat(obrstr, " ");
IntToStr(n6, obrstr2);
strcat(obrstr, obrstr2);
CDebug::DebugAddText(obrstr);
}
void IntToStr(int32 inNum, char *outStr)
{
bool isNeg = inNum < 0;
if (isNeg) {
inNum = -inNum;
*outStr = '-';
}
int16 digits = 1;
if (inNum > 9) {
int32 _inNum = inNum;
do {
digits++;
_inNum /= 10;
} while (_inNum > 9);
}
int32 strSize = digits;
if (isNeg)
strSize++;
char *pStr = &outStr[strSize];
int32 i = 0;
do {
*(pStr-- - 1) = (inNum % 10) + '0';
inNum /= 10;
} while (++i < strSize);
outStr[strSize] = '\0';
}

9
src/core/obrstr.h Normal file
View File

@ -0,0 +1,9 @@
#pragma once
void ObrInt(int32 n1);
void ObrInt2(int32 n1, int32 n2);
void ObrInt3(int32 n1, int32 n2, int32 n3);
void ObrInt4(int32 n1, int32 n2, int32 n3, int32 n4);
void ObrInt5(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5);
void ObrInt6(int32 n1, int32 n2, int32 n3, int32 n4, int32 n5, int32 n6);
void IntToStr(int32 inNum, char *outStr);