home *** CD-ROM | disk | FTP | other *** search
/ Learn 3D Graphics Programming on the PC / Learn_3D_Graphics_Programming_on_the_PC_Ferraro.iso / rwwin / rwsetup.ms_ / rwsetup.bin
Text File  |  1995-11-14  |  39KB  |  904 lines

  1. '**************************************************************************
  2. '*                       RenderWare Installation 
  3. '**************************************************************************
  4. '$DEFINE DEBUG  ''Define for script development/debugging
  5.  
  6. '$INCLUDE 'setupapi.inc'
  7. '$INCLUDE 'msdetect.inc'
  8.  
  9. ''Dialog ID's
  10. CONST WELCOME       = 100
  11. CONST ASKQUIT      = 200
  12. CONST DESTPATH     = 300
  13. CONST EXITFAILURE  = 400
  14. CONST EXITQUIT     = 600
  15. CONST EXITSUCCESS  = 700
  16. CONST OPTIONS      = 800
  17. CONST APPHELP      = 900
  18. CONST COMPCHECK     = 1000
  19. CONST DEMOCHECK    = 1100
  20. CONST CUSTINST     = 6200
  21. CONST TOOBIG       = 6300
  22. CONST BADPATH      = 6400
  23. CONST COMPHELP      = 1200
  24. CONST DEMOHELP     = 1300
  25. CONST PATHCHECK    = 1600
  26. CONST BILL1        = 1700
  27. CONST BILL2        = 1710
  28. CONST BILL3        = 1720
  29. CONST BILL4        = 1730
  30. CONST BILL5        = 1740
  31. CONST BILL6        = 1750
  32. CONST BILL7        = 1760
  33. CONST BILL8        = 1770
  34. CONST BILL9        = 1780
  35.  
  36. ''Bitmap ID
  37. CONST LOGO         = 1
  38.  
  39. ''Demo Types
  40. CONST CYBERDEMO    = 1
  41. CONST KNIGHTDEMO   = 2
  42. CONST MAZEDEMO     = 3
  43. CONST ROLLERDEMO   = 4
  44. CONST VIEWDEMO     = 5
  45. CONST SHOPDEMO     = 6
  46. CONST VISDEMO      = 7
  47. CONST PAINTDEMO    = 8
  48. CONST WALKDEMO     = 9
  49. CONST SIMDEMO      = 10
  50.  
  51. ''Compiler Types
  52. CONST WATDLLCOMP   = 1
  53. CONST WATCOMCOMP   = 2
  54. CONST MSVC15COMP   = 3
  55. CONST BORC40COMP   = 4
  56. CONST MSVC20COMP   = 5
  57. CONST VISBASCOMP   = 6
  58.  
  59. ''File Types
  60. CONST COMPFILES    = 1
  61. CONST DEMO31FILES  = 2
  62. CONST DEMO32FILES  = 3
  63. CONST SAMPLEFILES  = 4
  64. CONST SCRIPTFILES  = 5
  65. CONST DOCFILES     = 6
  66. CONST ROOTFILES    = 7
  67.  
  68. GLOBAL DEST$        ''Default destination directory.
  69. GLOBAL DESTDRIVE$        ''Default destination directory.
  70. GLOBAL WINDRIVE$    ''Windows drive letter.
  71. GLOBAL WINDIR$
  72. GLOBAL DRIVENEEDED&
  73. GLOBAL DRIVEFREE&
  74.  
  75. ''CustInst list symbol names
  76.  
  77. GLOBAL ROOTNEEDS$    ''Option list costs per drive
  78. GLOBAL COMPNEEDS$    ''Option list costs per drive
  79. GLOBAL DEMO31NEEDS$
  80. GLOBAL DEMO32NEEDS$
  81. GLOBAL SAMPLENEEDS$
  82. GLOBAL SCRIPTNEEDS$
  83. GLOBAL DOCNEEDS$
  84.  
  85. ''Dialog list symbol names
  86. GLOBAL COMPSTATES$
  87. GLOBAL DEMO31STATES$
  88. GLOBAL DEMO32STATES$
  89. GLOBAL CHECKSTATES$
  90. GLOBAL STATUSTEXT$
  91. GLOBAL DRIVETEXT$
  92.  
  93. DECLARE SUB AddOptFilesToCopyList (ftype%)
  94. DECLARE SUB RecalcOptFiles (ftype%)
  95. DECLARE SUB RecalcPath
  96. DECLARE SUB SetDriveStatus
  97. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  98.  
  99. ''following were taken from windows.h. &H means they're hex
  100. CONST WS_VISIBLE=&H10000000
  101. CONST WS_BORDER =&H00800000
  102. CONST WS_CLIPCHILDREN =&H02000000
  103. CONST GWL_STYLE =-16
  104. CONST SW_SHOWMAXIMIZED=3
  105. DECLARE FUNCTION ShowWindow  LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  106. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG     ''this declaration must all be on one line
  107.  
  108.  
  109. INIT:
  110.  
  111.     hWnd%=HwndFrame()
  112.     i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  113.     j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  114.  
  115.     CUIDLL$ = "mscuistf.dll"            ''custom user interface dll
  116.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  117.  
  118.     SetBitmap CUIDLL$, LOGO
  119.     SetTitle "RenderWare Installation"
  120.  
  121.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  122.     IF szInf$ = "" THEN
  123.         szInf$ = GetSymbolValue("STF_CWDDIR") + "RWSETUP.INF"
  124.     END IF
  125.     ReadInfFile szInf$
  126.  
  127.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  128.     DEST$ = WINDRIVE$ + ":\RWWIN"
  129.     DESTDRIVE$ = MID$(DEST$, 1, 1)
  130.     WINDIR$ = GetWindowsDir
  131.  
  132.     ''CustInst list symbols
  133.     DEMO31STATES$ = "Demo31CheckItemsIn"
  134.     DEMO32STATES$ = "Demo32CheckItemsIn"
  135.     COMPSTATES$ = "CompCheckItemsIn"
  136.     CHECKSTATES$ = "CheckItemsState"
  137.     STATUSTEXT$  = "StatusItemsText"
  138.     DRIVETEXT$   = "DriveStatusText"
  139.  
  140.     FOR i% = WATDLLCOMP TO VISBASCOMP STEP 1
  141.         AddListItem COMPSTATES$, "ON"
  142.     NEXT i%
  143.     FOR i% = CYBERDEMO TO SIMDEMO STEP 1
  144.         AddListItem DEMO31STATES$, "ON"
  145.         AddListItem DEMO32STATES$, "ON"
  146.     NEXT i%
  147.     FOR i% = COMPFILES TO ROOTFILES STEP 1
  148.         AddListItem STATUSTEXT$, ""
  149.         AddListItem CHECKSTATES$, "ON"
  150.     NEXT i%
  151.     FOR i% = 1 TO 7 STEP 1
  152.         AddListItem DRIVETEXT$, ""
  153.     NEXT i%
  154.     ReplaceListItem DRIVETEXT$, 7, DEST$
  155.  
  156.     ''Disk cost list symbols
  157.     ROOTNEEDS$   = "RootNeeds"
  158.     COMPNEEDS$   = "CompNeeds"
  159.     DEMO31NEEDS$  = "Demo31Needs"
  160.     DEMO32NEEDS$  = "Demo32Needs"
  161.     SAMPLENEEDS$  = "SampleNeeds"
  162.     SCRIPTNEEDS$  = "ScriptNeeds"
  163.     DOCNEEDS$  = "DocNeeds"
  164.  
  165.     RecalcPath
  166.     SetDriveStatus
  167.  
  168. '$IFDEF DEBUG
  169.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  170. '$ENDIF ''DEBUG
  171.  
  172. '' Set up billboard list
  173. ''  ClearBillboardList
  174. ''  AddToBillboardList CUIDLL$, BILL1, "FModelessDlgProc", 10
  175. ''  AddToBillboardList CUIDLL$, BILL2, "FModelessDlgProc", 10
  176. ''  AddToBillboardList CUIDLL$, BILL3, "FModelessDlgProc", 10
  177. ''  AddToBillboardList CUIDLL$, BILL4, "FModelessDlgProc", 10
  178. ''  AddToBillboardList CUIDLL$, BILL5, "FModelessDlgProc", 10
  179. ''  AddToBillboardList CUIDLL$, BILL6, "FModelessDlgProc", 10
  180. ''  AddToBillboardList CUIDLL$, BILL7, "FModelessDlgProc", 10
  181. ''  AddToBillboardList CUIDLL$, BILL8, "FModelessDlgProc", 10
  182. ''  AddToBillboardList CUIDLL$, BILL9, "FModelessDlgProc", 10
  183.  
  184. ''  SetCopyGaugePosition 10, 180
  185.  
  186.  
  187. WELCOME:
  188.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  189.     IF sz$ = "CONTINUE" THEN
  190.         UIPop 1
  191.     ELSE
  192.         GOSUB ASKQUIT
  193.         GOTO WELCOME
  194.     END IF
  195.  
  196. CUSTINST:
  197.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
  198.  
  199.     IF sz$ = "CONTINUE" THEN
  200.         ''Install only if it will fit.
  201.         IF DRIVENEEDED& > DRIVEFREE& THEN
  202.            GOSUB TOOBIG
  203.            GOTO CUSTINST
  204.         END IF
  205.         UIPop 1
  206.         GOTO INSTALL
  207.     ELSEIF sz$ = "PATH" THEN
  208.         GOTO GETPATH
  209.     ELSEIF sz$ = "CHK1" THEN
  210.         RecalcOptFiles COMPFILES
  211.         SetDriveStatus
  212.         GOTO CUSTINST
  213.     ELSEIF sz$ = "CHK2" THEN
  214.         RecalcOptFiles DEMO31FILES
  215.         SetDriveStatus
  216.         GOTO CUSTINST
  217.     ELSEIF sz$ = "CHK3" THEN
  218.         RecalcOptFiles DEMO32FILES
  219.         SetDriveStatus
  220.         GOTO CUSTINST
  221.     ELSEIF sz$ = "CHK4" THEN
  222.         RecalcOptFiles SAMPLEFILES
  223.         SetDriveStatus
  224.         GOTO CUSTINST
  225.     ELSEIF sz$ = "CHK5" THEN
  226.         RecalcOptFiles SCRIPTFILES
  227.         SetDriveStatus
  228.         GOTO CUSTINST
  229.     ELSEIF sz$ = "CHK6" THEN
  230.         RecalcOptFiles DOCFILES
  231.         SetDriveStatus
  232.         GOTO CUSTINST
  233.     ELSEIF sz$ = "BTN1" THEN
  234.         GOSUB COMPINST
  235.         RecalcOptFiles COMPFILES
  236.         SetDriveStatus
  237.         GOTO CUSTINST
  238.     ELSEIF sz$ = "BTN2" THEN
  239.         GOSUB DEMO31INST
  240.         RecalcOptFiles DEMO31FILES
  241.         SetDriveStatus
  242.         GOTO CUSTINST
  243.     ELSEIF sz$ = "BTN3" THEN
  244.         GOSUB DEMO32INST
  245.         RecalcOptFiles DEMO32FILES
  246.         SetDriveStatus
  247.         GOTO CUSTINST
  248.     ELSEIF sz$ = "REACTIVATE" THEN
  249.         RecalcPath
  250.         SetDriveStatus
  251.         GOTO CUSTINST
  252.     ELSE
  253.         GOSUB ASKQUIT
  254.         GOTO CUSTINST
  255.     END IF
  256.  
  257.  
  258. COMPINST:
  259.     sz$ = UIStartDlg(CUIDLL$, COMPCHECK, "FCompCheckDlgProc", COMPHELP, HELPPROC$)
  260.  
  261.     IF sz$ = "CONTINUE" THEN
  262.         UIPop 1
  263.         RETURN
  264.     ELSEIF sz$ = "BACK" THEN
  265.         UIPop 1
  266.         RETURN
  267.     ELSEIF sz$ = "REACTIVATE" THEN
  268.         GOTO COMPINST
  269.     ELSE
  270.         GOSUB ASKQUIT
  271.         GOTO COMPINST
  272.     END IF
  273.  
  274.  
  275. DEMO31INST:
  276.     sz$ = UIStartDlg(CUIDLL$, DEMOCHECK, "FDemo31CheckDlgProc", DEMOHELP, HELPPROC$)
  277.  
  278.     IF sz$ = "CONTINUE" THEN
  279.         UIPop 1
  280.         RETURN
  281.     ELSEIF sz$ = "BACK" THEN
  282.         UIPop 1
  283.         RETURN
  284.     ELSEIF sz$ = "REACTIVATE" THEN
  285.         GOTO DEMO31INST
  286.     ELSE
  287.         GOSUB ASKQUIT
  288.         GOTO DEMO31INST
  289.     END IF
  290.  
  291. DEMO32INST:
  292.     sz$ = UIStartDlg(CUIDLL$, DEMOCHECK, "FDemo32CheckDlgProc", DEMOHELP, HELPPROC$)
  293.  
  294.     IF sz$ = "CONTINUE" THEN
  295.         UIPop 1
  296.         RETURN
  297.     ELSEIF sz$ = "BACK" THEN
  298.         UIPop 1
  299.         RETURN
  300.     ELSEIF sz$ = "REACTIVATE" THEN
  301.         GOTO DEMO32INST
  302.     ELSE
  303.         GOSUB ASKQUIT
  304.         GOTO DEMO32INST
  305.     END IF
  306.  
  307.  
  308. INSTALL:
  309.     IF DoesDirExist(DEST$) = 1 THEN
  310.       sz$ = UIStartDlg(CUIDLL$, PATHCHECK, "FInfoDlgProc", 0, "")
  311.       UIPop 1
  312.       if sz$ <> "CONTINUE" THEN
  313.         GOTO CUSTINST
  314.       END IF
  315.     END IF
  316.  
  317.     ClearCopyList
  318.     AddOptFilesToCopyList ROOTFILES
  319.     AddOptFilesToCopyList COMPFILES
  320.     AddOptFilesToCopyList DEMO31FILES
  321.     AddOptFilesToCopyList DEMO32FILES
  322.     AddOptFilesToCopyList SAMPLEFILES
  323.     AddOptFilesToCopyList SCRIPTFILES
  324.     AddOptFilesToCopyList DOCFILES
  325.  
  326.     CreateDir DEST$, cmoNone
  327.     CopyFilesInCopyList
  328.  
  329.     IF GetListItem(CHECKSTATES$, DEMO31FILES) = "ON" THEN
  330.         CreateProgmanGroup "RenderWare Demo", "", cmoNone
  331.         ShowProgmanGroup  "RenderWare Demo", 1, cmoNone
  332.         CreateProgmanItem "RenderWare Demo", "RfView", DEST$ + "\demo\win3.1x\rfview.exe", "", cmoOverwrite
  333.         CreateProgmanItem "RenderWare Demo", "RfView Readme", DEST$ + "\demo\win3.1x\rfview.txt", "", cmoOverwrite
  334.         IF GetListItem(DEMO31STATES$, CYBERDEMO) = "ON" THEN
  335.           CreateProgmanItem "RenderWare Demo", "Cyberstreet", DEST$ + "\demo\win3.1x\rwcyber.exe", "", cmoOverwrite
  336.           CreateProgmanItem "RenderWare Demo", "Cyberstreet Readme", DEST$ + "\demo\win3.1x\rwcyber.txt", "", cmoOverwrite
  337.         END IF
  338.         IF GetListItem(DEMO31STATES$, KNIGHTDEMO) = "ON" THEN
  339.           CreateProgmanItem "RenderWare Demo", "Knight", DEST$ + "\demo\win3.1x\rwknight.exe", "", cmoOverwrite
  340.           CreateProgmanItem "RenderWare Demo", "Knight Readme", DEST$ + "\demo\win3.1x\rwknight.txt", "", cmoOverwrite
  341.         END IF
  342.         IF GetListItem(DEMO31STATES$, MAZEDEMO) = "ON" THEN
  343.           CreateProgmanItem "RenderWare Demo", "Maze", DEST$ + "\demo\win3.1x\rwmaze.exe", "", cmoOverwrite
  344.           CreateProgmanItem "RenderWare Demo", "Maze Readme", DEST$ + "\demo\win3.1x\rwmaze.txt", "", cmoOverwrite
  345.         END IF
  346.         IF GetListItem(DEMO31STATES$, ROLLERDEMO) = "ON" THEN
  347.           CreateProgmanItem "RenderWare Demo", "Rollercoaster", DEST$ + "\demo\win3.1x\rwroller.exe", "", cmoOverwrite
  348.           CreateProgmanItem "RenderWare Demo", "Rollercoaster Readme", DEST$ + "\demo\win3.1x\rwroller.txt", "", cmoOverwrite
  349.         END IF
  350.         IF GetListItem(DEMO31STATES$, VIEWDEMO) = "ON" THEN
  351.           CreateProgmanItem "RenderWare Demo", "Viewer", DEST$ + "\demo\win3.1x\rwview.exe", "", cmoOverwrite
  352.           CreateProgmanItem "RenderWare Demo", "Viewer Help", DEST$ + "\demo\win3.1x\rwview.hlp", "", cmoOverwrite
  353.         END IF
  354.         IF GetListItem(DEMO31STATES$, SHOPDEMO) = "ON" THEN
  355.           CreateProgmanItem "RenderWare Demo", "TeleShopping", DEST$ + "\demo\win3.1x\rwshop.exe", "", cmoOverwrite
  356.           CreateProgmanItem "RenderWare Demo", "TeleShopping Readme", DEST$ + "\demo\win3.1x\rwshop.txt", "", cmoOverwrite
  357.         END IF
  358.         IF GetListItem(DEMO31STATES$, VISDEMO) = "ON" THEN
  359.           CreateProgmanItem "RenderWare Demo", "Visualisation", DEST$ + "\demo\win3.1x\rwvis.exe", "", cmoOverwrite
  360.           CreateProgmanItem "RenderWare Demo", "Visualisation Readme", DEST$ + "\demo\win3.1x\rwvis.txt", "", cmoOverwrite
  361.         END IF
  362.         IF GetListItem(DEMO31STATES$, PAINTDEMO) = "ON" THEN
  363.           CreateProgmanItem "RenderWare Demo", "Object Painter", DEST$ + "\demo\win3.1x\rwpaint.exe", "", cmoOverwrite
  364.           CreateProgmanItem "RenderWare Demo", "Object Painter Readme", DEST$ + "\demo\win3.1x\rwpaint.txt", "", cmoOverwrite
  365.         END IF
  366.         IF GetListItem(DEMO31STATES$, WALKDEMO) = "ON" THEN
  367.           CreateProgmanItem "RenderWare Demo", "Walkthrough", DEST$ + "\demo\win3.1x\rwwalk.exe", "", cmoOverwrite
  368.           CreateProgmanItem "RenderWare Demo", "Walkthrough Readme", DEST$ + "\demo\win3.1x\rwwalk.txt", "", cmoOverwrite
  369.         END IF
  370.         IF GetListItem(DEMO31STATES$, SIMDEMO) = "ON" THEN
  371.           CreateProgmanItem "RenderWare Demo", "N-Body Simulation", DEST$ + "\demo\win3.1x\rwsim.exe", "", cmoOverwrite
  372.           CreateProgmanItem "RenderWare Demo", "N-Body Simulation Readme", DEST$ + "\demo\win3.1x\rwsim.txt", "", cmoOverwrite
  373.         END IF
  374.     END IF
  375.     IF GetListItem(CHECKSTATES$, DEMO32FILES) = "ON" THEN
  376.         CreateProgmanGroup "RenderWare Win32 Demo", "", cmoNone
  377.         ShowProgmanGroup  "RenderWare Win32 Demo", 1, cmoNone
  378.         CreateProgmanItem "RenderWare Win32 Demo", "RfView", DEST$ + "\demo\win32\rfview.exe", "", cmoOverwrite
  379.         CreateProgmanItem "RenderWare Win32 Demo", "RfView Readme", DEST$ + "\demo\win32\rfview.txt", "", cmoOverwrite
  380.         IF GetListItem(DEMO32STATES$, CYBERDEMO) = "ON" THEN
  381.           CreateProgmanItem "RenderWare Win32 Demo", "Cyberstreet", DEST$ + "\demo\win32\rwcyber.exe", "", cmoOverwrite
  382.           CreateProgmanItem "RenderWare Win32 Demo", "Cyberstreet Readme", DEST$ + "\demo\win32\rwcyber.txt", "", cmoOverwrite
  383.         END IF
  384.         IF GetListItem(DEMO32STATES$, KNIGHTDEMO) = "ON" THEN
  385.           CreateProgmanItem "RenderWare Win32 Demo", "Knight", DEST$ + "\demo\win32\rwknight.exe", "", cmoOverwrite
  386.           CreateProgmanItem "RenderWare Win32 Demo", "Knight Readme", DEST$ + "\demo\win32\rwknight.txt", "", cmoOverwrite
  387.         END IF
  388.         IF GetListItem(DEMO32STATES$, MAZEDEMO) = "ON" THEN
  389.           CreateProgmanItem "RenderWare Win32 Demo", "Maze", DEST$ + "\demo\win32\rwmaze.exe", "", cmoOverwrite
  390.           CreateProgmanItem "RenderWare Win32 Demo", "Maze Readme", DEST$ + "\demo\win32\rwmaze.txt", "", cmoOverwrite
  391.         END IF
  392.         IF GetListItem(DEMO32STATES$, ROLLERDEMO) = "ON" THEN
  393.           CreateProgmanItem "RenderWare Win32 Demo", "Rollercoaster", DEST$ + "\demo\win32\rwroller.exe", "", cmoOverwrite
  394.           CreateProgmanItem "RenderWare Win32 Demo", "Rollercoaster Readme", DEST$ + "\demo\win32\rwroller.txt", "", cmoOverwrite
  395.         END IF
  396.         IF GetListItem(DEMO32STATES$, VIEWDEMO) = "ON" THEN
  397.           CreateProgmanItem "RenderWare Win32 Demo", "Viewer", DEST$ + "\demo\win32\rwview.exe", "", cmoOverwrite
  398.           CreateProgmanItem "RenderWare Win32 Demo", "Viewer Help", DEST$ + "\demo\win32\rwview.hlp", "", cmoOverwrite
  399.         END IF
  400.         IF GetListItem(DEMO32STATES$, SHOPDEMO) = "ON" THEN
  401.           CreateProgmanItem "RenderWare Win32 Demo", "TeleShopping", DEST$ + "\demo\win32\rwshop.exe", "", cmoOverwrite
  402.           CreateProgmanItem "RenderWare Win32 Demo", "TeleShopping Readme", DEST$ + "\demo\win32\rwshop.txt", "", cmoOverwrite
  403.         END IF
  404.         IF GetListItem(DEMO32STATES$, VISDEMO) = "ON" THEN
  405.           CreateProgmanItem "RenderWare Win32 Demo", "Visualisation", DEST$ + "\demo\win32\rwvis.exe", "", cmoOverwrite
  406.           CreateProgmanItem "RenderWare Win32 Demo", "Visualisation Readme", DEST$ + "\demo\win32\rwvis.txt", "", cmoOverwrite
  407.         END IF
  408.         IF GetListItem(DEMO32STATES$, PAINTDEMO) = "ON" THEN
  409.           CreateProgmanItem "RenderWare Win32 Demo", "Object Painter", DEST$ + "\demo\win32\rwpaint.exe", "", cmoOverwrite
  410.           CreateProgmanItem "RenderWare Win32 Demo", "Object Painter Readme", DEST$ + "\demo\win32\rwpaint.txt", "", cmoOverwrite
  411.         END IF
  412.         IF GetListItem(DEMO32STATES$, WALKDEMO) = "ON" THEN
  413.           CreateProgmanItem "RenderWare Win32 Demo", "Walkthrough", DEST$ + "\demo\win32\rwwalk.exe", "", cmoOverwrite
  414.           CreateProgmanItem "RenderWare Win32 Demo", "Walkthrough Readme", DEST$ + "\demo\win32\rwwalk.txt", "", cmoOverwrite
  415.         END IF
  416.         IF GetListItem(DEMO32STATES$, SIMDEMO) = "ON" THEN
  417.           CreateProgmanItem "RenderWare Win32 Demo", "N-Body Simulation", DEST$ + "\demo\win32\rwsim.exe", "", cmoOverwrite
  418.           CreateProgmanItem "RenderWare Win32 Demo", "N-Body Simulation Readme", DEST$ + "\demo\win32\rwsim.txt", "", cmoOverwrite
  419.         END IF
  420.     END IF
  421.  
  422.  
  423. QUIT:
  424.     ON ERROR GOTO ERRQUIT
  425.  
  426.     IF ERR = 0 THEN
  427.         dlg% = EXITSUCCESS
  428.     ELSEIF ERR = STFQUIT THEN
  429.         dlg% = EXITQUIT
  430.     ELSE
  431.         dlg% = EXITFAILURE
  432.     END IF
  433. QUITL1:
  434.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  435.     IF sz$ = "REACTIVATE" THEN
  436.         GOTO QUITL1
  437.     END IF
  438.     UIPop 1
  439.  
  440.     END
  441.  
  442. ERRQUIT:
  443.     i% = DoMsgBox("Setup sources were corrupted, call +44 (483) 448822", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  444.     END
  445.  
  446.  
  447. GETPATH:
  448.     SetSymbolValue "EditTextIn", DEST$
  449.     SetSymbolValue "EditFocus", "END"
  450. GETPATHL1:
  451.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  452.  
  453.     IF sz$ = "CONTINUE" THEN
  454.         olddest$ = DEST$
  455.         DEST$ = GetSymbolValue("EditTextOut")
  456.  
  457.         ''Validate new path.
  458.         IF IsDirWritable(DEST$) = 0 THEN
  459.             GOSUB BADPATH
  460.             GOTO GETPATHL1
  461.         END IF
  462.         UIPop 1
  463.  
  464.         ''Truncate display if too long.
  465.         IF LEN(DEST$) > 23 THEN
  466.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  467.         ELSE
  468.             ReplaceListItem DRIVETEXT$, 7, DEST$
  469.         END IF
  470.  
  471.         ''Recalc if path changed.
  472.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  473.             RecalcPath
  474.             SetDriveStatus
  475.         END IF
  476.  
  477.         olddest$ = ""
  478.         GOTO CUSTINST
  479.     ELSEIF sz$ = "REACTIVATE" THEN
  480.         RecalcPath
  481.         SetDriveStatus
  482.         GOTO GETPATHL1
  483.     ELSEIF sz$ = "EXIT" THEN
  484.         GOSUB ASKQUIT
  485.         GOTO GETPATHL1
  486.     ELSE
  487.         UIPop 1
  488.         GOTO CUSTINST
  489.     END IF
  490.  
  491. TOOBIG:
  492.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  493.     IF sz$ = "REACTIVATE" THEN
  494.         RecalcPath
  495.         SetDriveStatus
  496.         GOTO TOOBIG
  497.     END IF
  498.     UIPop 1
  499.     RETURN
  500.  
  501.  
  502. BADPATH:
  503.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  504.     IF sz$ = "REACTIVATE" THEN
  505.         RecalcPath
  506.         SetDriveStatus
  507.         GOTO BADPATH
  508.     END IF
  509.     UIPop 1
  510.     RETURN
  511.  
  512. ASKQUIT:
  513.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  514.  
  515.     IF sz$ = "EXIT" THEN
  516.         UIPopAll
  517.         ERROR STFQUIT
  518.     ELSEIF sz$ = "REACTIVATE" THEN
  519.         GOTO ASKQUIT
  520.     ELSE
  521.         UIPop 1
  522.     END IF
  523.     RETURN
  524.  
  525.  
  526.  
  527. '**
  528. '** Purpose:
  529. '**     Adds the specified option files to the copy list.
  530. '** Arguments:
  531. '**     ftype%  - type of files to add, one of the following:
  532. '**             COMPFILES, DEMOFILES, SAMPLEFILES, SCRIPTFILES
  533. '** Returns:
  534. '**     none.
  535. '*************************************************************************
  536. SUB AddOptFilesToCopyList (ftype%) STATIC
  537.  
  538.   SrcDir$ = GetSymbolValue("STF_SRCDIR")
  539.   IF ftype% = ROOTFILES THEN
  540.     AddSectionFilesToCopyList "RootFiles", SrcDir$, DEST$
  541.     AddSectionFilesToCopyList "ConvertFiles", SrcDir$, DEST$ + "\convert"
  542.   ELSEIF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  543.     IF ftype% = COMPFILES THEN
  544.       IF GetListItem(COMPSTATES$, WATDLLCOMP) = "ON" THEN
  545.         AddSectionFilesToCopyList "WATDLLFiles", SrcDir$, DEST$ + "\lib"
  546.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, WINDIR$ + "system"
  547.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, DEST$ + "\lib"
  548.         AddSectionFilesToCopyList "DDLLFiles", SrcDir$, DEST$ + "\lib"
  549.         AddSectionFilesToCopyList "IncludeFiles", SrcDir$, DEST$ + "\include"
  550.       END IF
  551.       IF GetListItem(COMPSTATES$, WATCOMCOMP) = "ON" THEN
  552.         AddSectionFilesToCopyList "WATLibFiles", SrcDir$, DEST$ + "\lib"
  553.         AddSectionFilesToCopyList "IncludeFiles", SrcDir$, DEST$ + "\include"
  554.       END IF
  555.       IF GetListItem(COMPSTATES$, MSVC15COMP) = "ON" THEN
  556.         AddSectionFilesToCopyList "MSVC15LibFiles", SrcDir$, DEST$ + "\lib"
  557.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, WINDIR$ + "system"
  558.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, DEST$ + "\lib"
  559.         AddSectionFilesToCopyList "DDLLFiles", SrcDir$, DEST$ + "\lib"
  560.         AddSectionFilesToCopyList "IncludeFiles", SrcDir$, DEST$ + "\include"
  561.       END IF
  562.       IF GetListItem(COMPSTATES$, BORC40COMP) = "ON" THEN
  563.         AddSectionFilesToCopyList "BORC40LibFiles", SrcDir$, DEST$ + "\lib"
  564.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, WINDIR$ + "system"
  565.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, DEST$ + "\lib"
  566.         AddSectionFilesToCopyList "DDLLFiles", SrcDir$, DEST$ + "\lib"
  567.         AddSectionFilesToCopyList "IncludeFiles", SrcDir$, DEST$ + "\include"
  568.       END IF
  569.       IF GetListItem(COMPSTATES$, MSVC20COMP) = "ON" THEN
  570.         AddSectionFilesToCopyList "MSVC20LibFiles", SrcDir$, DEST$ + "\lib"
  571.         AddSectionFilesToCopyList "IncludeFiles", SrcDir$, DEST$ + "\include"
  572.       END IF
  573.       IF GetListItem(COMPSTATES$, VISBASCOMP) = "ON" THEN
  574.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, WINDIR$ + "system"
  575.         AddSectionFilesToCopyList "PDLLFiles", SrcDir$, DEST$ + "\lib"
  576.         AddSectionFilesToCopyList "DDLLFiles", SrcDir$, DEST$ + "\lib"
  577.         AddSectionFilesToCopyList "VBIncludeFiles", SrcDir$, DEST$ + "\vb\include"
  578.         AddSectionFilesToCopyList "VBSrcFiles", SrcDir$, DEST$ + "\vb\demo\src\rwvbview"
  579.         AddSectionFilesToCopyList "VBDemoFiles", SrcDir$, DEST$ + "\vb\demo\rwvbview"
  580.         AddSectionFilesToCopyList "VBFiles", SrcDir$, DEST$ + "\vb"
  581.       END IF
  582.     ELSEIF ftype% = DEMO31FILES THEN
  583.       AddSectionFilesToCopyList "DemoFiles", SrcDir$, DEST$ + "\demo"
  584.       AddSectionFilesToCopyList "Demo31Files", SrcDir$, DEST$ + "\demo\win3.1x"
  585.       IF GetListItem(DEMO31STATES$, CYBERDEMO) = "ON" THEN
  586.         AddSectionFilesToCopyList "Demo31CyberFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  587.         AddSectionFilesToCopyList "DemoCyberScripts", SrcDir$, DEST$ + "\demo\win3.1x\scripts"
  588.         AddSectionFilesToCopyList "DemoCyberTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  589.       END IF
  590.       IF GetListItem(DEMO31STATES$, KNIGHTDEMO) = "ON" THEN
  591.         AddSectionFilesToCopyList "Demo31KnightFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  592.         AddSectionFilesToCopyList "DemoKnightScripts", SrcDir$, DEST$ + "\demo\win3.1x\scripts"
  593.         AddSectionFilesToCopyList "DemoKnightTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  594.       END IF
  595.       IF GetListItem(DEMO31STATES$, MAZEDEMO) = "ON" THEN
  596.         AddSectionFilesToCopyList "Demo31MazeFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  597.         AddSectionFilesToCopyList "DemoMazeScripts", SrcDir$, DEST$ + "\demo\win3.1x\scripts"
  598.         AddSectionFilesToCopyList "DemoMazeTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  599.       END IF
  600.       IF GetListItem(DEMO31STATES$, ROLLERDEMO) = "ON" THEN
  601.         AddSectionFilesToCopyList "Demo31RollerFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  602.         AddSectionFilesToCopyList "DemoRollerScripts", SrcDir$, DEST$ + "\demo\win3.1x\scripts"
  603.         AddSectionFilesToCopyList "DemoRollerTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  604.       END IF
  605.       IF GetListItem(DEMO31STATES$, VIEWDEMO) = "ON" THEN
  606.         AddSectionFilesToCopyList "Demo31ViewFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  607.       END IF
  608.       IF GetListItem(DEMO31STATES$, SHOPDEMO) = "ON" THEN
  609.         AddSectionFilesToCopyList "Demo31ShopFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  610.         AddSectionFilesToCopyList "DemoShopScripts", SrcDir$, DEST$ + "\demo\win3.1x\scripts"
  611.         AddSectionFilesToCopyList "DemoShopTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  612.       END IF
  613.       IF GetListItem(DEMO31STATES$, VISDEMO) = "ON" THEN
  614.         AddSectionFilesToCopyList "Demo31VisFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  615.         AddSectionFilesToCopyList "DemoVisTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  616.       END IF
  617.       IF GetListItem(DEMO31STATES$, PAINTDEMO) = "ON" THEN
  618.         AddSectionFilesToCopyList "Demo31PaintFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  619.       END IF
  620.       IF GetListItem(DEMO31STATES$, WALKDEMO) = "ON" THEN
  621.         AddSectionFilesToCopyList "Demo31WalkFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  622.         AddSectionFilesToCopyList "DemoWalkScripts", SrcDir$, DEST$ + "\demo\win3.1x\scripts"
  623.         AddSectionFilesToCopyList "DemoWalkTextures", SrcDir$, DEST$ + "\demo\win3.1x\textures"
  624.       END IF
  625.       IF GetListItem(DEMO31STATES$, SIMDEMO) = "ON" THEN
  626.         AddSectionFilesToCopyList "Demo31SimFiles", SrcDir$, DEST$ + "\demo\win3.1x"
  627.       END IF
  628.     ELSEIF ftype% = DEMO32FILES THEN
  629.       AddSectionFilesToCopyList "DemoFiles", SrcDir$, DEST$ + "\demo"
  630.       AddSectionFilesToCopyList "Demo32Files", SrcDir$, DEST$ + "\demo\win32"
  631.       IF GetListItem(DEMO32STATES$, CYBERDEMO) = "ON" THEN
  632.         AddSectionFilesToCopyList "Demo32CyberFiles", SrcDir$, DEST$ + "\demo\win32"
  633.         AddSectionFilesToCopyList "DemoCyberScripts", SrcDir$, DEST$ + "\demo\win32\scripts"
  634.         AddSectionFilesToCopyList "DemoCyberTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  635.       END IF
  636.       IF GetListItem(DEMO32STATES$, KNIGHTDEMO) = "ON" THEN
  637.         AddSectionFilesToCopyList "Demo32KnightFiles", SrcDir$, DEST$ + "\demo\win32"
  638.         AddSectionFilesToCopyList "DemoKnightScripts", SrcDir$, DEST$ + "\demo\win32\scripts"
  639.         AddSectionFilesToCopyList "DemoKnightTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  640.       END IF
  641.       IF GetListItem(DEMO32STATES$, MAZEDEMO) = "ON" THEN
  642.         AddSectionFilesToCopyList "Demo32MazeFiles", SrcDir$, DEST$ + "\demo\win32"
  643.         AddSectionFilesToCopyList "DemoMazeScripts", SrcDir$, DEST$ + "\demo\win32\scripts"
  644.         AddSectionFilesToCopyList "DemoMazeTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  645.       END IF
  646.       IF GetListItem(DEMO32STATES$, ROLLERDEMO) = "ON" THEN
  647.         AddSectionFilesToCopyList "Demo32RollerFiles", SrcDir$, DEST$ + "\demo\win32"
  648.         AddSectionFilesToCopyList "DemoRollerScripts", SrcDir$, DEST$ + "\demo\win32\scripts"
  649.         AddSectionFilesToCopyList "DemoRollerTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  650.       END IF
  651.       IF GetListItem(DEMO32STATES$, VIEWDEMO) = "ON" THEN
  652.         AddSectionFilesToCopyList "Demo32ViewFiles", SrcDir$, DEST$ + "\demo\win32"
  653.       END IF
  654.       IF GetListItem(DEMO32STATES$, SHOPDEMO) = "ON" THEN
  655.         AddSectionFilesToCopyList "Demo32ShopFiles", SrcDir$, DEST$ + "\demo\win32"
  656.         AddSectionFilesToCopyList "DemoShopScripts", SrcDir$, DEST$ + "\demo\win32\scripts"
  657.         AddSectionFilesToCopyList "DemoShopTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  658.       END IF
  659.       IF GetListItem(DEMO32STATES$, VISDEMO) = "ON" THEN
  660.         AddSectionFilesToCopyList "Demo32VisFiles", SrcDir$, DEST$ + "\demo\win32"
  661.         AddSectionFilesToCopyList "DemoVisTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  662.       END IF
  663.       IF GetListItem(DEMO32STATES$, PAINTDEMO) = "ON" THEN
  664.         AddSectionFilesToCopyList "Demo32PaintFiles", SrcDir$, DEST$ + "\demo\win32"
  665.       END IF
  666.       IF GetListItem(DEMO32STATES$, WALKDEMO) = "ON" THEN
  667.         AddSectionFilesToCopyList "Demo32WalkFiles", SrcDir$, DEST$ + "\demo\win32"
  668.         AddSectionFilesToCopyList "DemoWalkScripts", SrcDir$, DEST$ + "\demo\win32\scripts"
  669.         AddSectionFilesToCopyList "DemoWalkTextures", SrcDir$, DEST$ + "\demo\win32\textures"
  670.       END IF
  671.       IF GetListItem(DEMO32STATES$, SIMDEMO) = "ON" THEN
  672.         AddSectionFilesToCopyList "Demo32SimFiles", SrcDir$, DEST$ + "\demo\win32"
  673.       END IF
  674.     ELSEIF ftype% = SAMPLEFILES THEN
  675.       AddSectionFilesToCopyList "SrcFiles", SrcDir$, DEST$ + "\src"
  676.       AddSectionFilesToCopyList "SrcCommonFiles", SrcDir$, DEST$ + "\src\common"
  677.       AddSectionFilesToCopyList "SrcCyberFiles", SrcDir$, DEST$ + "\src\sample\rwcyber"
  678.       AddSectionFilesToCopyList "SrcCyberSoundFiles", SrcDir$, DEST$ + "\src\sample\rwcyber\sound"
  679.       AddSectionFilesToCopyList "SrcCyberWavemix", SrcDir$, DEST$ + "\src\sample\rwcyber\wavemix"
  680.       AddSectionFilesToCopyList "DemoCyberScripts", SrcDir$, DEST$ + "\src\sample\rwcyber\scripts"
  681.       AddSectionFilesToCopyList "DemoCyberTextures", SrcDir$, DEST$ + "\src\sample\rwcyber\textures"
  682.  
  683.       AddSectionFilesToCopyList "SrcKnightFiles", SrcDir$, DEST$ + "\src\sample\rwknight"
  684.       AddSectionFilesToCopyList "DemoKnightScripts", SrcDir$, DEST$ + "\src\sample\rwknight\scripts"
  685.       AddSectionFilesToCopyList "DemoKnightTextures", SrcDir$, DEST$ + "\src\sample\rwknight\textures"
  686.  
  687.       AddSectionFilesToCopyList "SrcMazeFiles", SrcDir$, DEST$ + "\src\sample\rwmaze"
  688.       AddSectionFilesToCopyList "DemoMazeScripts", SrcDir$, DEST$ + "\src\sample\rwmaze\scripts"
  689.       AddSectionFilesToCopyList "DemoMazeTextures", SrcDir$, DEST$ + "\src\sample\rwmaze\textures"
  690.  
  691.       AddSectionFilesToCopyList "SrcRollerFiles", SrcDir$, DEST$ + "\src\sample\rwroller"
  692.       AddSectionFilesToCopyList "DemoRollerScripts", SrcDir$, DEST$ + "\src\sample\rwroller\scripts"
  693.       AddSectionFilesToCopyList "DemoRollerTextures", SrcDir$, DEST$ + "\src\sample\rwroller\textures"
  694.  
  695.       AddSectionFilesToCopyList "SrcViewFiles", SrcDir$, DEST$ + "\src\sample\rwview"
  696.  
  697.       AddSectionFilesToCopyList "SrcMFCFiles", SrcDir$, DEST$ + "\src\gift\rwmfc"
  698.       AddSectionFilesToCopyList "SrcMFCResFiles", SrcDir$, DEST$ + "\src\gift\rwmfc\res"
  699.  
  700.       AddSectionFilesToCopyList "SrcShopFiles", SrcDir$, DEST$ + "\src\gift\rwshop"
  701.       AddSectionFilesToCopyList "DemoShopScripts", SrcDir$, DEST$ + "\src\gift\rwshop\scripts"
  702.       AddSectionFilesToCopyList "DemoShopTextures", SrcDir$, DEST$ + "\src\gift\rwshop\textures"
  703.  
  704.       AddSectionFilesToCopyList "SrcVisFiles", SrcDir$, DEST$ + "\src\gift\rwvis"
  705.       AddSectionFilesToCopyList "DemoVisTextures", SrcDir$, DEST$ + "\src\gift\rwvis\textures"
  706.  
  707.       AddSectionFilesToCopyList "SrcPaintFiles", SrcDir$, DEST$ + "\src\gift\rwpaint"
  708.  
  709.       AddSectionFilesToCopyList "SrcWalkFiles", SrcDir$, DEST$ + "\src\gift\rwwalk"
  710.       AddSectionFilesToCopyList "DemoWalkScripts", SrcDir$, DEST$ + "\src\gift\rwwalk\scripts"
  711.       AddSectionFilesToCopyList "DemoWalkTextures", SrcDir$, DEST$ + "\src\gift\rwwalk\textures"
  712.  
  713.       AddSectionFilesToCopyList "SrcSimFiles", SrcDir$, DEST$ + "\src\gift\rwsim"
  714.  
  715.       AddSectionFilesToCopyList "SrcRfviewFiles", SrcDir$, DEST$ + "\src\sample\rfview"
  716.       AddSectionFilesToCopyList "L10", SrcDir$, DESTDRIVE$ + ":\l3d\chap10"
  717.       AddSectionFilesToCopyList "L11", SrcDir$, DESTDRIVE$ + ":\l3d\chap11"
  718.       AddSectionFilesToCopyList "L12Car", SrcDir$, DESTDRIVE$ + ":\l3d\chap12\car"
  719.       AddSectionFilesToCopyList "L12F16", SrcDir$, DESTDRIVE$ + ":\l3d\chap12\f16"
  720.       AddSectionFilesToCopyList "L12Tracks", SrcDir$, DESTDRIVE$ + ":\l3d\chap12\tracks"
  721.       AddSectionFilesToCopyList "L12Triad", SrcDir$, DESTDRIVE$ + ":\l3d\chap12\triad"
  722.       AddSectionFilesToCopyList "L13Compos", SrcDir$, DESTDRIVE$ + ":\l3d\chap13\compos"
  723.       AddSectionFilesToCopyList "L13Coral", SrcDir$, DESTDRIVE$ + ":\l3d\chap13\coral"
  724.       AddSectionFilesToCopyList "L15", SrcDir$, DESTDRIVE$ + ":\l3d\chap15"
  725.       AddSectionFilesToCopyList "L19Dolphin", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\dolphin"
  726.       AddSectionFilesToCopyList "L19Face", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\face"
  727.       AddSectionFilesToCopyList "L19Include", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\include"
  728.       AddSectionFilesToCopyList "L19Misc", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\misc"
  729.       AddSectionFilesToCopyList "L19Reflect", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\reflect"
  730.       AddSectionFilesToCopyList "L19Robot", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\robot"
  731.       AddSectionFilesToCopyList "L19Share", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\share"
  732.       AddSectionFilesToCopyList "L19Triad", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\triad"
  733.       AddSectionFilesToCopyList "L19Tv", SrcDir$, DESTDRIVE$ + ":\l3d\chap19\tv"
  734.  
  735.       AddSectionFilesToCopyList "L05Box", SrcDir$, DESTDRIVE$ + ":\l3d\chap5\box"
  736.       AddSectionFilesToCopyList "L05Poly", SrcDir$, DESTDRIVE$ + ":\l3d\chap5\poly"
  737.       AddSectionFilesToCopyList "L05Robot", SrcDir$, DESTDRIVE$ + ":\l3d\chap5\robot"
  738.       AddSectionFilesToCopyList "L05Tex1", SrcDir$, DESTDRIVE$ + ":\l3d\chap5\tex1"
  739.  
  740.       AddSectionFilesToCopyList "L06Kitchen", SrcDir$, DESTDRIVE$ + ":\l3d\chap6\kitchen"
  741.       AddSectionFilesToCopyList "L06Robot", SrcDir$, DESTDRIVE$ + ":\l3d\chap6\robot"
  742.       AddSectionFilesToCopyList "L06Ship", SrcDir$, DESTDRIVE$ + ":\l3d\chap6\ship"
  743.       
  744.       AddSectionFilesToCopyList "L07Ball", SrcDir$, DESTDRIVE$ + ":\l3d\chap7\ball"
  745.       AddSectionFilesToCopyList "L07Color", SrcDir$, DESTDRIVE$ + ":\l3d\chap7\color"
  746.  
  747.       AddSectionFilesToCopyList "L08Box", SrcDir$, DESTDRIVE$ + ":\l3d\chap8\box"
  748.       AddSectionFilesToCopyList "L08Fore", SrcDir$, DESTDRIVE$ + ":\l3d\chap8\fore"
  749.       AddSectionFilesToCopyList "L08Turn", SrcDir$, DESTDRIVE$ + ":\l3d\chap8\turn"
  750.       AddSectionFilesToCopyList "L08Wall", SrcDir$, DESTDRIVE$ + ":\l3d\chap8\wall"
  751.  
  752.       AddSectionFilesToCopyList "L09Ani", SrcDir$, DESTDRIVE$ + ":\l3d\chap9\ani"
  753.       AddSectionFilesToCopyList "L09Box", SrcDir$, DESTDRIVE$ + ":\l3d\chap9\box"
  754.       AddSectionFilesToCopyList "L09Poly", SrcDir$, DESTDRIVE$ + ":\l3d\chap9\poly"
  755.       AddSectionFilesToCopyList "L09Ship", SrcDir$, DESTDRIVE$ + ":\l3d\chap9\ship"
  756.       AddSectionFilesToCopyList "L09Tex1", SrcDir$, DESTDRIVE$ + ":\l3d\chap9\tex1"
  757.       AddSectionFilesToCopyList "L09Tex2", SrcDir$, DESTDRIVE$ + ":\l3d\chap9\tex2"
  758.     
  759.     ELSEIF ftype% = SCRIPTFILES THEN
  760.         AddSectionFilesToCopyList "ScriptFiles", SrcDir$, DEST$ + "\scripts"
  761.         AddSectionFilesToCopyList "ScriptExtFiles", SrcDir$, DEST$ + "\scripts\ext"
  762.         AddSectionFilesToCopyList "ScriptTextFiles", SrcDir$, DEST$ + "\scripts\text"
  763.         AddSectionFilesToCopyList "TextureFiles", SrcDir$, DEST$ + "\textures"
  764.     ELSEIF ftype% = DOCFILES THEN
  765.         AddSectionFilesToCopyList "DocFiles", SrcDir$, DEST$ + "\doc"
  766.     END IF
  767.     SrcDir$ = ""
  768.   END IF
  769. END SUB
  770.  
  771.  
  772. '**
  773. '** Purpose:
  774. '**     Recalculates disk space for the given option files and sets
  775. '**     the status info symbol "StatusItemsText".
  776. '** Arguments:
  777. '**     ftype% - type of files to add, one of the following:
  778. '**             LIBFILES, DEMOFILES, SAMPLEFILES, SCRIPTFILES
  779. '** Returns:
  780. '**     none.
  781. '*************************************************************************
  782. SUB RecalcOptFiles (ftype%) STATIC
  783.     CursorSave% = ShowWaitCursor()
  784.     ClearCopyList
  785.     AddOptFilesToCopyList ftype%
  786.  
  787.     IF ftype% = ROOTFILES THEN
  788.         ListSym$ = ROOTNEEDS$
  789.     ELSEIF ftype% = COMPFILES THEN
  790.         ListSym$ = COMPNEEDS$
  791.     ELSEIF ftype% = DEMO31FILES THEN
  792.         ListSym$ = DEMO31NEEDS$
  793.     ELSEIF ftype% = DEMO32FILES THEN
  794.         ListSym$ = DEMO32NEEDS$
  795.     ELSEIF ftype% = SAMPLEFILES THEN
  796.         ListSym$ = SAMPLENEEDS$
  797.     ELSEIF ftype% = SCRIPTFILES THEN
  798.         ListSym$ = SCRIPTNEEDS$
  799.     ELSEIF ftype% = DOCFILES THEN
  800.         ListSym$ = DOCNEEDS$
  801.     END IF
  802.  
  803.     StillNeed& = GetCopyListCost("", ListSym$, "")
  804.     cost& = 0
  805.     FOR i% = 1 TO 26 STEP 1
  806.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  807.     NEXT i%
  808.     ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  809.  
  810.     RestoreCursor CursorSave%
  811.     ListSym$ = ""
  812. END SUB
  813.  
  814.  
  815. '**
  816. '** Purpose:
  817. '**     Recalculates disk space and sets option status info according
  818. '**     to the current destination path.
  819. '** Arguments:
  820. '**     none.
  821. '** Returns:
  822. '**     none.
  823. '*************************************************************************
  824. SUB RecalcPath STATIC
  825.  
  826.     CursorSave% = ShowWaitCursor()
  827.  
  828.     RecalcOptFiles ROOTFILES
  829.     RecalcOptFiles COMPFILES
  830.     RecalcOptFiles DEMO31FILES
  831.     RecalcOptFiles DEMO32FILES
  832.     RecalcOptFiles SAMPLEFILES
  833.     RecalcOptFiles SCRIPTFILES
  834.     RecalcOptFiles DOCFILES
  835.  
  836.     RestoreCursor CursorSave%
  837. END SUB
  838.  
  839.  
  840. '**
  841. '** Purpose:
  842. '**     Sets drive status info according to latest disk space calcs.
  843. '** Arguments:
  844. '**     none.
  845. '** Returns:
  846. '**     none.
  847. '*************************************************************************
  848. SUB SetDriveStatus STATIC
  849.  
  850.     drive$ = MID$(DEST$, 1, 1)
  851.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  852.     cost1& = VAL(GetListItem(ROOTNEEDS$, ndrive%)) + VAL(GetListItem(COMPNEEDS$, ndrive%)) + VAL(GetListItem(DEMO31NEEDS$, ndrive%)) + VAL(GetListItem(DEMO32NEEDS$, ndrive%)) 
  853.     cost2& = VAL(GetListItem(SAMPLENEEDS$, ndrive%)) + VAL(GetListItem(SCRIPTNEEDS$, ndrive%)) + VAL(GetListItem(DOCNEEDS$, ndrive%))
  854.     DRIVENEEDED& = cost1& + cost2&
  855.     DRIVEFREE& = GetFreeSpaceForDrive(drive$)
  856.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  857.     ReplaceListItem DRIVETEXT$, 2, STR$(DRIVENEEDED& / 1024) + " K"
  858.     ReplaceListItem DRIVETEXT$, 3, STR$(DRIVEFREE& / 1024) + " K"
  859.  
  860.     IF drive$ = WINDRIVE$ THEN
  861.         ReplaceListItem DRIVETEXT$, 4, ""
  862.         ReplaceListItem DRIVETEXT$, 5, ""
  863.         ReplaceListItem DRIVETEXT$, 6, ""
  864.     ELSE
  865.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  866.         cost1& = VAL(GetListItem(ROOTNEEDS$, ndrive%)) + VAL(GetListItem(COMPNEEDS$, ndrive%)) + VAL(GetListItem(DEMO31NEEDS$, ndrive%)) + VAL(GetListItem(DEMO32NEEDS$, ndrive%)) 
  867.         cost2& = VAL(GetListItem(SAMPLENEEDS$, ndrive%)) + VAL(GetListItem(SCRIPTNEEDS$, ndrive%)) + VAL(GetListItem(DOCNEEDS$, ndrive%))
  868.         cost& = cost1& + cost2&
  869.         IF cost& = 0 THEN
  870.             ReplaceListItem DRIVETEXT$, 4, ""
  871.             ReplaceListItem DRIVETEXT$, 5, ""
  872.             ReplaceListItem DRIVETEXT$, 6, ""
  873.         ELSE
  874.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  875.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  876.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  877.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  878.         END IF
  879.     END IF
  880. END SUB
  881.  
  882.  
  883. '**
  884. '** Purpose:
  885. '**     Appends a file name to the end of a directory path,
  886. '**     inserting a backslash character as needed.
  887. '** Arguments:
  888. '**     szDir$  - full directory path (with optional ending "\")
  889. '**     szFile$ - filename to append to directory
  890. '** Returns:
  891. '**     Resulting fully qualified path name.
  892. '*************************************************************************
  893. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  894.     IF szDir$ = "" THEN
  895.         MakePath = szFile$
  896.     ELSEIF szFile$ = "" THEN
  897.         MakePath = szDir$
  898.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  899.         MakePath = szDir$ + szFile$
  900.     ELSE
  901.         MakePath = szDir$ + "\" + szFile$
  902.     END IF
  903. END FUNCTION
  904.