;Standard Installer script
;Written by Marco Biondi
;@1995/96 Light Shock software s.n.c

(set destinazione @default-dest)

(set mask 0)

(while (= mask 0)
	(set mask
		(askoptions
			(prompt "Scegli che cosa devo fare:")
			(help @askoptions-help)
			(choices "Installa Introduzione" "Installa Gioco" "Crea disco di Boot")
			(default %011)
		)
	)
)

(if (OR (IN mask 0) (IN mask 1))
	(
		(set version
			(askchoice
				(prompt "Quale versione del gioco deve essere installata ?")
				(help "Scegliere il pulsante relativo alla versione del chipset presente nel vostro Amiga.\n"
					"ECS/OCS - Amiga 500, 2000, 500+, 600\n"
					"AGA - Amiga 1200, 4000"
				)
				(choices "Versione AGA" "Versione ECS/OCS")
			)
		)

		(set destinazione
			(askdir 
				(prompt ("Scegli il cassetto dove installare %s" @app-name))
				(help @askdir-help)
				(default destinazione)
			)
		)

		(if (NOT (exists destinazione (quiet))) 
			(abort "Il percorso specificato non è valido!")
		)

		(set spaziorichiesto
			(+ 
				(* (IN mask 0) 800)
				(* (IN mask 1) (select version 1200 1100) )	;indico la metà perché IN ritorna 2
			)
		)

		(set disponibile (/ (getdiskspace destinazione) 1024) )

		(if (< disponibile spaziorichiesto)
			(set domanda "ATTENZIONE : LO SPAZIO DISPONIBILE E' INSUFFICIENTE.\nPROCEDO CON L'INSTALLAZIONE ?"
			)
			(set domanda ""
			)	
		)

		(message 
			("L'installazione delle parti richieste della versione %s di %s richiede circa %ld Kbytes di spazio libero.\n\n"
				(select version "AGA" "ECS")
				@app-name
				spaziorichiesto
			)
			("Nel cassetto scelto (%s) ci sono %ld Kbytes disponibili.\n\n"
				destinazione
				disponibile
			)
			domanda
		)
	)
)

(if (IN mask 0)
	(
		(askdisk
			(prompt "Inserisci il disco \"Intro\"")
			(help @askdisk-help)
			(dest "BV.0")
		)
		(copyfiles
			(prompt "Installazione \"Intro\"")
			(help @copyfiles-help)
			(source "BV.0:")
			(dest destinazione)
			(choices "BVIntro" "Intro" "IntroDATA" "Music" "Txt" "LSLogo")
		)
		(copyfiles
			(prompt "Installazione \"Intro\"")
			(help @copyfiles-help)
			(source "BV.0:Intro.in")
			(dest destinazione)
			(newname "Intro.info")
		)
		(copylib
			(prompt "Installo Libreria linguaggi")
			(help @copylib-help)
			(source "BV.0:libs/lsdetect.library")
			(dest "LIBS:")
		)
	)
)

(complete 18)

(if (IN mask 1)
	(
		(askdisk
			(prompt "Inserisci il Disco 1")
			(help @askdisk-help)
			(dest "BV.1")
		)
		(copyfiles
			(prompt "Installazione Disco 1")
			(help @copyfiles-help)
			(source 
				("BV.1:%s"
					(select version "BVGame1200" "BVGame500")
				)
			)
			(dest destinazione)
			(newname "BVGame")
		)
		(copyfiles
			(prompt "Installazione Disco 1")
			(help @copyfiles-help)
			(source "BV.1:BVGame.in")
			(dest destinazione)
			(newname "BVGame.info")
		)
		(copyfiles
			(prompt "Installazione Disco 1")
			(help @copyfiles-help)
			(source "BV.1:")
			(dest destinazione)
			(choices "WinSequence" "LetUsDie")
		)
		(copylib
			(prompt "Installo Libreria linguaggi")
			(help @copylib-help)
			(source "BV.1:libs/lsdetect.library")
			(dest "LIBS:")
		)

		(complete 36)

		(askdisk
			(prompt "Inserisci il Disco 2")
			(help @askdisk-help)
			(dest "BV.2")
		)
		(if version
			(
				(copyfiles
					(prompt "Installazione Disco 2")
					(help @copyfiles-help)
					(source "BV.2:")
					(dest destinazione)
					(all)
				)
			)
			(
				(copyfiles
					(prompt "Installazione Disco 2")
					(help @copyfiles-help)
					(source "BV.2:")
					(dest destinazione)
					(choices "Mappiste" "Modules" "piste" "PisteRK" "RBG01" "RBG02" "RBG03" "RBG07" "ReiContinents")
				)
				(copyfiles
					(prompt "Installazione Disco 2")
					(help @copyfiles-help)
					(source "BV.2:")
					(dest (tackon destinazione "ReiEnemies"))
					(choices "ReiEnemies/Block09" "ReiEnemies/BLock06" )
				)
			)
		)

		(complete 54)

		(askdisk
			(prompt "Inserisci il Disco 3")
			(help @askdisk-help)
			(dest "BV.3")
		)
		(copyfiles
			(prompt "Installazione Disco 3")
			(help @copyfiles-help)
			(source "BV.3:")
			(dest destinazione)
			(all)
		)

		(complete 72)

		(askdisk
			(prompt "Inserisci il Disco 4")
			(help @askdisk-help)
			(dest "BV.4")
		)
		(if version
			(
				(copyfiles
					(prompt "Installazione Disco 4")
					(help @copyfiles-help)
					(source "BV.4:")
					(dest destinazione)
					(choices "SaveTopScore" "StartSequence" "DeathSequence" "Modules" "RBG05" )
				)
				(copyfiles
					(prompt "Installazione Disco 4")
					(help @copyfiles-help)
					(source "BV.4:")
					(dest (tackon destinazione "ReiEnemies"))
					(choices "ReiEnemies/Block11" )
				)
			)
			(
				(copyfiles
					(prompt "Installazione Disco 4")
					(help @copyfiles-help)
					(source "BV.4:")
					(dest destinazione)
					(all)
				)
			)
		)
	)
)

(complete 90)

(if (IN mask 0 1)
	(startup "BlackViper"
		(prompt "Aggiorno User-Startup\n")
		(help @startup-help)
		(command ("Assign BV.0: \"%s\"\nAssign BV.1: \"%s\"\nAssign BV.2: \"%s\"\nAssign BV.3: \"%s\"\nAssign BV.4: \"%s\"\n" destinazione destinazione destinazione destinazione destinazione))
	)
)

(if (NOT (IN mask 2))
	(
		(set avchip (/ (database "graphics-mem") 1024))
		(set avfast (- (/ (database "total-mem") 1024) avchip))
		(set nechip (select version 800 512))
		(set nefast 512)

		(if
			(NOT	
				(OR
					(AND
						(>= avchip nechip)
						(>= avfast nefast)
					)
					(>= avchip (+ nechip nefast))
				)
			)
			(if
				(askbool
					(prompt ("ATTENZIONE : La memoria disponibile attualmente non è sufficiente per far partire %s.\n\nDevo creare un disco di Boot ?" @app-name))
					(help "La condizione di scarsa memoria potrebbe essere causata da alcune applicazioni attualmente in esecuzione.\n"
						"Se volete verificare l'effettiva necessità di un disco di Boot, provate a far partire il gioco non appena il WorkBench ha completato la sua inizializzazione.\n\n"
						"Il disco di Boot può comunque essere creato in un secondo tempo rieseguendo l'installazione scegliendo l'opzione apposita."
					)
				)
				(set mask -1)
			)
		)
	)
)

(if (IN mask 2)
	(
		(message "Inserisci un disco formattato nell'unità DF0: e premi \"Procedi\" per continuare."
			(help "Per formattare un dischetto fate riferimento al manuale del WorkBench e/o di AmigaDOS.\n\n"
				"N.B. L'operazione può essere tranquillamente eseguita in multitasking senza abbandonare l'installer."
			)
		)
		(until
			(exists "df0:" (quiet) )
			(working "Attesa dischetto...")
		)
		(while (NOT (exists (tackon destinazione "BVGame") ) )
			(set destinazione
				(askdir 
					(prompt ("Seleziona il cassetto dove è installato %s" @app-name))
					(help @askdir-help)
					(default destinazione)
				)
			)
		)
		(set btype 1)
		(if (exists (tackon destinazione "BVIntro") )
			(set btype
				(askchoice
					(prompt "Scegli cosa attivare:")
					(help @askoptions-help)
					(choices "Introduzione e gioco" "Solo gioco")
				)
			)
		)
		(working "Sto creando le directory e i files necessari...")
		(makedir "df0:s")
		(makedir "df0:c")
		(makedir "df0:libs")
		(run "Install DF0:")
		(foreach "SYS:C" "(SetPatch|Cd|Assign)"
			(copyfiles
				(prompt "Scrittura files necessari...")
				(help @copyfiles-help)
				(source ("SYS:C/%s" @each-name))
				(dest "df0:c")
			)
		)
		(copyfiles
			(prompt "Scrittura files necessari...")
			(help @copyfiles-help)
			(source "LIBS:lsdetect.library")
			(dest "df0:libs")
		)
		(textfile
			(dest "df0:s/Startup-sequence")
			(append
				(select	(exists
						"df0:C/SetPatch"
						(noreq)
					)
					(";No SetPatch on your system!\n")
					("SetPatch >NIL: QUIET\n")
				)
			)
			(append
				("CD \"%s\"\nAssign BV.0: \"%s\"\nAssign BV.1: \"%s\"\nAssign BV.2: \"%s\"\nAssign BV.3: \"%s\"\nAssign BV.4: \"%s\"\n" destinazione destinazione destinazione destinazione destinazione destinazione)
			)
			(append
				(select btype
					("LSLogo\nBvIntro\nLetUsDie BvGame\n")
					("LetUsDie BvGame\n")
				)
			)
		)
	)
)

(complete 100)

(exit "Partenza da HD: Resettate il computer. Fate doppio-click sull'icona BVGame o BVIntro\n\n"
	"Partenza da disco di Boot: Inserite il disco di Boot in df0: e resettate il computer\n\n"
	"Buon divertimento!\n\n" "@1995/96 Light Shock software s.n.c." 
)