;-----------------------------------------------------------------------------
; TITLE        : FinnQuake
; VERSION      : 0.10
; DATE         : 30.08.1998
; DESCRIPTION  : Installer script for FinnQuake
; INPUT        : -
; OUTPUT       : -
;-----------------------------------------------------------------------------
; MODIFICATIONS: -
;-----------------------------------------------------------------------------
; LIMITATIONS AND BUGS
;-----------------------------------------------------------------------------

; $VER: FinnQuake 0.10 (30.08.1998)

;-----------------------------------------------------------------------------
; VARIABLES VARIABLES VARIABLES VARIABLES VARIABLES VARIABLES VARIABLES VARIA
;-----------------------------------------------------------------------------
(set #config_ok 1)                       ; Default: configuration is ok
(set #cpu "???(20|30|40|60)")            ; Required CPU
(set #installer_ver 43)                  ; Minimum Installer version
(set #installer_rev 3)                   ; Minimum Installer revision
(set #os_ver 40)                         ; Minimum OS version
(set #os_rev 10)                         ; Minimum OS revision
(set #appsize 0)                         ; Required diskspace for application
                                         ; (bytes)
(set #configcheckmask %000)              ; Configuration check mask:
                                         ; bit0 = cpu
                                         ; bit1 = os version
                                         ; bit2 = disk space
(set #application "FinnQuake")           ; Application

; Default language (Finnish)
(set #string1 ("\nAsennukseen tarvitaan Installer-ohjelman versio %ld.%ld." #installer_ver #installer_rev))
(set #string2 ("\n%s\n\nOhjelmiston oikeudet © 1998 omistaa Janne Peräaho.\nKaikki oikeudet pidätetään.\n" #application))
(set #string3 ("\n%s on asennettu.\n" #application))
(set #string4 "\nFinnQuake:ä ei voi asentaa tähän Amigaan.")
(set #string5 "\nValitse asennettavat osat.")
(set #string50 "Valitse 'Pelin suomennos' jos haluat asentaa Quake:n suomennoksen ja 'Pelin ohjeet' jos haluat asentaa ohjeet.")
(set #string51 "Pelin suomennos (Quake.catalog)")
(set #string52 "Pelin ohjeet    (Ohjeet_010.txt)")
(set #string6 "\nValitse hakemisto, jonne pelin suomennos asennetaan.")
(set #string61 "Asennetava tiedosto on 'Quake.catalog', joka sisältää pelitekstien suomennoksen. Tiedosto tulee kopioida hakemistoon 'LOCALE:Catalogs/suomi/'.")
(set #string62 "LOCALE:Catalogs/suomi/")
(set #string7 "\nSuomennoksen asennus...")
(set #string71 "Pelin suomennos kopioidaan valittuun hakemistoon.")
(set #string72 "Locale/Catalogs/suomi/Quake.catalog")
(set #string73 "#?")
(set #string8 "\nValitse hakemisto, jonne pelin ohjeet asennetaan.")
(set #string81 "Asennettava tiedosto on 'Ohjeet_010.txt', joka sisältää peliohjeiden suomennoksen. Voit asentaa ohjeet minne tahansa, mutta suositeltava paikka on pelin kotihakemisto.")
(set #string82 "Peli:Quake/")
(set #string9 "\nOhjeiden asennus...")
(set #string91 "Pelin ohjeet kopioidaan valittuun hakemistoon.")
(set #string92 "")
(set #string93 "Ohjeet_010#?")

;-----------------------------------------------------------------------------
; SUBROUTINES SUBROUTINES SUBROUTINES SUBROUTINES SUBROUTINES SUBROUTINES SUB
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
; TITLE        : p_DecodeVersion
; VERSION      : 0.10
; DATE         : 30.08.1998
; DESCRIPTION  : Get version and revision from raw version number
; INPUT        : #version - raw version number
; OUTPUT       : #ver     - version number
;                #rev     - revision number
;-----------------------------------------------------------------------------
; MODIFICATIONS: -
;-----------------------------------------------------------------------------
(procedure p_DecodeVersion #version
   (set #ver (/ #version 65536))
   (set #rev (- #version (* #ver 65536)))
)

;-----------------------------------------------------------------------------
; TITLE        : p_EncodeVersion
; VERSION      : 0.10
; DATE         : 30.08.1998
; DESCRIPTION  : Create raw version number from version and revision number
; INPUT        : #ver     - version number
;                #rev     - revision number
; OUTPUT       : #version - raw version number
;-----------------------------------------------------------------------------
; MODIFICATIONS: -
;-----------------------------------------------------------------------------
(procedure p_EncodeVersion #ver #rev
   (set #version (+ (* #ver 65536) #rev))
)

;-----------------------------------------------------------------------------
; TITLE        : p_CheckConfiguration
; VERSION      : 0.10
; DATE         : 30.08.1998
; DESCRIPTION  : Check if requirements match with current configuration
; INPUT        : -
; OUTPUT       : #config_ok - 0=not ok, 1=ok
;-----------------------------------------------------------------------------
; MODIFICATIONS: -
;-----------------------------------------------------------------------------
(procedure p_CheckConfiguration

   ; Variables
   (set #config_ok 1)

   ; Check CPU
   (if (in #configcheckmask 0)
      (
         (if (not (patmatch #cpu (database "cpu")))
            (
               (set #config_ok 0)
            )
         ); if
      )
   ); if

   ; Check OS version
   (if (in #configcheckmask 1)
      (
         (p_EncodeVersion #os_ver #os_rev)
         (if (< #version (getversion))
            (set #config_ok 0)
         ); if
      )
   ); if

   ; Check diskspace
   (if (in #configcheckmask 2)
      (
         (set #availdspace (getdiskspace @default-dest))
         ; Information not available
         (if (not (< #availdspace 0))
            ; Not enough room
            (if (< #availdspace #appsize)
               (set #config_ok 0)
            ); if
         ); if
      )
   ); if

); p_CheckConfiguration

;-----------------------------------------------------------------------------
; TITLE        : p_GetDestination
; VERSION      : 0.10
; DATE         : 30.08.1998
; DESCRIPTION  : Get destination directory
; INPUT        : -
; OUTPUT       : @default-dest
;-----------------------------------------------------------------------------
; MODIFICATIONS: -
;-----------------------------------------------------------------------------
(procedure p_GetDestination #d1string #d2string #d3string

   (set @default-dest
      (askdir
         (prompt #d1string)
         (help #d2string)
         (default #d3string)
         (disk)
      ); askdir
   )
); p_GetDestination

;-----------------------------------------------------------------------------
; TITLE        : p_CopyFiles
; VERSION      : 0.10
; DATE         : 30.08.1998
; DESCRIPTION  : Copy files
; INPUT        : -
; OUTPUT       : -
;-----------------------------------------------------------------------------
; MODIFICATIONS: -
;-----------------------------------------------------------------------------
(procedure p_CopyFiles #c1string #c2string #c3string #c4string

   (copyfiles
      (prompt #c1string)
      (help #c2string)
      (source #c3string)
      (dest @default-dest)
      (pattern #c4string)
      (optional "force")
   ); copyfiles

); p_CopyFiles

;-----------------------------------------------------------------------------
; MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN MAIN
;-----------------------------------------------------------------------------
; Welcome message
(welcome #string2)

; Check Installer version
(p_EncodeVersion #installer_ver #installer_rev)
(if (< @installer-version #version)
   (
      (exit #string1 (quiet))
   )
); if

; Ask options
(set #installoptions
   (askoptions
      (prompt #string5)
      (help #string50)
      (choices #string51 #string52)
      (default %11)
   ); askoptions
)

; Suomennos
(if (in #installoptions 0)
   (
      ; Get destination directory
      (p_GetDestination #string6 #string61 #string62)

      ; Check configuration
      (p_CheckConfiguration)
      (if (< #config_ok 1)
         (exit #string4 (quiet))
      ); if

      ; Copy files
      (p_CopyFiles #string7 #string71 #string72 #string73)
   )
); if
; Ohjeet
(if (in #installoptions 1)
   (
      ; Get destination directory
      (p_GetDestination #string8 #string81 #string82)

      ; Check configuration
      (p_CheckConfiguration)
      (if (< #config_ok 1)
         (exit #string4 (quiet))
      ); if

      ; Copy files
      (p_CopyFiles #string9 #string91 #string92 #string93)
   )
); if

; All done
(exit #string3 (quiet))
