; Real 3D Installer Script V3
; ---------------------------

(set r3disk1 "Real3D_V3_Disk1:")
(set r3disk2 "Real3D_V3_Disk2:")
(set r3disk3 "Real3D_V3_Disk3:")
(set r3disk4 "Real3D_V3_Disk4:")
(set r3disk5 "Real3D_V3_Disk5:")
(set r3drawer "Real3DV3")

(set r3comp "lharc")
(set r3pfix ".lzh")

(procedure r3uncomp
  (set r3lha ("ram:%s -m -x x %s" r3comp r3disk))
  (set r3ci (cat r3curritem r3pfix))
  (working "Installing " r3curritem)
  (if (<> (run (cat r3lha r3ci)) 0)
    (message "Error while uncompressing " r3ci)
  )
)

(procedure r3askdisk
  (askdisk
    (prompt "Please insert " r3disk " in any drive...")
    (dest (substr r3disk 0 (- (strlen r3disk) 1)))
    (help @askdisk-help)
  )
)

(set r3version  (/ (getversion) 65536))

(if (OR (= r3cpu "68000") (= r3cpu "68010"))
  (if (= 0
    (askbool
      (prompt "Real 3D V3 can be run only on 68020/30/40/60 based systems\nDo you really want to install Real3D to your " r3cpu " based system?")
      (help "You can use many of the Real 3D utilities in all Amiga models")
      (default 1)
    ))
    (abort "Real 3D Cannot be run on\n" r3cpu " based machines")
  )
)

(set version (/ (getversion) 65536))

(if (exists "R3D2:" (noreq))
  (
  (if (= 1 (askbool
      (prompt "Real 3D Version 2 found\nDo you want to install V3 into the same directory?")
      (help "If you select Yes, the old version will be overwritten.")
      (default 1))
    )

    ( (set @default-dest "R3D2:")
      (set r3dest1 "R3D2:")
      (set @execute-dir r3dest1)
      (run "delete r3d2:examples all")
    )

    ( (set @default-dest "Work:")
      (set r3dest (askdir
	(prompt "Select the directory to install the Real 3D V3")
	(default @default-dest)
	(help "Choose a destination partition or directory to contain "
	  "Real 3D V3 directory")))

      (set r3dest1 (tackon r3dest r3drawer))
      (set @default-dest r3dest1)
      (set error (trap 4 (makedir r3dest1 (infos))))
      (if (> error 0) (message ("Dos Error %ld detected" @ioerr)))
      (set @execute-dir r3dest1)
    )
  ))

  ( (set @default-dest "Work:")
    (set r3dest (askdir
      (prompt "Select the directory to install the Real 3D V3")
      (default @default-dest)
      (help "Choose a destination partition or directory to contain "
	"Real 3D V3 directory")))

    (set r3dest1 (tackon r3dest r3drawer))
    (set @default-dest r3dest1)
    (set error (trap 4 (makedir r3dest1 (infos))))
    (if (> error 0) (message ("Dos Error %ld detected" @ioerr)))
    (set @execute-dir r3dest1)
  )
)

(message "Real 3D will be installed in " r3dest1 )

(set error (trap 4
  (copyfiles
    (source (tackon r3disk1 r3comp)
    (dest   "ram:")))
  )
)
(if (> error 0) (message ("Dos Error %ld detected" @ioerr)))

(set r3items
  (askoptions
    (prompt  "Choose parts you would like to install")
    (choices "Real 3D V 3"
	 "Utilities"
	 "Support Material"
	 "Examples"
	 "Accessories"
	 "Online Help"
	 "Demos"
    )
    (help "Real 3D V3 - \nInstalls Real 3D main program\n\n "

      "Utilities - \n"
      "Installs Real 3D utilities such as Display, "
      "Delta Converter/Player, DXF Converter etc.\n\n"

      "Support Material - \nThis installs support material "
      "such as objects, material libraries, bitmap textures etc.\n\n"

      "Accessories -\nThis installs graphic board drivers\n\n"

      "Examples -\nAnimation and other tutorial examples presented "
      "in the manual\n\n"

      "Online Help -\nInstalls Commodore shared library 'AmigaGuide.library' "
      "to LIBS: drawer, 'AmigaGuide' hypertext browser and Real 3D "
      "help documents.\n\n"

      "Demos -\nIFF and JPEG images and delta animations "
      "created with Real 3D\n\n"
    )
  )
)


; Install Disk 1
; --------------

(set r3disk r3disk1) (r3askdisk)

(if (IN r3items 0) ; Real 3D V3
( (set r3curritem "Real") (r3uncomp)
))

; Install Disk2
; -------------

(set r3disk r3disk2) (r3askdisk)

(if (IN r3items 1) ; Utilities
  ( (set r3curritem "DeltaConvert") (r3uncomp)
    (set r3curritem "DeltaPlay") (r3uncomp)
    (set r3curritem "DeltaToIFF") (r3uncomp)
    (set r3curritem "Display") (r3uncomp)
    (set r3curritem "DXFtoRPL") (r3uncomp)
    (set r3curritem "RealConvert") (r3uncomp)
  )
)

(if (IN r3items 2) ; support material
( (makedir (tackon r3dest1 "classes")) ; Empty drawers need this
  (set r3curritem "classes") (r3uncomp)
  (makedir (tackon r3dest1 "catalogs"))
  (set r3curritem "catalogs") (r3uncomp)
  (makedir (tackon r3dest1 "storage"))
  (set r3curritem "storage")  (r3uncomp)

  (set r3curritem "s") (r3uncomp)
  (set r3curritem "environments") (r3uncomp)
  (set r3curritem "rexx") (r3uncomp)
  (set r3curritem "macros") (r3uncomp)
  (set r3curritem "materials") (r3uncomp)
  (set r3curritem "RPL") (r3uncomp)
  (set r3curritem "gui") (r3uncomp)
  (set r3curritem "startup") (r3uncomp)
))

(if (IN r3items 4)
( (set r3curritem "Accessories") (r3uncomp)
))

(if (IN r3items 5)
( (set r3curritem "help") (r3uncomp)
))

(if (IN r3items 6) ; Demo stuff
(
   (set r3curritem "Deltas") (r3uncomp)
))

; Install Disk3
; -------------

(set r3disk r3disk3) (r3askdisk)

(if (IN r3items 2) ; the rest of support material
( (set r3curritem "bumpmaps") (r3uncomp)
  (set r3curritem "textures") (r3uncomp)
))

(if (IN r3items 0) ; Real 3D V3
(  (set r3curritem "libs") (r3uncomp)
))

; Install Disk4
; -------------

(set r3disk r3disk4) (r3askdisk)

(if (IN r3items 2) ; the rest of support material
( (set r3curritem "projects") (r3uncomp)
))

(if (IN r3items 6) ; Demo stuff
(
   (set r3curritem "Images") (r3uncomp)
))

; Install Disk5
; -------------

(set r3disk r3disk5) (r3askdisk)

(if (IN r3items 2) ; the rest of support material
( (set r3curritem "v3samples") (r3uncomp)
  (set r3curritem "objects")  (r3uncomp)
))

(if (IN r3items 5) ; Online help
(
  (copylib
    (source (cat r3disk "sysfiles/amigaguide.library"))
    (dest "libs:")
  )
  (copylib
    (source (cat r3disk "sysfiles/amigaguide"))
    (dest "sys:utilities")
  )
))

(if (> r3version 37)
( (copylib
      (source (cat r3disk "sysfiles/gradientslider.gadget"))
      (dest "sys:classes/gadgets")
  )
  (copylib
      (source (cat r3disk "sysfiles/colorwheel.gadget"))
      (dest "sys:classes/gadgets")
  )
))

(if (IN r3items 3)
( (set r3curritem "examples") (r3uncomp)
))

(copyfiles
    (source (tackon r3disk "v3.readme"))
    (dest r3dest1))
(copyfiles
    (source (tackon r3disk "v3.readme.info"))
    (dest r3dest1))


; Cleanup
; -------

(delete ("RAM:%s" r3comp))

; Modify Startup-sequence
;------------------------

(set error 1)
(until (= error 0)
   (
    (set error (trap 4
     (startup "Real3D_V3"
      (prompt ("The assign R3D3 has been created"))
      (command ("assign R3D3: %s" r3dest1))
      (help   "Real 3D uses one logical assign R3D3 to find its files."
	  "Installer will add this assign to your user-startup script\n"
      )
     )
    ))
    (if (> error 0)
     (if (or (= @ioerr 222) (or (= @ioerr 223) (= @ioerr 224)))
      (message "Startup file is write protected. Use protect "
	  "to write enable the file, and select Proceed" )
      ;else other type of error
      (
	(message "Non-Standard startup sequence detected. You must add "
	   "the following line by hand.\n\n"
	   "  assign R3D3: " r3dest1 "\n"
	)
	(set error 0)
      )
     )
    )
   )
)

(makeassign "R3D3" r3dest1)

(complete 100)
