Initial Commit

This commit is contained in:
2026-02-12 11:46:06 +03:00
commit b044c8d1a5
3973 changed files with 1599881 additions and 0 deletions

143
src/engine/log.cpp Normal file
View File

@@ -0,0 +1,143 @@
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <assert.h>
#include <SDL3/SDL.h>
#include "engine/log.h"
static char* g_month[12] = { "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" };
static int g_day_in_month[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int build_id;
FILE* g_logFile;
void CalculateBuildNumber()
{
static int start_day = 3;
static int start_month = 10;
static int start_year = 2021;
// Calculating build
int build = 0, mnum = 0, dnum, ynum, mcnt;
char mon[4];
char buf[128];
strcpy(buf, __DATE__);
sscanf(buf, "%s %d %d", mon, &dnum, &ynum);
for (int i = 0; i < 12; i++) {
#ifdef WIN32
if (stricmp(g_month[i], mon) == 0) {
#else
if (strcasecmp(g_month[i], mon) == 0) {
#endif // WIN32
mnum = i;
break;
}
}
build_id = (ynum - start_year) * 365 + dnum - start_day;
for (int i = 0; i < mnum; ++i)
build_id += g_day_in_month[i];
for (int i = 0; i < start_month - 1; ++i)
build_id -= g_day_in_month[i];
}
void Logger::Open()
{
CalculateBuildNumber();
#if 0//def WIN32
char UserName[256];
DWORD dwUserName = 256;
if (!GetUserNameA(UserName, &dwUserName))
strcpy(UserName, "unnamed");
char logfilename[256];
sprintf(logfilename, "engine_%s.log", UserName);
#else
char logfilename[256];
sprintf(logfilename, "engine.log");
#endif
g_logFile = fopen(logfilename, "w");
Msg("'%s' build %d, %s", "engine", build_id, __DATE__);
}
void Logger::Close()
{
if (g_logFile) {
fclose(g_logFile);
g_logFile = nullptr;
}
}
void Logger::Msg(const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
MsgArg(fmt, args);
va_end(args);
}
void Logger::MsgArg(const char* fmt, va_list args)
{
char buffer[2048];
int len = vsnprintf(buffer, sizeof(buffer), fmt, args);
assert(len >= 0);
assert(len < 2048);
SDL_assert_always(len >= 0);
SDL_assert_always(len < 2048);
//if (len >= sizeof(buffer))
// len = sizeof(buffer) - 1;
//if (buffer[len] != '\n' && len < sizeof(buffer) - 1)
//{
// buffer[len++] = '\n';
// buffer[len] = '\0';
//}
len = strlen(buffer);
if (buffer[len - 1] != '\n')
{
buffer[len++] = '\n';
buffer[len] = '\0';
}
//time_t t = time(0);
//struct tm* ti = localtime(&t);
//char timestr[256];
//sprintf(timestr, "%s", asctime(ti));
//timestr[strlen(timestr) - 1] = '\0';
//sprintf(buffer2, "[%s] %s", timestr, buffer);
if (g_logFile)
{
fwrite(buffer, sizeof(char), len, g_logFile);
fflush(g_logFile);
}
#ifdef WIN32
//OutputDebugStringA(buffer);
fwrite(buffer, sizeof(char), len, stdout);
#else
fwrite(buffer, sizeof(char), len, stdout);
#endif
}
void Msg(const char* fmt, ...)
{
va_list args;
va_start(args, fmt);
Logger::MsgArg(fmt, args);
va_end(args);
}