g_main.c
来自「著名物理引擎Hawk的源代码」· C语言 代码 · 共 123 行
C
123 行
/* G_main.c, HAWK game engine
*
* Copyright 1997-1998 by Phil Frisbie, Jr.
* for Hawk Software
*
*/
#include <time.h>
#include <stdio.h>
#include <stdarg.h>
#include <io.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <string.h>
#include "G_main.h"
void GameUpdate(int curframes, int totalframes)
{
int i;
OBJECT *o;
Frames = curframes;
TotalFrames = totalframes;
/* update objects */
o = &Level->objects[0];
do
{
if(o->update)
o->update(o);
o = o->next;
}while(o);
/* update views */
for(i=0;i<Level->nview;i++)
G_viewUpdateView(Level->view[i]);
}
GAMEDLL_EXPORT *GameInitDLL(GAMEDLL_IMPORT *import)
{
char str[128];
logf("================================================\n");
logf("game.dll log file for HAWK demo\n\n");
_strdate(str);
logf("Run date:\t%s\n", str);
_strtime(str);
logf("Run time:\t%s\n", str);
logf("================================================\n");
logf("Init game.dll\n");
ge.GameUpdate = GameUpdate;
ge.ParseEntities = ParseEntities;
ge.SpawnObject = G_spwnObject;
ge.G_dllversion = GAMEDLL_VERSION;
ge.G_dllvendor = GAMEDLL_VENDOR;
ge.G_dllname = GAMEDLL_NAME;
Level = import->Level;
gi = *import;
return ≥
}
#ifdef DEBUG_LOG
/* use like printf() */
#ifdef WIN32
#define open _open
#define close _close
#define lseek _lseek
#define write _write
#define O_CREAT _O_CREAT
#define O_RDWR _O_RDWR
#define O_TRUNC _O_TRUNC
#define S_IREAD _S_IREAD
#define S_IWRITE _S_IWRITE
#endif /* WIN32 */
void logf(char *str, ...)
{
char buffer[256];
va_list args;
int f, len;
static BOOL init = TRUE;
va_start(args, str);
vsprintf(buffer, str, args);
va_end(args);
len=(int)strlen(buffer);
if(init)
{
f = open("gamedll.log", O_CREAT|O_RDWR|O_TRUNC, S_IREAD | S_IWRITE);
if(f<0)
{
close(f);
return;
}
init = FALSE;
}
else
{
f = open("gamedll.log", O_CREAT|O_RDWR, S_IREAD | S_IWRITE);
if(f<0)
{
close(f);
return;
}
}
lseek(f, 0L, SEEK_END);
write(f, buffer, len);
close(f);
}
#else
void logf(char *str, ...)
{
return;
}
#endif /* DEBUG_LOG */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?