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 &ge;
}

#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 + -
显示快捷键?