(version 2)
(include "sci.sh")
(exports
    0 proc990_0
)
(use "Main")
(use "Class_255_0")
(use "Print")
(use "DIcon")
(use "File")
(script 990)


(local
    gGameParseLang
    local1
    local2
    local3
    local4
    local5
    local6[15]
    local21[15]
    local36[15]
    local51[15]
    local66[25]

)
(procedure public (proc990_0 param1)
    (var temp0, temp1[33], temp34[100], temp134, temp135[50])
    (asm
code_097b:pushi   #parseLang
        pushi   0
        lag     gGame
        send    4
        sat     temp134
        pushi   #parseLang
        pushi   1
        pushi   1
        lag     gGame
        send    6
        pushi   #font
        pushi   1
        pushi   0
        pushi   198
        pushi   7
        pushi   1
        pushi   0
        pushi   0
        pushi   1
        pushi   0
        pushi   0
        pushi   990
        pushi   200
        pushi   5
        pushi   2
        lea     @temp1
        push    
        lsp     param1
        callk   StrCpy, 4
        push    
        pushi   29
        pushi   0
        pushi   20
        lsp     param1
        pushi   205
        pushi   8
        pushi   1
        pushi   27
        pushi   0
        pushi   0
        pushi   1
        pushi   0
        pushi   34
        pushi   990
        pushi   205
        pushi   8
        pushi   0
        pushi   38
        pushi   0
        pushi   0
        pushi   1
        pushi   50
        pushi   34
        pushi   990
        pushi   110
        pushi   0
        class   Print
        send    82
        sat     temp0
        pushi   #parseLang
        pushi   1
        lst     temp134
        lag     gGame
        send    6
        lat     temp0
        not     
        bnt     code_09f2
        ldi     0
        ret     
code_09f2:pushi   1
        lea     @temp1
        push    
        callk   StrLen, 2
        not     
        bnt     code_0a05
        pushi   1
        lea     @temp1
        push    
        callk   GetCWD, 2
code_0a05:pushi   1
        lea     @temp1
        push    
        callk   ValidPath, 2
        bnt     code_0a1f
        pushi   2
        lsp     param1
        lea     @temp1
        push    
        callk   StrCpy, 4
        ldi     1
        ret     
        jmp     code_097b
code_0a1f:pushi   7
        pushi   0
        pushi   990
        pushi   29
        pushi   0
        pushi   0
        pushi   1
        lea     @temp135
        push    
        callk   Message, 14
        pushi   3
        lea     @temp34
        push    
        lea     @temp135
        push    
        lea     @temp1
        push    
        callk   Format, 6
        pushi   #font
        pushi   1
        pushi   0
        pushi   198
        pushi   1
        lea     @temp34
        push    
        pushi   110
        pushi   0
        class   Print
        send    16
        jmp     code_097b
        ret     
    )
)


(procedure (localproc_075d)
    return 
        (if (== self Restore)
            0
        )(else
            (if (localproc_0a59())
                1
            )(else
                (if (local3)
                    2
                )(else
                    3
                )
            )
        )
)


(procedure (localproc_0a59)
    (if (< local3 20)
        CheckFreeSpace(global29)
    )
)


(procedure (localproc_0a67)
    (Print:
        font(0)
        addText(3 0 0 1 0 0 990)
        init()
    )
)


(class SRDialog of Dialog
    (properties
        elements 0
        size 0
        text 0
        font 0
        window 0
        theItem 0
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        time 0
        caller 0
        seconds 0
        lastSeconds 0
        eatTheMice 0
        lastTicks 0
    )

    (method (init param1 param2 param3)
        (var temp0[250])
        = gGameParseLang (send gGame:parseLang)
        (send gGame:parseLang(1))
        = window gGloryWindow
        = nsBottom 0
        = local3 GetSaveFiles((send gGame:name) param2 param3)
        (if (== local3 -1)
            return 0
        )
        = local5 localproc_075d()
        (if (== local5 1)
            (editI:
                text(StrCpy(param1 param2))
                font(gFont_2)
                setSize()
                moveTo(4 4)
            )
            (self:
                add(editI)
                setSize()
            )
        )
        (selectorI:
            text(param2)
            font(gFont_2)
            setSize()
            moveTo(4 + nsBottom 4)
            state(2)
        )
        (switch (local5)
            (case 0
                Message(0 990 26 0 0 1 @local6)
            )
            (case 1
                Message(0 990 28 0 0 1 @local6)
            )
            (default 
                Message(0 990 25 0 0 1 @local6)
            )
        )
        = local2 (+ (selectorI:nsRight) 4)
        (okI:
            text(@local6)
            setSize()
            moveTo(local2 (selectorI:nsTop))
            state(
                (if (((== local5 0) and not local3) or (== local5 3))
                    0
                )(else
                    3
                )
)
        )
        Message(0 990 24 0 0 1 @local21)
        (deleteI:
            text(@local21)
            setSize()
            moveTo(local2 + (okI:nsBottom) 4)
            state(
                (if (not local3)
                    0
                )(else
                    3
                )
)
        )
        Message(0 990 23 0 0 1 @local36)
        (changeDirI:
            text(@local36)
            setSize()
            moveTo(local2 + (deleteI:nsBottom) 4)
            state(& (changeDirI:state) $fff7)
        )
        Message(0 990 22 0 0 1 @local51)
        (cancelI:
            text(@local51)
            setSize()
            moveTo(local2 + (changeDirI:nsBottom) 4)
            state(& (cancelI:state) $fff7)
        )
        (self:
            add(selectorI okI deleteI changeDirI cancelI)
            setSize()
        )
        (switch (local5)
            (case 0
                Message(0 990 10 0 0 1 @temp0)
            )
            (case 1
                Message(0 990 11 0 0 1 @temp0)
            )
            (default 
                Message(0 990 30 0 0 1 @temp0)
            )
        )
        (textI:
            text(@temp0)
            setSize(- (- nsRight nsLeft) 8)
            moveTo(4 4)
        )
        = local2 (+ (textI:nsBottom) 4)
        (self:eachElementDo(181 0 local2))
        (self:
            add(textI)
            setSize()
            center()
            open(4 -1)
        )
        return 1
    )


    (method (doit param1)
        (var temp0, temp1, temp2, temp3[361], temp364[21], temp385[140])
        (asm
            pushSelf
            class   Restore
            eq?     
            bnt     code_0405
            lap     paramTotal
            bnt     code_0405
            lap     param1
            bnt     code_0405
            pushi   2
            pushi   0
            pushi   3
            lea     @temp385
            push    
            lofsa   "%ssg.dir"
            push    
            pushi   #name
            pushi   0
            lag     gGame
            send    4
            push    
            callk   Format, 6
            push    
            callk   FileIO, 4
            sat     temp0
            push    
            ldi     65535
            eq?     
            bnt     code_03fe
            ret     
code_03fe:  pushi   2
            pushi   1
            lst     temp0
            callk   FileIO, 4
code_0405:  pushi   #init
            pushi   3
            lsp     param1
            lea     @temp3
            push    
            lea     @temp364
            push    
            self    10
            not     
            bnt     code_041d
            ldi     65535
            ret     
code_041d:  lsl     local5
            dup     
            ldi     0
            eq?     
            bnt     code_0433
            lal     local3
            bnt     code_042e
            lofsa   okI
            jmp     code_044c
code_042e:  lofsa   changeDirI
            jmp     code_044c
code_0433:  dup     
            ldi     1
            eq?     
            bnt     code_043e
            lofsa   editI
            jmp     code_044c
code_043e:  dup     
            ldi     2
            eq?     
            bnt     code_0449
            lofsa   okI
            jmp     code_044c
code_0449:  lofsa   changeDirI
code_044c:  toss    
            sal     local1
            pushi   #doit
            pushi   1
            push    
            super   Dialog, 6
            sal     local2
            pushi   #indexOf
            pushi   1
            pushi   #cursor
            pushi   0
            lofsa   selectorI
            send    4
            push    
            lofsa   selectorI
            send    6
            sal     local4
            push    
            ldi     18
            mul     
            sat     temp2
            lsl     local2
            lofsa   changeDirI
            eq?     
            bnt     code_04c3
            pushi   #dispose
            pushi   0
            self    4
            pushi   1
            lsg     global29
            call    proc990_0, 2
            bnt     code_04ae
            pushi   3
            pushi   #name
            pushi   0
            lag     gGame
            send    4
            push    
            lea     @temp3
            push    
            lea     @temp364
            push    
            callk   GetSaveFiles, 6
            sal     local3
            push    
            ldi     65535
            eq?     
            bnt     code_04ae
            ldi     65535
            sat     temp1
            jmp     code_0747
code_04ae:  pushi   #init
            pushi   3
            lsp     param1
            lea     @temp3
            push    
            lea     @temp364
            push    
            self    10
            jmp     code_041d
code_04c3:  lsl     local5
            ldi     2
            eq?     
            bnt     code_050d
            lsl     local2
            lofsa   okI
            eq?     
            bnt     code_050d
            pushi   #dispose
            pushi   0
            self    4
            pushi   #doit
            pushi   1
            pushi   2
            lsp     param1
            lat     temp2
            lea     @temp3
            push    
            callk   StrCpy, 4
            push    
            lofsa   GetReplaceName
            send    6
            bnt     code_04f8
            lal     local4
            lati    temp364
            sat     temp1
            jmp     code_0747
code_04f8:  pushi   #init
            pushi   3
            lsp     param1
            lea     @temp3
            push    
            lea     @temp364
            push    
            self    10
            jmp     code_041d
code_050d:  lsl     local5
            ldi     1
            eq?     
            bnt     code_05ce
            lsl     local2
            lofsa   okI
            eq?     
            bt      code_0526
            lsl     local2
            lofsa   editI
            eq?     
            bnt     code_05ce
code_0526:  pushi   1
            lsp     param1
            callk   StrLen, 2
            push    
            ldi     0
            eq?     
            bnt     code_0551
            pushi   #dispose
            pushi   0
            self    4
            pushi   0
            call    localproc_0a67, 0
            pushi   #init
            pushi   3
            lsp     param1
            lea     @temp3
            push    
            lea     @temp364
            push    
            self    10
            jmp     code_041d
code_0551:  ldi     65535
            sat     temp1
            ldi     0
            sal     local2
code_0559:  lsl     local2
            lal     local3
            lt?     
            bnt     code_0578
            pushi   2
            lsp     param1
            lsl     local2
            ldi     18
            mul     
            lea     @temp3
            push    
            callk   StrCmp, 4
            sat     temp1
            not     
            bt      code_0578
            +al     local2
            jmp     code_0559
code_0578:  lat     temp1
            not     
            bnt     code_0587
            lal     local2
            lati    temp364
            sat     temp1
            jmp     code_0747
code_0587:  lsl     local3
            ldi     20
            eq?     
            bnt     code_0598
            lal     local4
            lati    temp364
            sat     temp1
            jmp     code_0747
code_0598:  ldi     0
            sat     temp1
code_059c:  ldi     1
            bnt     code_0747
            ldi     0
            sal     local2
code_05a5:  lsl     local2
            lal     local3
            lt?     
            bnt     code_05ba
            lst     temp1
            lal     local2
            lati    temp364
            eq?     
            bt      code_05ba
            +al     local2
            jmp     code_05a5
code_05ba:  lsl     local2
            lal     local3
            eq?     
            bnt     code_05c4
            jmp     code_0747
code_05c4:  +at     temp1
            jmp     code_059c
            jmp     code_0747
            jmp     code_041d
code_05ce:  lsl     local2
            lofsa   deleteI
            eq?     
            bnt     code_06f3
            pushi   #dispose
            pushi   0
            self    4
            pushi   #addText
            pushi   7
            pushi   12
            pushi   0
            pushi   0
            pushi   1
            pushi   0
            pushi   0
            pushi   990
            pushi   205
            pushi   8
            pushi   0
            pushi   31
            pushi   0
            pushi   0
            pushi   1
            pushi   0
            pushi   35
            pushi   990
            pushi   205
            pushi   8
            pushi   1
            pushi   32
            pushi   0
            pushi   0
            pushi   1
            pushi   50
            pushi   35
            pushi   990
            pushi   110
            pushi   0
            class   Print
            send    62
            not     
            bnt     code_062d
            pushi   #init
            pushi   3
            lsp     param1
            lea     @temp3
            push    
            lea     @temp364
            push    
            self    10
            jmp     code_041d
code_062d:  pushi   #name
            pushi   1
            pushi   3
            pushi   7
            lea     @temp385
            push    
            pushi   #name
            pushi   0
            lag     gGame
            send    4
            push    
            callk   DeviceInfo, 6
            push    
            pushi   189
            pushi   1
            pushi   2
            pushi   #new
            pushi   0
            class   File
            send    4
            sat     temp0
            send    12
            ldi     2570
            sat     temp1
            ldi     0
            sal     local2
code_065f:  lsl     local2
            lal     local3
            lt?     
            bnt     code_06a0
            lsl     local2
            lal     local4
            ne?     
            bnt     code_069c
            pushi   #write
            pushi   2
            lal     local2
            lea     @temp364
            push    
            pushi   2
            lat     temp0
            send    8
            pushi   350
            pushi   #x
            lsl     local2
            ldi     18
            mul     
            lea     @temp3
            push    
            lat     temp0
            send    6
            pushi   #write
            pushi   2
            lea     @temp1
            push    
            pushi   1
            lat     temp0
            send    8
code_069c:  +al     local2
            jmp     code_065f
code_06a0:  ldi     65535
            sat     temp1
            pushi   #write
            pushi   2
            lea     @temp1
            push    
            pushi   2
            pushi   354
            pushi   0
            pushi   111
            pushi   0
            lat     temp0
            send    16
            pushi   4
            pushi   8
            lea     @temp385
            push    
            pushi   #name
            pushi   0
            lag     gGame
            send    4
            push    
            lal     local4
            lsti    temp364
            callk   DeviceInfo, 8
            pushi   2
            pushi   4
            lea     @temp385
            push    
            callk   FileIO, 4
            pushi   #init
            pushi   3
            lsp     param1
            lea     @temp3
            push    
            lea     @temp364
            push    
            self    10
            jmp     code_041d
code_06f3:  lsl     local2
            lofsa   okI
            eq?     
            bnt     code_0707
            lal     local4
            lati    temp364
            sat     temp1
            jmp     code_0747
            jmp     code_041d
code_0707:  lsl     local2
            ldi     65535
            eq?     
            bt      code_0716
            lsl     local2
            lofsa   cancelI
            eq?     
            bnt     code_071f
code_0716:  ldi     65535
            sat     temp1
            jmp     code_0747
            jmp     code_041d
code_071f:  lsl     local5
            ldi     1
            eq?     
            bnt     code_041d
            pushi   #cursor
            pushi   1
            pushi   1
            pushi   2
            lsp     param1
            lat     temp2
            lea     @temp3
            push    
            callk   StrCpy, 4
            push    
            callk   StrLen, 2
            push    
            pushi   80
            pushi   0
            lofsa   editI
            send    10
            jmp     code_041d
code_0747:  pushi   1
            pushi   993
            callk   DisposeScript, 2
            pushi   #dispose
            pushi   0
            self    4
            pushi   1
            pushi   990
            callk   DisposeScript, 2
            lat     temp1
            ret     
        )
    )


    (method (dispose param1)
        (send gGame:parseLang(gGameParseLang))
        (super:dispose(rest param1))
    )

)
(class Restore of SRDialog
    (properties
        elements 0
        size 0
        text 0
        font 0
        window 0
        theItem 0
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        time 0
        caller 0
        seconds 0
        lastSeconds 0
        eatTheMice 0
        lastTicks 0
    )

    (method (init param1)
        Message(0 990 20 0 0 1 @local66)
        = text @local66
        (super:init(rest param1))
    )

)
(class Save of SRDialog
    (properties
        elements 0
        size 0
        text 0
        font 0
        window 0
        theItem 0
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        time 0
        caller 0
        seconds 0
        lastSeconds 0
        eatTheMice 0
        lastTicks 0
    )

    (method (init param1)
        Message(0 990 21 0 0 1 @local66)
        = text @local66
        (super:init(rest param1))
    )

)
(instance GetReplaceName of Dialog
    (properties)

    (method (doit param1)
        (var temp0, gGameParseLang, temp2[15], temp17[15], temp32[15], temp47[15])
        = gGameParseLang (send gGame:parseLang)
        (send gGame:parseLang(1))
        = window gGloryWindow
        Message(0 990 33 0 0 1 @temp2)
        (text1:
            text(@temp2)
            setSize()
            moveTo(4 4)
        )
        (self:
            add(text1)
            setSize()
        )
        (oldName:
            text(param1)
            font(gFont_2)
            setSize()
            moveTo(4 nsBottom)
        )
        (self:
            add(oldName)
            setSize()
        )
        Message(0 990 34 0 0 1 @temp17)
        (text2:
            text(@temp17)
            setSize()
            moveTo(4 nsBottom)
        )
        (self:
            add(text2)
            setSize()
        )
        (newName:
            text(param1)
            font(gFont_2)
            setSize()
            moveTo(4 nsBottom)
        )
        (self:
            add(newName)
            setSize()
        )
        Message(0 990 33 0 0 1 @temp32)
        (button1:
            text(@temp32)
            nsLeft(0)
            nsTop(0)
            setSize()
        )
        Message(0 990 38 0 0 1 @temp47)
        (button2:
            text(@temp47)
            nsLeft(0)
            nsTop(0)
            setSize()
        )
        (button2:moveTo((- nsRight (+ (button2:nsRight) 4)) nsBottom))
        (button1:moveTo((- (button2:nsLeft) (+ (button1:nsRight) 4)) nsBottom))
        (self:
            add(button1 button2)
            setSize()
            center()
            open(0 -1)
        )
        = temp0 (super:doit(newName))
        (self:dispose())
        (if (not StrLen(param1))
            localproc_0a67()
            = temp0 0
        )
        (send gGame:parseLang(gGameParseLang))
        return 
            (if (== temp0 newName)
            )(else
                == temp0 button1
            )
    )

)
(instance selectorI of DSelector
    (properties
        x 36
        y 8
    )
)
(instance editI of DEdit
    (properties
        max 35
    )
)
(instance okI of DButton
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance cancelI of DButton
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance changeDirI of DButton
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance deleteI of DButton
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance textI of DText
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance text1 of DText
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance text2 of DText
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance oldName of DText
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance newName of DEdit
    (properties
        max 35
    )
)
(instance button1 of DButton
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
(instance button2 of DButton
    (properties)

    (method (dispose)
        (super:dispose(1))
    )

)
