#include "common.h" #include "Debug.h" #include "Font.h" #include "main.h" #include "Text.h" bool gbDebugStuffInRelease = false; #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; } 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 } // custom CDebug::ScreenStr CDebug::ms_aScreenStrs[MAX_SCREEN_STRS]; int CDebug::ms_nScreenStrs; void CDebug::DisplayScreenStrings() { int i; CFont::SetPropOn(); CFont::SetBackgroundOff(); CFont::SetScale(1.0f, 1.0f); CFont::SetCentreOff(); CFont::SetRightJustifyOff(); CFont::SetJustifyOff(); CFont::SetRightJustifyWrap(0.0f); CFont::SetWrapx(9999.0f); CFont::SetBackGroundOnlyTextOff(); CFont::SetFontStyle(FONT_BANK); for(i = 0; i < ms_nScreenStrs; i++){ AsciiToUnicode(ms_aScreenStrs[i].str, gUString); CFont::SetColor(CRGBA(0, 0, 0, 255)); CFont::PrintString(ms_aScreenStrs[i].x, ms_aScreenStrs[i].y, gUString); CFont::SetColor(CRGBA(255, 255, 255, 255)); CFont::PrintString(ms_aScreenStrs[i].x+1, ms_aScreenStrs[i].y+1, gUString); } CFont::DrawFonts(); ms_nScreenStrs = 0; } void CDebug::PrintAt(const char *str, int x, int y) { if(ms_nScreenStrs >= MAX_SCREEN_STRS) return; strncpy(ms_aScreenStrs[ms_nScreenStrs].str, str, 256); ms_aScreenStrs[ms_nScreenStrs].x = x*12; ms_aScreenStrs[ms_nScreenStrs].y = y*22; ms_nScreenStrs++; }