Better error checking in winapi.c. (Tim Beckmann)

Keep track of profile timestamps. (Tim Beckmann)

Implemented a few other missing bits.
This commit is contained in:
Steven Fuller 2001-12-09 20:21:44 +00:00 committed by Patryk Obara
parent c69d422333
commit a2d3afb314
10 changed files with 127 additions and 331 deletions

View file

@ -24,11 +24,10 @@
#include "psnd.h" #include "psnd.h"
#include "savegame.h" #include "savegame.h"
#if 0 /* used to get file time */
#undef BRIGHTNESS_CHANGE_SPEED #include <sys/types.h>
#define BRIGHTNESS_CHANGE_SPEED (RealFrameTime/4) #include <sys/stat.h>
#endif #include <unistd.h>
extern void StartMenuBackgroundBink(void); extern void StartMenuBackgroundBink(void);
extern int PlayMenuBackgroundBink(void); extern int PlayMenuBackgroundBink(void);
@ -346,12 +345,10 @@ extern int AvP_MainMenus(void)
EndMenuBackgroundBink(); EndMenuBackgroundBink();
TimeStampedMessage("after EndMenuMusic"); TimeStampedMessage("after EndMenuMusic");
#if 0
#if PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO #if PREDATOR_DEMO||MARINE_DEMO||ALIEN_DEMO
if (/*!AvP.LevelCompleted &&*/ (AvPMenus.MenusState != MENUSSTATE_STARTGAME)) ShowSplashScreens(); if ((AvPMenus.MenusState != MENUSSTATE_STARTGAME)) ShowSplashScreens();
TimeStampedMessage("after ShowSplashScreens"); TimeStampedMessage("after ShowSplashScreens");
#endif #endif
#endif
ReleaseAllAvPMenuGfx(); ReleaseAllAvPMenuGfx();
TimeStampedMessage("after ReleaseAllAvPMenuGfx"); TimeStampedMessage("after ReleaseAllAvPMenuGfx");
@ -665,25 +662,7 @@ extern void AvP_UpdateMenus(void)
profilePtr = GetNextUserProfile(); profilePtr = GetNextUserProfile();
RenderMenuText(profilePtr->Name,MENU_CENTREX,MENU_CENTREY-100,ONE_FIXED,AVPMENUFORMAT_CENTREJUSTIFIED); RenderMenuText(profilePtr->Name,MENU_CENTREX,MENU_CENTREY-100,ONE_FIXED,AVPMENUFORMAT_CENTREJUSTIFIED);
{ RenderSmallMenuText(ctime(&profilePtr->FileTime),MENU_CENTREX,MENU_CENTREY-70,ONE_FIXED,AVPMENUFORMAT_CENTREJUSTIFIED);
#warning commented out code
#if 0
char buffer[100];
char buffer2[100];
int nLen = 80;
time_t time_of_day;
time_of_day = time( NULL );
nLen = GetDateFormat(GetThreadLocale(), DATE_LONGDATE, &profilePtr->TimeLastUpdated,NULL,buffer,nLen);
nLen = GetTimeFormat(GetThreadLocale(), 0, &profilePtr->TimeLastUpdated,NULL,buffer2,100);
strcat(buffer2," ");
strcat(buffer2,buffer);
RenderSmallMenuText(buffer2,MENU_CENTREX,MENU_CENTREY-70,ONE_FIXED,AVPMENUFORMAT_CENTREJUSTIFIED);
#endif
}
RenderMenu(); RenderMenu();
RenderHelpString(); RenderHelpString();
@ -1732,10 +1711,7 @@ static void RenderUserProfileSelectMenu(void)
char *textPtr = GetTextString(AvPMenusData[AvPMenus.CurrentMenu].MenuTitle); char *textPtr = GetTextString(AvPMenusData[AvPMenus.CurrentMenu].MenuTitle);
RenderMenuText(textPtr,MENU_CENTREX,70,ONE_FIXED,AVPMENUFORMAT_CENTREJUSTIFIED); RenderMenuText(textPtr,MENU_CENTREX,70,ONE_FIXED,AVPMENUFORMAT_CENTREJUSTIFIED);
} }
#warning commented out code
#if 0
GetLocalTime(&profilePtr->TimeLastUpdated);
#endif
for (i=0; i<=elementPtr->b.MaxSliderValue; i++, profilePtr = GetNextUserProfile()) for (i=0; i<=elementPtr->b.MaxSliderValue; i++, profilePtr = GetNextUserProfile())
{ {
int y; int y;
@ -1775,37 +1751,8 @@ static void RenderUserProfileSelectMenu(void)
} }
b=Brightness[i]; b=Brightness[i];
RenderMenuText_Clipped(textPtr,MENU_CENTREX,MENU_CENTREY+y-60,b,AVPMENUFORMAT_CENTREJUSTIFIED,MENU_CENTREY-60-100,MENU_CENTREY-30+150); RenderMenuText_Clipped(textPtr,MENU_CENTREX,MENU_CENTREY+y-60,b,AVPMENUFORMAT_CENTREJUSTIFIED,MENU_CENTREY-60-100,MENU_CENTREY-30+150);
{ if (i > 0)
#warning commented out code RenderSmallMenuText(ctime(&profilePtr->FileTime),MENU_CENTREX,MENU_CENTREY+y-30,b,AVPMENUFORMAT_CENTREJUSTIFIED);
#if 0
char buffer[100];
char buffer2[100];
int nLen = 80;
/*sprintf(buffer,"%d:%d:%d %d/%d/%d",
profilePtr->TimeLastUpdated.wHour,
profilePtr->TimeLastUpdated.wMinute,
profilePtr->TimeLastUpdated.wSecond,
profilePtr->TimeLastUpdated.wYear,
profilePtr->TimeLastUpdated.wMonth,
profilePtr->TimeLastUpdated.wDay);
*/
time_t time_of_day;
time_of_day = time( NULL );
// strftime( buffer, 80, "%c",
// localtime( &time_of_day ) );
nLen = GetDateFormat(GetThreadLocale(), DATE_LONGDATE, &profilePtr->TimeLastUpdated,
NULL,buffer,
nLen);
nLen = GetTimeFormat(GetThreadLocale(), 0, &profilePtr->TimeLastUpdated,
NULL,buffer2,
100);
strcat(buffer2," ");
strcat(buffer2,buffer);
RenderSmallMenuText(buffer2,MENU_CENTREX,MENU_CENTREY+y-30,b,AVPMENUFORMAT_CENTREJUSTIFIED);
#endif
}
} }
} }
@ -1935,22 +1882,7 @@ static void RenderLoadGameMenu(void)
sprintf(buffer, "%s: %d",GetTextString(TEXTSTRING_SAVEGAME_SAVESLEFT),slotPtr->SavesLeft); sprintf(buffer, "%s: %d",GetTextString(TEXTSTRING_SAVEGAME_SAVESLEFT),slotPtr->SavesLeft);
RenderText(buffer,MENU_CENTREX,y+HUD_FONT_HEIGHT+1,elementPtr->Brightness,AVPMENUFORMAT_CENTREJUSTIFIED); RenderText(buffer,MENU_CENTREX,y+HUD_FONT_HEIGHT+1,elementPtr->Brightness,AVPMENUFORMAT_CENTREJUSTIFIED);
{ RenderText(ctime(&slotPtr->TimeStamp),MENU_RIGHTXEDGE-30,y+HUD_FONT_HEIGHT+1,elementPtr->Brightness,AVPMENUFORMAT_RIGHTJUSTIFIED);
#warning commented out code
#if 0
char buffer2[100];
int nLen = 80;
//GetLocalTime(&slotPtr->TimeStamp);
nLen = GetDateFormat(GetThreadLocale(), DATE_SHORTDATE, &slotPtr->TimeStamp,NULL,buffer,nLen);
nLen = GetTimeFormat(GetThreadLocale(), 0, &slotPtr->TimeStamp,NULL,buffer2,100);
strcat(buffer2," ");
strcat(buffer2,buffer);
RenderText(buffer2,MENU_RIGHTXEDGE-30,y+HUD_FONT_HEIGHT+1,elementPtr->Brightness,AVPMENUFORMAT_RIGHTJUSTIFIED);
#endif
}
} }
else else
{ {
@ -5581,7 +5513,6 @@ void LoadLevelHeader(SAVE_BLOCK_HEADER* header)
} }
static void GetHeaderInfoForSaveSlot(SAVE_SLOT_HEADER* save_slot,const char* filename) static void GetHeaderInfoForSaveSlot(SAVE_SLOT_HEADER* save_slot,const char* filename)
{ {
LEVEL_SAVE_BLOCK block; LEVEL_SAVE_BLOCK block;
@ -5610,17 +5541,13 @@ static void GetHeaderInfoForSaveSlot(SAVE_SLOT_HEADER* save_slot,const char* fil
} }
#warning commented out code {
#if 0 struct stat buf;
//get the time stamp for the file
{
FILETIME time,localTime;
GetFileTime(file,0,0,&time);
FileTimeToLocalFileTime(&time,&localTime);
FileTimeToSystemTime(&localTime,&save_slot->TimeStamp);
if (stat(filename, &buf) != -1) {
save_slot->TimeStamp = buf.st_mtime;
} }
#endif }
//load the level header //load the level header
ReadFile(file,&block,sizeof(block),(LPDWORD)&bytes_read,0); ReadFile(file,&block,sizeof(block),(LPDWORD)&bytes_read,0);

View file

@ -337,8 +337,7 @@ typedef struct
unsigned char ElapsedTime_Seconds; unsigned char ElapsedTime_Seconds;
unsigned char Difficulty; unsigned char Difficulty;
SYSTEMTIME TimeStamp; FILETIME TimeStamp;
} SAVE_SLOT_HEADER; } SAVE_SLOT_HEADER;
#define NUMBER_OF_SAVE_SLOTS 8 #define NUMBER_OF_SAVE_SLOTS 8

View file

@ -28,7 +28,6 @@ extern "C"
static int LoadUserProfiles(void); static int LoadUserProfiles(void);
static void EmptyUserProfilesList(void); static void EmptyUserProfilesList(void);
static int MakeNewUserProfile(void);
static void InsertProfileIntoList(AVP_USER_PROFILE *profilePtr); static void InsertProfileIntoList(AVP_USER_PROFILE *profilePtr);
static int ProfileIsMoreRecent(AVP_USER_PROFILE *profilePtr, AVP_USER_PROFILE *profileToTestAgainstPtr); static int ProfileIsMoreRecent(AVP_USER_PROFILE *profilePtr, AVP_USER_PROFILE *profileToTestAgainstPtr);
static void SetDefaultProfileOptions(AVP_USER_PROFILE *profilePtr); static void SetDefaultProfileOptions(AVP_USER_PROFILE *profilePtr);
@ -53,32 +52,20 @@ extern void ExamineSavedUserProfiles(void)
// delete any existing profiles // delete any existing profiles
EmptyUserProfilesList(); EmptyUserProfilesList();
// UserProfilesList.add_entry(profilePtr); // load any available user profiles
// SaveUserProfile(profilePtr); LoadUserProfiles();
if (LoadUserProfiles())
{
}
else /* No user profile found. We'll have to make one */
{
// MakeNewUserProfile();
}
// make a fake entry to allow creating new user profiles
AVP_USER_PROFILE *profilePtr = new AVP_USER_PROFILE; AVP_USER_PROFILE *profilePtr = new AVP_USER_PROFILE;
*profilePtr = DefaultUserProfile; *profilePtr = DefaultUserProfile;
fprintf(stderr, "STUB: ExamineSavedUserProfiles()\n"); profilePtr->FileTime = time(NULL);
#if 0
GetLocalTime(&profilePtr->TimeLastUpdated);
SystemTimeToFileTime(&profilePtr->TimeLastUpdated,&profilePtr->FileTime);
#endif
strncpy(profilePtr->Name,GetTextString(TEXTSTRING_USERPROFILE_NEW),MAX_SIZE_OF_USERS_NAME); strncpy(profilePtr->Name,GetTextString(TEXTSTRING_USERPROFILE_NEW),MAX_SIZE_OF_USERS_NAME);
profilePtr->Name[MAX_SIZE_OF_USERS_NAME]=0; profilePtr->Name[MAX_SIZE_OF_USERS_NAME]=0;
SetDefaultProfileOptions(profilePtr); SetDefaultProfileOptions(profilePtr);
InsertProfileIntoList(profilePtr); InsertProfileIntoList(profilePtr);
} }
extern int NumberOfUserProfiles(void) extern int NumberOfUserProfiles(void)
@ -135,7 +122,6 @@ extern int SaveUserProfile(AVP_USER_PROFILE *profilePtr)
fclose(file); fclose(file);
return 1; return 1;
} }
extern void DeleteUserProfile(int number) extern void DeleteUserProfile(int number)
@ -163,11 +149,8 @@ extern void DeleteUserProfile(int number)
} }
delete [] filename; delete [] filename;
} }
} }
static void InsertProfileIntoList(AVP_USER_PROFILE *profilePtr) static void InsertProfileIntoList(AVP_USER_PROFILE *profilePtr)
{ {
if (UserProfilesList.size()) if (UserProfilesList.size())
@ -188,18 +171,11 @@ static void InsertProfileIntoList(AVP_USER_PROFILE *profilePtr)
static int ProfileIsMoreRecent(AVP_USER_PROFILE *profilePtr, AVP_USER_PROFILE *profileToTestAgainstPtr) static int ProfileIsMoreRecent(AVP_USER_PROFILE *profilePtr, AVP_USER_PROFILE *profileToTestAgainstPtr)
{ {
fprintf(stderr, "STUB: ProfileIsMoreRecent(%p, %p)\n", profilePtr, profileToTestAgainstPtr); if (difftime(profilePtr->FileTime, profileToTestAgainstPtr->FileTime) > 0.0) {
return 1; return 1; /* first file newer than file to test */
#if 0 } else {
if (CompareFileTime(&profilePtr->FileTime,&profileToTestAgainstPtr->FileTime)==1)
{
return 1;
}
else
{
return 0; return 0;
} }
#endif
} }
static int LoadUserProfiles(void) static int LoadUserProfiles(void)
@ -227,7 +203,7 @@ static int LoadUserProfiles(void)
if (nLen > nPathLen) nPathLen = nLen; if (nLen > nPathLen) nPathLen = nLen;
} }
for (int i = 0; i < globbuf.gl_pathc; i++) { for (unsigned int i = 0; i < globbuf.gl_pathc; i++) {
struct stat buf; struct stat buf;
if (stat(globbuf.gl_pathv[i], &buf) == -1) if (stat(globbuf.gl_pathv[i], &buf) == -1)
@ -239,14 +215,11 @@ static int LoadUserProfiles(void)
// strncpy(pszFullPath,load_name,nPathLen); // strncpy(pszFullPath,load_name,nPathLen);
strcpy(pszFullPath /* +nPathLen */, globbuf.gl_pathv[i]); strcpy(pszFullPath /* +nPathLen */, globbuf.gl_pathv[i]);
//make sure the file is a rif file
HANDLE rif_file; HANDLE rif_file;
rif_file = CreateFile (pszFullPath, GENERIC_READ, 0, 0, OPEN_EXISTING, rif_file = CreateFile (pszFullPath, GENERIC_READ, 0, 0, OPEN_EXISTING,
FILE_FLAG_RANDOM_ACCESS, 0); FILE_FLAG_RANDOM_ACCESS, 0);
if(rif_file==INVALID_HANDLE_VALUE) if(rif_file==INVALID_HANDLE_VALUE)
{ {
// printf("couldn't open %s\n",pszFullPath);
delete[] pszFullPath; delete[] pszFullPath;
continue; continue;
} }
@ -261,116 +234,20 @@ static int LoadUserProfiles(void)
delete profilePtr; delete profilePtr;
continue; continue;
} }
#if 0
FILETIME ftLocal; profilePtr->FileTime = buf.st_mtime;
FileTimeToLocalFileTime(&wfd.ftLastWriteTime,&ftLocal);
FileTimeToSystemTime(&ftLocal,&profilePtr->TimeLastUpdated);
profilePtr->FileTime = ftLocal;
#endif
InsertProfileIntoList(profilePtr); InsertProfileIntoList(profilePtr);
CloseHandle (rif_file); CloseHandle (rif_file);
delete[] pszFullPath; delete[] pszFullPath;
} }
} }
globfree(&globbuf); globfree(&globbuf);
#if 0
const char* load_name=USER_PROFILES_WILDCARD_NAME;
// allow a wildcard search
WIN32_FIND_DATA wfd;
HANDLE hFindFile = ::FindFirstFile(load_name,&wfd);
if (INVALID_HANDLE_VALUE == hFindFile)
{
// printf("File Not Found: <%s>\n",load_name);
return 0;
}
// get any path in the load_name
int nPathLen = 0;
char * pColon = strrchr(load_name,':');
if (pColon) nPathLen = pColon - load_name + 1;
char * pBackSlash = strrchr(load_name,'\\');
if (pBackSlash)
{
int nLen = pBackSlash - load_name + 1;
if (nLen > nPathLen) nPathLen = nLen;
}
char * pSlash = strrchr(load_name,'/');
if (pSlash)
{
int nLen = pSlash - load_name + 1;
if (nLen > nPathLen) nPathLen = nLen;
}
do
{
if
(
!(wfd.dwFileAttributes &
(FILE_ATTRIBUTE_DIRECTORY
|FILE_ATTRIBUTE_SYSTEM
|FILE_ATTRIBUTE_HIDDEN
|FILE_ATTRIBUTE_READONLY))
// not a directory, hidden or system file
)
{
char * pszFullPath = new char [nPathLen+strlen(wfd.cFileName)+1];
strncpy(pszFullPath,load_name,nPathLen);
strcpy(pszFullPath+nPathLen,wfd.cFileName);
//make sure the file is a rif file
HANDLE rif_file;
rif_file = CreateFile (pszFullPath, GENERIC_READ, 0, 0, OPEN_EXISTING,
FILE_FLAG_RANDOM_ACCESS, 0);
if(rif_file==INVALID_HANDLE_VALUE)
{
// printf("couldn't open %s\n",pszFullPath);
delete[] pszFullPath;
continue;
}
AVP_USER_PROFILE *profilePtr = new AVP_USER_PROFILE;
unsigned long bytes_read;
if (!ReadFile(rif_file, profilePtr, sizeof(AVP_USER_PROFILE), &bytes_read, 0))
{
CloseHandle (rif_file);
delete[] pszFullPath;
delete profilePtr;
continue;
}
FILETIME ftLocal;
FileTimeToLocalFileTime(&wfd.ftLastWriteTime,&ftLocal);
FileTimeToSystemTime(&ftLocal,&profilePtr->TimeLastUpdated);
profilePtr->FileTime = ftLocal;
InsertProfileIntoList(profilePtr);
CloseHandle (rif_file);
delete[] pszFullPath;
}
}
while (::FindNextFile(hFindFile,&wfd));
if (ERROR_NO_MORE_FILES != GetLastError())
{
// printf("Error finding next file\n");
}
::FindClose(hFindFile);
#endif
return 1; return 1;
} }
static void SetDefaultProfileOptions(AVP_USER_PROFILE *profilePtr) static void SetDefaultProfileOptions(AVP_USER_PROFILE *profilePtr)
{ {
// set Gamma // set Gamma
@ -393,46 +270,7 @@ static void SetDefaultProfileOptions(AVP_USER_PROFILE *profilePtr)
IntroOutroMoviesAreActive = 1; IntroOutroMoviesAreActive = 1;
AutoWeaponChangeOn = TRUE; AutoWeaponChangeOn = TRUE;
strcpy(MP_PlayerName, "DeadMeat");
// Edmond to add in network name
srand(time(NULL));
switch(rand()%11)
{
case 0:
strcpy(MP_PlayerName, "DogMeat");
break;
case 1:
strcpy(MP_PlayerName, "FreshMeat");
break;
case 2:
strcpy(MP_PlayerName, "RancidMeat");
break;
case 3:
strcpy(MP_PlayerName, "HorseMeat");
break;
case 4:
strcpy(MP_PlayerName, "RawMeat");
break;
case 5:
strcpy(MP_PlayerName, "LiveMeat");
break;
case 6:
strcpy(MP_PlayerName, "M-m-m-meat");
break;
case 7:
strcpy(MP_PlayerName, "LlamaMeat");
break;
case 8:
strcpy(MP_PlayerName, "JustMeat");
break;
case 9:
strcpy(MP_PlayerName, "TastyMeat");
break;
case 10:
strcpy(MP_PlayerName, "MonkeyMeat");
break;
}
strcpy(MP_PlayerName,"DeadMeat");
SetToDefaultDetailLevels(); SetToDefaultDetailLevels();
@ -449,10 +287,6 @@ static void SetDefaultProfileOptions(AVP_USER_PROFILE *profilePtr)
SaveSettingsToUserProfile(profilePtr); SaveSettingsToUserProfile(profilePtr);
} }
extern void GetSettingsFromUserProfile(void) extern void GetSettingsFromUserProfile(void)
{ {
RequestedGammaSetting = UserProfilePtr->GammaSetting; RequestedGammaSetting = UserProfilePtr->GammaSetting;
@ -477,7 +311,6 @@ extern void GetSettingsFromUserProfile(void)
SetDetailLevelsFromMenu(); SetDetailLevelsFromMenu();
} }
extern void SaveSettingsToUserProfile(AVP_USER_PROFILE *profilePtr) extern void SaveSettingsToUserProfile(AVP_USER_PROFILE *profilePtr)
{ {
profilePtr->GammaSetting = RequestedGammaSetting; profilePtr->GammaSetting = RequestedGammaSetting;

View file

@ -173,9 +173,9 @@ void Start_Progress_Bar()
FlushD3DZBuffer(); FlushD3DZBuffer();
ThisFramesRenderingHasBegun(); ThisFramesRenderingHasBegun();
#if !ALIEN_DEMO /* TODO: disabled for alien demo */
RenderBriefingText(ScreenDescriptorBlock.SDB_Height/2, ONE_FIXED); RenderBriefingText(ScreenDescriptorBlock.SDB_Height/2, ONE_FIXED);
#endif
ThisFramesRenderingHasFinished(); ThisFramesRenderingHasFinished();
/* FlipBuffers(); */ /* FlipBuffers(); */

View file

@ -9,10 +9,13 @@ extern "C" {
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <limits.h> #include <limits.h>
#include <inttypes.h> // int64_t #include <inttypes.h> /* int64_t */
void FixFilename(char *str);
#define PACKED __attribute__((packed)) #define PACKED __attribute__((packed))
/* windows junk */
#ifndef min #ifndef min
#define min(a, b) (((a) < (b)) ? (a) : (b)) #define min(a, b) (((a) < (b)) ? (a) : (b))
#endif #endif
@ -38,16 +41,12 @@ extern "C" {
#define _tcslen strlen #define _tcslen strlen
#define _tcscpy strcpy #define _tcscpy strcpy
/* #define _mbclen strlen */
size_t _mbclen(const unsigned char *s); size_t _mbclen(const unsigned char *s);
#define RGBA_MAKE(r, g, b, a) ((((a) << 24) | ((r) << 16) | ((g) << 8) | (b))) #define RGBA_MAKE(r, g, b, a) ((((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
#define MAX_PATH PATH_MAX #define MAX_PATH PATH_MAX
void FixFilename(char *str);
/* windows junk */
typedef int GUID; typedef int GUID;
typedef int DPID; typedef int DPID;
typedef int HINSTANCE; typedef int HINSTANCE;
@ -78,17 +77,19 @@ typedef RECT RECT_AVP;
typedef int64_t __int64; typedef int64_t __int64;
typedef int FILETIME; typedef time_t FILETIME;
/* this SYSTEMTIME is incorrect, but it is also currently unused */
typedef struct SYSTEMTIME typedef struct SYSTEMTIME
{ {
//#warning "TODO: SYSTEMTIME format is not correct" int wYear; /* should be uint16_t, not int32_t */
int wMonth;
int wDay;
/* int wDayOfWeek; */
int wHour; int wHour;
int wMinute; int wMinute;
int wSecond; int wSecond;
int wYear; /* int wMilliseconds; */
int wMonth;
int wDay;
} SYSTEMTIME; } SYSTEMTIME;
#define VK_BACK 1 #define VK_BACK 1
@ -108,14 +109,14 @@ typedef struct SYSTEMTIME
#define FILE_FLAG_RANDOM_ACCESS 0x0004 #define FILE_FLAG_RANDOM_ACCESS 0x0004
#define GENERIC_READ 0x0008 #define GENERIC_READ 0x0008
#define OPEN_EXISTING 0x0010 #define OPEN_EXISTING 0x0010
#define FILE_ATTRIBUTE_READONLY 0x0020 #define FILE_CURRENT 0x0020
#define FILE_CURRENT 0x0040 #define FILE_BEGIN 0x0040
#define FILE_BEGIN 0x0080 #define FILE_END 0x0080
#define FILE_END 0x0100 #define FILE_SHARE_READ 0x0100
#define FILE_SHARE_READ 0x0200 #define FILE_SHARE_WRITE 0x0200
#define FILE_ATTRIBUTE_DIRECTORY 0x0400 #define OPEN_ALWAYS 0x0400
#define FILE_SHARE_WRITE 0x0800 #define FILE_ATTRIBUTE_READONLY 0x0800
#define OPEN_ALWAYS 0x1000 #define FILE_ATTRIBUTE_DIRECTORY 0x1000
#define FILE_ATTRIBUTE_NORMAL 0x2000 #define FILE_ATTRIBUTE_NORMAL 0x2000

View file

@ -24,6 +24,7 @@
#include "pldnet.h" #include "pldnet.h"
#include "cdtrackselection.h" #include "cdtrackselection.h"
#include "gammacontrol.h" #include "gammacontrol.h"
#include "version.h"
char LevelName[] = {"predbit6\0QuiteALongNameActually"}; /* the real way to load levels */ char LevelName[] = {"predbit6\0QuiteALongNameActually"}; /* the real way to load levels */
@ -963,6 +964,9 @@ int ExitWindowsSystem()
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
/*
printf("%s", AvPVersionString);
*/
if (InitSDL() == -1) { if (InitSDL() == -1) {
fprintf(stderr, "Could not find a sutable resolution!\n"); fprintf(stderr, "Could not find a sutable resolution!\n");
fprintf(stderr, "At least 512x384 is needed. Does OpenGL work?\n"); fprintf(stderr, "At least 512x384 is needed. Does OpenGL work?\n");
@ -1048,9 +1052,9 @@ int main(int argc, char *argv[])
#endif #endif
#if !(ALIEN_DEMO|PREDATOR_DEMO|MARINE_DEMO) #if !(ALIEN_DEMO|PREDATOR_DEMO|MARINE_DEMO)
while(AvP_MainMenus()) while (AvP_MainMenus())
#else #else
SetBriefingTextToBlank(); if (AvP_MainMenus())
#endif #endif
{ {
int menusActive = 0; int menusActive = 0;
@ -1210,7 +1214,10 @@ while(AvP_MainMenus())
ClearMemoryPool(); ClearMemoryPool();
/* go back to menu mode */
#if !(ALIEN_DEMO|PREDATOR_DEMO|MARINE_DEMO)
SetSoftVideoMode(640, 480, 16); SetSoftVideoMode(640, 480, 16);
#endif
} }
SoundSys_StopAll(); SoundSys_StopAll();

View file

@ -449,7 +449,7 @@ void PlatStopSound(int activeIndex)
/* printf("PlatStopSound(%d)\n", activeIndex); */ /* printf("PlatStopSound(%d)\n", activeIndex); */
if (!SoundActivated) if (!SoundActivated)
return 0; return;
// if (ActiveSounds[activeIndex].paused) // if (ActiveSounds[activeIndex].paused)
// alSourcePause (ActiveSounds[activeIndex].ds3DBufferP); // alSourcePause (ActiveSounds[activeIndex].ds3DBufferP);
@ -656,7 +656,7 @@ void PlatUpdatePlayer()
ALfloat vel[3], or[6], pos[3]; ALfloat vel[3], or[6], pos[3];
if (!SoundActivated) if (!SoundActivated)
return 0; return;
if (Global_VDB_Ptr) { if (Global_VDB_Ptr) {
extern int NormalFrameTime; extern int NormalFrameTime;
@ -710,7 +710,7 @@ void PlatEndGameSound(SOUNDINDEX index)
int i; int i;
if (!SoundActivated) if (!SoundActivated)
return 0; return;
if((index<0)||(index>=SID_MAXIMUM)) return; /* no such sound */ if((index<0)||(index>=SID_MAXIMUM)) return; /* no such sound */
@ -780,7 +780,7 @@ void UpdateSoundFrequencies()
/* printf("FREQ UpdateSoundFreqncies()\n"); */ /* printf("FREQ UpdateSoundFreqncies()\n"); */
if (!SoundActivated) if (!SoundActivated)
return 0; return;
if (!SoundSwitchedOn) /* TODO: maybe I should have used this var.. */ if (!SoundSwitchedOn) /* TODO: maybe I should have used this var.. */
return; return;

View file

@ -2,7 +2,9 @@
extern void NewOnScreenMessage(unsigned char *messagePtr); extern void NewOnScreenMessage(unsigned char *messagePtr);
const char *AvPVersionString = "Aliens vs Predator - Linux \n Build 000 \n Based on Rebellion Developments AvP Gold source \n";
void GiveVersionDetails(void) void GiveVersionDetails(void)
{ {
NewOnScreenMessage("Aliens vs Predator - Linux\n Build 000 \n Based on Rebellion Developments AvP Gold source \n"); NewOnScreenMessage(AvPVersionString);
} }

View file

@ -1,3 +1,10 @@
#ifndef __VERSION_H__
#define __VERSION_H__
extern const char *AvPVersionString;
/* KJL 15:56:24 29/03/98 - this function supplies a text /* KJL 15:56:24 29/03/98 - this function supplies a text
description of the current build, and the build date. */ description of the current build, and the build date. */
extern void GiveVersionDetails(void); extern void GiveVersionDetails(void);
#endif

View file

@ -46,7 +46,7 @@ HANDLE CreateFile(const char *file, int mode, int x, int y, int flags, int flags
} }
fd = open(file, O_RDONLY); fd = open(file, O_RDONLY);
if (fd == -1) { if (fd == -1) {
perror("CreateFile"); /* perror("CreateFile"); */
return INVALID_HANDLE_VALUE; return INVALID_HANDLE_VALUE;
} }
break; break;
@ -75,37 +75,47 @@ HANDLE CreateFileA(const char *file, int write, int x, int y, int flags, int fla
return CreateFile(file, write, x, y, flags, flags2, z); return CreateFile(file, write, x, y, flags, flags2, z);
} }
int WriteFile(HANDLE file, const void *data, int len, /* unsigned long */ void *byteswritten, int x) int WriteFile(HANDLE file, const void *data, int len, void *byteswritten, int lpOverlapped)
{ {
unsigned long *bw; unsigned long *bw, i;
/* /*
fprintf(stderr, "WriteFile(%d, %p, %d, %p, %d)\n", file, data, len, byteswritten, x); fprintf(stderr, "WriteFile(%d, %p, %d, %p, %d)\n", file, data, len, byteswritten, lpOverlapped);
*/ */
bw = (unsigned long *)byteswritten; bw = (unsigned long *)byteswritten;
*bw = 0;
*bw = write(file, data, len); i = write(file, data, len);
if (i == -1) {
return 0; return 0;
} else {
*bw = i;
return 1;
}
} }
int ReadFile(HANDLE file, void *data, int len, /* unsigned long */ void *bytesread, int x) int ReadFile(HANDLE file, void *data, int len, void *bytesread, int lpOverlapped)
{ {
unsigned long *br; unsigned long *br, i;
/* /*
fprintf(stderr, "ReadFile(%d, %p, %d, %p, %d)\n", file, data, len, bytesread, x); fprintf(stderr, "ReadFile(%d, %p, %d, %p, %d)\n", file, data, len, bytesread, lpOverlapped);
*/ */
br = (unsigned long *)bytesread; br = (unsigned long *)bytesread;
*br = 0;
*br = read(file, data, len); i = read(file, data, len);
if (i == -1) {
return 1; /* TODO: what is the correct return value? */ return 0;
} else {
*br = i;
return 1;
}
} }
int GetFileSize(HANDLE file, int x) int GetFileSize(HANDLE file, int lpFileSizeHigh)
{ {
struct stat buf; struct stat buf;
/* /*
fprintf(stderr, "GetFileSize(%d, %d)\n", file, x); fprintf(stderr, "GetFileSize(%d, %d)\n", file, lpFileSizeHigh);
*/ */
if (fstat(file, &buf) == -1) if (fstat(file, &buf) == -1)
return -1; return -1;
@ -117,16 +127,23 @@ int CloseHandle(HANDLE file)
/* /*
fprintf(stderr, "CloseHandle(%d)\n", file); fprintf(stderr, "CloseHandle(%d)\n", file);
*/ */
close(file); if (close(file) == -1)
return 0;
else
return 1;
return 0; return 0;
} }
int DeleteFile(const char *file) int DeleteFile(const char *file)
{ {
/*
fprintf(stderr, "DeleteFile(%s)\n", file); fprintf(stderr, "DeleteFile(%s)\n", file);
*/
return -1; if (unlink(file) == -1)
return 0;
else
return 1;
} }
int DeleteFileA(const char *file) int DeleteFileA(const char *file)
@ -138,21 +155,25 @@ int GetDiskFreeSpace(int x, unsigned long *a, unsigned long *b, unsigned long *c
{ {
fprintf(stderr, "GetDiskFreeSpace(%d, %p, %p, %p, %p)\n", x, a, b, c, d); fprintf(stderr, "GetDiskFreeSpace(%d, %p, %p, %p, %p)\n", x, a, b, c, d);
return -1; return 0;
} }
int CreateDirectory(char *dir, int x) int CreateDirectory(char *dir, int lpSecurityAttributes)
{ {
fprintf(stderr, "CreateDirectory(%s, %d)\n", dir, x); /*
fprintf(stderr, "CreateDirectory(%s, %d)\n", dir, lpSecurityAttributes);
return -1; */
if (mkdir(dir, S_IRWXU) == -1)
return 0;
else
return 1;
} }
int MoveFile(const char *newfile, const char *oldfile) int MoveFile(const char *newfile, const char *oldfile)
{ {
fprintf(stderr, "MoveFile(%s, %s)\n", newfile, oldfile); fprintf(stderr, "MoveFile(%s, %s)\n", newfile, oldfile);
return -1; return 0;
} }
int MoveFileA(const char *newfile, const char *oldfile) int MoveFileA(const char *newfile, const char *oldfile)
@ -164,14 +185,14 @@ int CopyFile(const char *newfile, const char *oldfile, int x)
{ {
fprintf(stderr, "CopyFile(%s, %s, %d)\n", newfile, oldfile, x); fprintf(stderr, "CopyFile(%s, %s, %d)\n", newfile, oldfile, x);
return -1; return 0;
} }
int GetFileAttributes(const char *file) int GetFileAttributes(const char *file)
{ {
fprintf(stderr, "GetFileAttributes(%s)\n", file); fprintf(stderr, "GetFileAttributes(%s)\n", file);
return -1; return 0;
} }
int GetFileAttributesA(const char *file) int GetFileAttributesA(const char *file)
@ -183,21 +204,20 @@ int SetFilePointer(HANDLE file, int x, int y, int z)
{ {
fprintf(stderr, "SetFilePointer(%d, %d, %d, %d)\n", file, x, y, z); fprintf(stderr, "SetFilePointer(%d, %d, %d, %d)\n", file, x, y, z);
return -1; return 0;
} }
int SetEndOfFile(HANDLE file) int SetEndOfFile(HANDLE file)
{ {
fprintf(stderr, "SetEndOfFile(%d)\n", file); fprintf(stderr, "SetEndOfFile(%d)\n", file);
return -1; return 0;
} }
/* time in miliseconds */ /* time in miliseconds */
struct timeval tv0;
unsigned int timeGetTime() unsigned int timeGetTime()
{ {
static struct timeval tv0;
struct timeval tv1; struct timeval tv1;
int secs, usecs; int secs, usecs;