home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / v / vol1n7.zip / FILES.C < prev    next >
Text File  |  1992-10-06  |  3KB  |  79 lines

  1. /* FILES.C - File I/O routines & dialog boxes window procedures
  2.  
  3. Copyright (c) 1992 Timur Tabi
  4. Copyright (c) 1992 Fasa Corporation
  5.  
  6. The following trademarks are the property of Fasa Corporation:
  7. BattleTech, CityTech, AeroTech, MechWarrior, BattleMech, and 'Mech.
  8. The use of these trademarks should not be construed as a challenge to these marks.
  9.  
  10. This new version of the code uses the WinFileDlg() API to handle the filename retrieval for the
  11. Load and Save features.
  12. */
  13.  
  14. #define INCL_WIN
  15. #include <os2.h>
  16. #include <string.h>
  17. #include "header.h"
  18. #include "hexes.h"
  19.  
  20. FILEDLG fdg;
  21. HFILE hfile;
  22. ULONG ulAction;
  23. ULONG ulBytesRead;
  24.  
  25. #define LOAD_ACTION (OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW )
  26. #define SAVE_ACTION (OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS)
  27.  
  28. #define READ_ATTRS OPEN_FLAGS_NO_CACHE|              /* No need to take up precious cache space */ \
  29.                    OPEN_FLAGS_SEQUENTIAL|            /* One-time read, remember?                */ \
  30.                    OPEN_SHARE_DENYWRITE|             /* We don't want anyone changing it        */ \
  31.                    OPEN_ACCESS_READONLY              // To prevent accidentally writing to it
  32.  
  33. #define WRITE_ATTRS OPEN_FLAGS_NO_CACHE|              /* No need to take up precious cache space */ \
  34.                     OPEN_FLAGS_SEQUENTIAL|            /* One-time write, remember?               */ \
  35.                     OPEN_SHARE_DENYREADWRITE|         /* We don't want anyone touching it        */ \
  36.                     OPEN_ACCESS_WRITEONLY             // That's how we're gonna do it
  37.  
  38. void LoadMap(HWND hwnd) {
  39.   fdg.cbSize=sizeof(FILEDLG);
  40.   fdg.fl=FDS_CENTER | FDS_PRELOAD_VOLINFO | FDS_OPEN_DIALOG;
  41.   fdg.pszTitle="Load Map";
  42.   fdg.pszOKButton="Load";
  43.   fdg.pfnDlgProc=NULL;
  44.   fdg.pszIType=NULL;
  45.   fdg.papszITypeList=NULL;
  46.   fdg.pszIDrive=NULL;
  47.   fdg.papszIDriveList=NULL;
  48.   strcpy(fdg.szFullFile,"*");
  49.   fdg.papszIDriveList=NULL;
  50.  
  51.   if (!WinFileDlg(HWND_DESKTOP,hwnd,&fdg)) return;
  52.   if (fdg.lReturn != DID_OK) return;
  53.  
  54.   if (DosOpen(fdg.szFullFile,&hfile,&ulAction,0,FILE_NORMAL,LOAD_ACTION,READ_ATTRS,NULL)) return;
  55.   DosRead(hfile,amap,sizeof(amap),&ulBytesRead);
  56.   DosClose(hfile);
  57. }
  58.  
  59. void SaveMap(HWND hwnd) {
  60.   fdg.cbSize=sizeof(FILEDLG);
  61.   fdg.fl=FDS_CENTER | FDS_PRELOAD_VOLINFO | FDS_SAVEAS_DIALOG;
  62.   fdg.pszTitle="Save Map";
  63.   fdg.pszOKButton="Save";
  64.   fdg.pfnDlgProc=NULL;
  65.   fdg.pszIType=NULL;
  66.   fdg.papszITypeList=NULL;
  67.   fdg.pszIDrive=NULL;
  68.   fdg.papszIDriveList=NULL;
  69.   strcpy(fdg.szFullFile,"*");
  70.   fdg.papszIDriveList=NULL;
  71.  
  72.   if (!WinFileDlg(HWND_DESKTOP,hwnd,&fdg)) return;
  73.   if (fdg.lReturn != DID_OK) return;
  74.  
  75.   if (DosOpen(fdg.szFullFile,&hfile,&ulAction,sizeof(amap),FILE_NORMAL,SAVE_ACTION,WRITE_ATTRS,NULL)) return;
  76.   DosWrite(hfile,amap,sizeof(amap),&ulBytesRead);
  77.   DosClose(hfile);
  78. }
  79.