(set updateonly (exists "Aurora:Aurora" (noreq)))
(if updateonly
	(
		(set path
			(askdir
				(prompt "Where should the Aurora update be installed?")
				(help "Please select a location for Aurora.\n\nThis is where all updated Aurora files will be placed.")
				(default "Aurora:")
				(disk)
			)
		)
		(set auroradir path)
		(set @default-dest auroradir)
	)
	(
		(set path
			(askdir
				(prompt "Where should the Aurora directory be made?")
				(help "Please select a location for the Aurora directory.\n\nThis is where all Aurora related files will be placed.")
				(default "Work:")
				(disk)
			)
		)
		(set auroradir (tackon path "Aurora"))
		(set @default-dest auroradir)
		(makedir auroradir
			(infos)
		)
		(makeassign 'Aurora' auroradir)
	)
)
(set path
	(askdir
		(prompt "Please select a default image directory.")
		(help "Please select a default Aurora image directory.\n\nThis is where images will be loaded from in the event a required filename variable is not specified.")
		(default "RAM:")
		(disk)
	)
)
(set imagedir path)
(set displayopts
	(askoptions
		(prompt "Which display drivers would you like installed?")
		(help "Aurora uses retargetable display drivers to support standard Amiga and third-party display card graphic modes.  You need to specify which drivers are available on your system")
		(choices "Amiga AGA" "OpalVision")
	)
)
(set moduleopts
	(askoptions
		(prompt "Which modules would you like selected by the 'Random' module?")
		(help "Aurora feature a module that randomly selects any other module.  Please specify which modules you would like included in this random selection process.")
		(choices "Arexx" "Aswarm" "Chroma" "Cycle" "Lines" "Mandelbrot" "MandelBrot_881" "Mystic" "Null" "Puzzle" "Raindrops" "Slideshow" "Squares" "Starfield")
		(default %11111011111110)
	)
)
(makedir "Aurora:Data")
(makedir "Aurora:Docs")
(makedir "Aurora:Drivers")
(makedir "Aurora:IFF")
(makedir "Aurora:Modules")
(makedir "Aurora:Rexx")
(copyfiles
	(source 'Aurora_Install:Data')
	(dest 'Aurora:Data')
	(all)
)
(copyfiles
	(source 'Aurora_Install:Docs')
	(dest 'Aurora:Docs')
	(all)
)
(if (BITAND displayopts %1)
	(
		(copyfiles
			(source 'Aurora_Install:Drivers')
			(dest 'Aurora:Drivers')
			(choices "Amiga_AGA")
		)
	)
)
(if (BITAND displayopts %10)
	(
		(copyfiles
			(source 'Aurora_Install:Drivers')
			(dest 'Aurora:Drivers')
			(choices "OpalVision")
		)
	)
)
(copyfiles
	(source 'Aurora_Install:IFF')
	(dest 'Aurora:IFF')
	(all)
)
(copyfiles
	(source 'Aurora_Install:Modules')
	(dest 'Aurora:Modules')
	(all)
)
(copyfiles
	(source 'Aurora_Install:Rexx')
	(dest 'Aurora:Rexx')
	(all)
)
(textfile
	(dest "Aurora:Rexx/Random.rexx")
	(append '/* Arexx script to select a random Aurora module. */\n')
	(append 'OPTIONS RESULTS\n')
	(append 'x = 0\n')
	(if (BITAND moduleopts %1)
		(append 'x = x + 1 ; module.x = \"Arexx\"\n')
	)
	(if (BITAND moduleopts %10)
		(append 'x = x + 1 ; module.x = \"Aswarm\"\n')
	)
	(if (BITAND moduleopts %100)
		(append 'x = x + 1 ; module.x = \"Chroma\"\n')
	)
	(if (BITAND moduleopts %1000)
		(append 'x = x + 1 ; module.x = \"Cycle\"\n')
	)
	(if (BITAND moduleopts %10000)
		(append 'x = x + 1 ; module.x = \"Lines\"\n')
	)
	(if (BITAND moduleopts %100000)
		(append 'x = x + 1 ; module.x = \"MandelBrot\"\n')
	)
	(if (BITAND moduleopts %1000000)
		(append 'x = x + 1 ; module.x = \"MandelBrot_881\"\n')
	)
	(if (BITAND moduleopts %10000000)
		(append 'x = x + 1 ; module.x = \"Mystic\"\n')
	)
	(if (BITAND moduleopts %100000000)
		(append 'x = x + 1 ; module.x = \"Null\"\n')
	)
	(if (BITAND moduleopts %1000000000)
		(append 'x = x + 1 ; module.x = \"Puzzle\"\n')
	)
	(if (BITAND moduleopts %10000000000)
		(append 'x = x + 1 ; module.x = \"RainDrops\"\n')
	)
	(if (BITAND moduleopts %100000000000)
		(append 'x = x + 1 ; module.x = \"Slideshow\"\n')
	)
	(if (BITAND moduleopts %1000000000000)
		(append 'x = x + 1 ; module.x = \"Squares\"\n')
	)
	(if (BITAND moduleopts %10000000000000)
		(append 'x = x + 1 ; module.x = \"Starfield\"\n')
	)
	(append 'NumbModules = x\n')
	(append 'call getmodule\n')
	(append 'address \"Aurora_Rexx\"	/* get current resolution flags */\n')
	(append 'OSCAN ; oscanstate = RESULT\n')
	(append 'MODEID ; modeidstate = RESULT\n')
	(append 'address command \"Aurora:Modules/\"module.x\n')
	(append 'address \"Aurora_Rexx\"	/* set resolution flags back to original */\n')
	(append 'MODEID modeidstate\n')
	(append 'OSCAN oscanstate\n')
	(append 'exit\n')
	(append 'getmodule:\n')
	(append 'Total = 0\n')
	(append 'if exists(\"Aurora:Data/random.dat\") then do\n')
	(append '	open(\"data\",\"Aurora:Data/random.dat\",\"READ\")\n')
	(append '	Total = 0\n')
	(append '	do i = 1 to NumbModules\n')
	(append '		data.i = readln(\"data\")\n')
	(append '		if eof(\"data\") then data.i = 0\n')
	(append '		Total = Total + data.i\n')
	(append '	end\n')
	(append '	close(\"data\")\n')
	(append 'end\n')
	(append 'else do i = 1 to Numbmodules\n')
	(append '	data.i = 0\n')
	(append 'end\n')
	(append 'if (Total / NumbModules) = (Total % NumbModules) then\n')
	(append '	if Total ~= 0 then do\n')
	(append '		address command \"delete >nil: Aurora:Data/random.dat\"\n')
	(append '		do i = 1 to Numbmodules\n')
	(append '			data.i = 0\n')
	(append '		end\n')
	(append '	end\n')
	(append 'do until z = 1\n')
	(append '	call getrandom\n')
	(append '	if data.x = 0 then z = 1\n')
	(append 'end\n')
	(append 'data.x = 1\n')
	(append 'open(\"data\",\"Aurora:Data/random.dat\",\"write\")\n')
	(append '	do i = 1 to NumbModules\n')
	(append '		writeln(\"data\",data.i)\n')
	(append '	end\n')
	(append '	close(\"data\")\n')
	(append 'return 0\n')
	(append 'getrandom:\n')
	(append 'x = ((randu(time(\"s\")) * NumbModules) + 1) % 1\n')
	(append 'return 0\n')
	(safe)
)
(textfile
	(dest "Aurora:Rexx/GetFileList.rexx")
	(append '/* Arexx script to generate a filelist from a user specified directory */\n\n')
	(append 'parse arg Directory\n')
	(append 'if Directory = \"\" then Directory = \"'imagedir'\"\n')
	(append 'address command \"list >t:aurora_temp \"Directory\" files quick nohead\"\n')
	(append 'open(\"list\",\"t:aurora_temp\",\"read\")\n')
	(append 'i = 0\n')
	(append 'do while ~eof(\"list\")\n')
	(append '	x = readln(\"list\")\n')
	(append '	if x ~= \"\" then do\n')
	(append '		z = right(Directory,1)\n')
	(append '		if z ~= \":\" & z ~= \"/\" then Directory = Directory || \"/\"\n')
	(append '		y.i = Directory||x\n')
	(append '		i = i + 1\n')
	(append '	end\n')
	(append 'end\n')
	(append 'close(\"list\")\n')
	(append 'i = i - 1\n')
	(append 'open(\"list\",\"t:aurora_temp\",\"write\")\n')
	(append 'do x = 0 to i\n')
	(append '	writeln(\"list\",y.x)\n')
	(append 'end\n')
	(append 'close(\"list\")\n')
	(append 'address command \"sort from t:aurora_temp to t:aurora_filelist\"\n')
	(append 'address command \"delete t:aurora_temp\"\n')
	(append 'exit\n')
	(safe)
)
(textfile
	(dest "Aurora:Rexx/GetFileName.rexx")
	(append '/* Script to generate a random filename from a user specified directory */\n\n')
	(append 'parse arg Dir\n')
	(append 'if Dir = \"\" then Dir = \"'imagedir'\"\n\n')
	(append 'address command \"list\" Dir \">t:aurora_temp files quick nohead\"\n\n')
	(append 'open(\"list\",\"t:aurora_temp\",\"READ\")\n')
	(append 'i = 0\n\n')
	(append 'do while ~eof(\"list\")\n')
	(append '	z = readln(\"list\")\n')
	(append '	i = i + 1\n')
	(append '	x.i = z\n')
	(append 'end\n\n')
	(append 'close(\"list\")\n')
	(append 'i = i - 1\n\n')
	(append 'seed = time(\"s\")\n')
	(append 'y = ((randu(time(\"s\")) * (i * 10)) % 10) + 1\n')
	(append 'z = right(Dir,1)\n')
	(append 'if z ~= \":\" & z ~= \"/\" then Dir = Dir||\"/\"\n')
	(append 'Image = Dir||x.y\n')
	(append 'open(\"data\",\"t:aurora_filename\",\"w\")\n')
	(append 'writeln(\"data\",Image)\n')
	(append 'close(\"data\")\n\n')
	(append 'address command \"delete >nil: t:aurora_temp\"\n')
	(append 'exit\n')
	(safe)
)
(copyfiles
	(source 'Aurora_Install:')
	(dest 'Aurora:')
	(choices 'Aurora' 'Aurora.info' 'PrefEd')
)
(copyfiles
	(source 'Aurora_Install:')
	(dest 'Sys:WBStartup')
	(choices 'Aurora' 'Aurora.info')
)
(if updateonly
	(
		(set dummyvar 0)
	)
	(
		(startup @app-name
			(prompt "\nAurora needs to append your S:User-Startup file to include a required assign statement.")
			(help "This assignment is REQUIRED by Aurora.")
			(command "Assign Aurora: "auroradir"\n")
		)
	)
)
