#include "Files.h" short Files::OpenFile(Str255 Name) { short volume; char filename[33]; short tFile; tFile=-1; Point ptOrigin = { 0, 0 }; volume = 0; sprintf (filename, "%s", Name); SetVol( nil, volume ); CtoPstr( filename ); FSOpen( (Pstr) filename, volume,&tFile ); PtoCstr( (Pstr) filename ); sFile=tFile; return( tFile ); } short Files::OpenNewFile( SFReply *psfReply, OSType osTypeCreator, OSType osTypeType ) { sFile = 0; OSErr osErr; SetVol( nil, psfReply->vRefNum ); osErr = Create( psfReply->fName, psfReply->vRefNum, osTypeCreator, osTypeType ); if ( osErr == dupFNErr ) { FSDelete( psfReply->fName, psfReply->vRefNum ); Create( psfReply->fName, psfReply->vRefNum, osTypeCreator, osTypeType ); } FSOpen( psfReply->fName, psfReply->vRefNum, &sFile ); return( sFile ); } short Files::PromptForSaveAS( short sPromptID, short sNameID, Str255 str255NamePrompt, OSType osTypeCreator, OSType osTypeType, SFReply *psfReply ) { Str255 str255Prompt; Str255 str255Name; sFile = 0; Point ptOrigin = { 0, 0 }; GetIndString( str255Prompt, FILE_STRINGS, sPromptID ); if ( !str255NamePrompt ) GetIndString( str255Name, FILE_STRINGS, sNameID ); else memcpy( str255Name, str255NamePrompt, *str255NamePrompt + 1 ); SFPutFile( ptOrigin, str255Prompt, str255Name, nil, psfReply ); if ( psfReply->good ) { sFile = OpenNewFile( psfReply, osTypeCreator, osTypeType ); } return( sFile ); } short Files::OpenSavedGame(Str255 Name) { Point ptOrigin = { 0, 0 }; sSavedGameVolume = 0; sprintf (szSavedGameName, "%s", Name); SetVol( nil, sSavedGameVolume ); CtoPstr( szSavedGameName ); FSOpen( (Pstr) szSavedGameName, sSavedGameVolume,&sFile ); PtoCstr( (Pstr) szSavedGameName ); return( sFile ); } short Files::OpenFileDialog() { Point ptOrigin = { 0, 0 }; sFile = 0; SFReply sfReply; SFTypeList sfTypeList = { 'DMAP', '\p', '\p', '\p' }; SFGetFile( ptOrigin, "\p", nil, 1, sfTypeList, nil, &sfReply ); if ( sfReply.good ) { PtoCstr( sfReply.fName ); strcpy( szSavedGameName, (Cstr) sfReply.fName ); } if ( sfReply.good ) { sSavedGameVolume = sfReply.vRefNum; SetVol( nil, sSavedGameVolume ); CtoPstr( szSavedGameName ); FSOpen( (Pstr) szSavedGameName, sSavedGameVolume,&sFile ); PtoCstr( (Pstr) szSavedGameName ); } return( sFile ); } void Files::StartSave() { int x,y; SFReply sfReply; sFile = 0; long lSize; long lLongSize = sizeof( long ); CtoPstr( szSavedGameName ); sFile = PromptForSaveAS( SAVE_GAME_STRING, 0, (Pstr)szSavedGameName,'DAVD', 'DMAP', &sfReply ); PtoCstr((Pstr) szSavedGameName ); if ( sFile ) { sSavedGameVolume = sfReply.vRefNum; PtoCstr( sfReply.fName ); strcpy( szSavedGameName, (Cstr)sfReply.fName ); } else { sfReply.vRefNum = sSavedGameVolume; strcpy( (Cstr) sfReply.fName, szSavedGameName ); CtoPstr( (Cstr)sfReply.fName ); sFile = OpenNewFile( &sfReply, 'GLF2', 'SKLT' ); } } void Files::EndSave() { int x,y; SFReply sfReply; long lSize; long lLongSize = sizeof( long ); if ( sFile ) FSClose( sFile ); } void Files::StartLoad() { Boolean bLoaded = false; long lSize; long lLongSize = sizeof( long ); int x,y,kl; sFile=OpenFileDialog(); } void Files::EndLoad() { if (sFile) FSClose( sFile ); }