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


(local
    local0
    local1
    local2
    local3
    local4
    local5[4] = (2606 2614 2623 2623 )
    local9[4] = (2631 2679 2720 2720 )

)
(procedure public (proc990_0 param1)
    (var temp0, temp1[33], temp34[40])
    (asm
code_0748:pushi   13
        pushi   990
        pushi   1
        pushi   33
        pushi   0
        pushi   41
        pushi   2
        lea     @temp1
        push    
        lsp     param1
        callk   StrCpy, 4
        push    
        pushi   29
        pushi   81
        lofsa   "OK"
        push    
        pushi   1
        pushi   81
        lofsa   "Cancel"
        push    
        pushi   0
        calle   proc255_0, 26
        sat     temp0
        not     
        bnt     code_077b
        ldi     0
        ret     
code_077b:pushi   1
        lea     @temp1
        push    
        callk   StrLen, 2
        not     
        bnt     code_078f
        pushi   1
        lea     @temp1
        push    
        callk   GetCWD, 2
code_078f:pushi   1
        lea     @temp1
        push    
        callk   ValidPath, 2
        bnt     code_07aa
        pushi   2
        lsp     param1
        lea     @temp1
        push    
        callk   StrCpy, 4
        ldi     1
        ret     
        jmp     code_0748
code_07aa:pushi   3
        pushi   4
        lea     @temp34
        push    
        pushi   990
        pushi   2
        lea     @temp1
        push    
        callk   Format, 8
        push    
        pushi   33
        pushi   0
        calle   proc255_0, 6
        jmp     code_0748
        ret     
    )
)


(procedure (localproc_049d)
    return 
        (if (== self Restore)
            0
        )(else
            (if (localproc_07c9())
                1
            )(else
                (if (local2)
                    2
                )(else
                    3
                )
            )
        )
)


(procedure (localproc_07c9)
    (if (< local2 20)
        CheckFreeSpace(global30)
    )
)


(procedure (localproc_07d8)
    proc255_0(990 3 33 0)
)


(class SysWindow of Obj
    (properties
        top 0
        left 0
        bottom 0
        right 0
        color 0
        back 15
        priority -1
        window 0
        type $0000
        title 0
        brTop 0
        brLeft 0
        brBottom 190
        brRight 320
    )

    (method (dispose)
        (if (window)
            DisposeWindow(window)
            = window 0
        )
        (super:dispose())
    )


    (method (open)
        = window NewWindow(top left bottom right title type priority color back)
    )

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

    (method (init param1 param2 param3)
        = window SysWindow
        = nsBottom 0
        = local2 GetSaveFiles((send gGame:name) param2 param3)
        (if (== local2 -1)
            return 0
        )
        = local4 localproc_049d()
        (if (== local4 1)
            (editI:
                text(StrCpy(param1 param2))
                font(global23)
                setSize()
                moveTo(4 4)
            )
            (self:
                add(editI)
                setSize()
            )
        )
        (selectorI:
            text(param2)
            font(global23)
            setSize()
            moveTo(4 + nsBottom 4)
            state(2)
        )
        = local1 (+ (selectorI:nsRight) 4)
        (okI:
            text(local5[local4])
            setSize()
            moveTo(local1 (selectorI:nsTop))
            state(
                (if (== local4 3)
                    0
                )(else
                    3
                )
)
        )
        (cancelI:
            setSize()
            moveTo(local1 + (okI:nsBottom) 4)
            state(& (cancelI:state) $fff7)
        )
        (changeDirI:
            setSize()
            moveTo(local1 + (cancelI:nsBottom) 4)
            state(& (changeDirI:state) $fff7)
        )
        (self:
            add(selectorI okI cancelI changeDirI)
            setSize()
        )
        (textI:
            text(local9[local4])
            setSize(- (- nsRight nsLeft) 8)
            moveTo(4 4)
        )
        = local1 (+ (textI:nsBottom) 4)
        (self:eachElementDo(#move 0 local1))
        (self:
            add(textI)
            setSize()
            center()
            open(4 15)
        )
        return 1
    )


    (method (doit param1)
        (var temp0, temp1, temp2, temp3, temp4[361], temp365[21], temp386[40])
        (asm
            pushSelf
            class   Restore
            eq?     
            bnt     code_026e
            lap     paramTotal
            bnt     code_026e
            lap     param1
            bnt     code_026e
            pushi   2
            pushi   0
            pushi   4
            lea     @temp386
            push    
            pushi   990
            pushi   0
            pushi   #name
            pushi   0
            lag     gGame
            send    4
            push    
            callk   Format, 8
            push    
            callk   FileIO, 4
            sat     temp1
            push    
            ldi     65535
            eq?     
            bnt     code_0267
            ret     
code_0267:  pushi   2
            pushi   1
            lst     temp1
            callk   FileIO, 4
code_026e:  pushi   #init
            pushi   3
            lsp     param1
            lea     @temp4
            push    
            lea     @temp365
            push    
            self    10
            not     
            bnt     code_0287
            ldi     65535
            ret     
code_0287:  lsl     local4
            dup     
            ldi     0
            eq?     
            bnt     code_02a1
            lal     local2
            bnt     code_02be
            lofsa   okI
            jmp     code_02be
            lofsa   changeDirI
            jmp     code_02be
code_02a1:  dup     
            ldi     1
            eq?     
            bnt     code_02ae
            lofsa   editI
            jmp     code_02be
code_02ae:  dup     
            ldi     2
            eq?     
            bnt     code_02bb
            lofsa   okI
            jmp     code_02be
code_02bb:  lofsa   changeDirI
code_02be:  toss    
            sal     local0
            pushi   #doit
            pushi   1
            push    
            super   Dialog, 6
            sal     local1
            pushi   #indexOf
            pushi   1
            pushi   #cursor
            pushi   0
            lofsa   selectorI
            send    4
            push    
            lofsa   selectorI
            send    6
            sal     local3
            push    
            ldi     18
            mul     
            sat     temp3
            lsl     local1
            lofsa   changeDirI
            eq?     
            bnt     code_0385
            pushi   1
            lsg     global30
            call    proc990_0, 2
            bnt     code_0287
            pushi   3
            pushi   #name
            pushi   0
            lag     gGame
            send    4
            push    
            lea     @temp4
            push    
            lea     @temp365
            push    
            callk   GetSaveFiles, 6
            sal     local2
            push    
            ldi     65535
            eq?     
            bnt     code_031d
            ldi     65535
            sat     temp2
            jmp     code_0495
code_031d:  lal     local4
            sat     temp0
            pushi   0
            call    localproc_049d, 0
            sal     local4
            push    
            dup     
            ldi     0
            eq?     
            bnt     code_0333
            jmp     code_0379
code_0333:  dup     
            lat     temp0
            eq?     
            bnt     code_0364
            pushi   #contains
            pushi   1
            lofsa   editI
            push    
            self    6
            bnt     code_0379
            pushi   #cursor
            pushi   1
            pushi   1
            pushi   2
            lsp     param1
            lea     @temp4
            push    
            callk   StrCpy, 4
            push    
            callk   StrLen, 2
            push    
            pushi   83
            pushi   0
            lofsa   editI
            send    10
            jmp     code_0379
code_0364:  pushi   #dispose
            pushi   0
            pushi   93
            pushi   3
            lsp     param1
            lea     @temp4
            push    
            lea     @temp365
            push    
            self    14
code_0379:  toss    
            pushi   #draw
            pushi   0
            lofsa   selectorI
            send    4
            jmp     code_0287
code_0385:  lsl     local4
            ldi     2
            eq?     
            bnt     code_03bb
            lsl     local1
            lofsa   okI
            eq?     
            bnt     code_03bb
            pushi   #doit
            pushi   1
            pushi   2
            lsp     param1
            lat     temp3
            lea     @temp4
            push    
            callk   StrCpy, 4
            push    
            lofsa   GetReplaceName
            send    6
            bnt     code_0287
            lal     local3
            lati    temp365
            sat     temp2
            jmp     code_0495
            jmp     code_0287
code_03bb:  lsl     local4
            ldi     1
            eq?     
            bnt     code_043c
            lsl     local1
            lofsa   okI
            eq?     
            bt      code_03d5
            lsl     local1
            lofsa   editI
            eq?     
            bnt     code_043c
code_03d5:  pushi   1
            lsp     param1
            callk   StrLen, 2
            push    
            ldi     0
            eq?     
            bnt     code_03ea
            pushi   0
            call    localproc_07d8, 0
            jmp     code_0287
code_03ea:  ldi     65535
            sat     temp2
            ldi     0
            sal     local1
code_03f2:  lsl     local1
            lal     local2
            lt?     
            bnt     code_0414
            pushi   2
            lsp     param1
            lsl     local1
            ldi     18
            mul     
            lea     @temp4
            push    
            callk   StrCmp, 4
            sat     temp2
            not     
            bnt     code_040f
code_040f:  +al     local1
            jmp     code_03f2
code_0414:  lat     temp2
            not     
            bnt     code_0422
            lal     local1
            lati    temp365
            jmp     code_0434
code_0422:  lsl     local2
            ldi     20
            eq?     
            bnt     code_0432
            lal     local3
            lati    temp365
            jmp     code_0434
code_0432:  lal     local2
code_0434:  sat     temp2
            jmp     code_0495
            jmp     code_0287
code_043c:  lsl     local1
            lofsa   okI
            eq?     
            bnt     code_0452
            lal     local3
            lati    temp365
            sat     temp2
            jmp     code_0495
            jmp     code_0287
code_0452:  lsl     local1
            ldi     0
            eq?     
            bt      code_0463
            lsl     local1
            lofsa   cancelI
            eq?     
            bnt     code_046d
code_0463:  ldi     65535
            sat     temp2
            jmp     code_0495
            jmp     code_0287
code_046d:  lsl     local4
            ldi     1
            eq?     
            bnt     code_0287
            pushi   #cursor
            pushi   1
            pushi   1
            pushi   2
            lsp     param1
            lat     temp3
            lea     @temp4
            push    
            callk   StrCpy, 4
            push    
            callk   StrLen, 2
            push    
            pushi   83
            pushi   0
            lofsa   editI
            send    10
            jmp     code_0287
code_0495:  pushi   #dispose
            pushi   0
            self    4
            lat     temp2
            ret     
        )
    )

)
(class Restore of SRDialog
    (properties
        elements 0
        size 0
        text 2893
        window 0
        theItem 0
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        time 0
        busy 0
        seconds 0
        lastSeconds 0
    )
)
(class Save of SRDialog
    (properties
        elements 0
        size 0
        text 2908
        window 0
        theItem 0
        nsTop 0
        nsLeft 0
        nsBottom 0
        nsRight 0
        time 0
        busy 0
        seconds 0
        lastSeconds 0
    )
)
(instance GetReplaceName of Dialog
    (properties)

    (method (doit param1)
        (var temp0)
        = window SysWindow
        (text1:
            setSize()
            moveTo(4 4)
        )
        (self:
            add(text1)
            setSize()
        )
        (oldName:
            text(param1)
            font(global23)
            setSize()
            moveTo(4 nsBottom)
        )
        (self:
            add(oldName)
            setSize()
        )
        (text2:
            setSize()
            moveTo(4 nsBottom)
        )
        (self:
            add(text2)
            setSize()
        )
        (newName:
            text(param1)
            font(global23)
            setSize()
            moveTo(4 nsBottom)
        )
        (self:
            add(newName)
            setSize()
        )
        (button1:
            nsLeft(0)
            nsTop(0)
            setSize()
        )
        (button2:
            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 15)
        )
        = temp0 (super:doit(newName))
        (self:dispose())
        (if (not StrLen(param1))
            localproc_07d8()
            = temp0 0
        )
        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)
)
(instance cancelI of DButton
    (properties
        text 2970
    )
)
(instance changeDirI of DButton
    (properties
        text 2987
    )
)
(instance textI of DText
    (properties
        font 0
    )
)
(instance text1 of DText
    (properties
        text 2623
        font 0
    )
)
(instance text2 of DText
    (properties
        text 3028
        font 0
    )
)
(instance oldName of DText
    (properties)
)
(instance newName of DEdit
    (properties
        max 35
    )
)
(instance button1 of DButton
    (properties
        text 2623
    )
)
(instance button2 of DButton
    (properties
        text 2943
    )
)
