summaryrefslogtreecommitdiff
path: root/play.sh
blob: 92934e58ab3c06672b78083c0aada96ce1c1ab9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/zsh -f

log () {
    echo "*** $@"
}

exp () {
    log "Setting envvar '$1' to '$2'"
    export $1=$2
}

exc () {
    if [[ $1 == "-f" ]]; then
        fork=1
        msg=" (forking)"
        shift
    fi

    log "Executing${msg}:"
    echo $@
    
    sleep 3

    if [[ -n $fork ]]; then
        exec "$@" &!
    else
        eval "$@"
    fi
}

EXPORT () {
    local name=$1
    shift

    for f in $@; do
        eval "$f () { ${name}_${f}; }"
    done
}

inherit () {
    source games/$1
}

typeset -A ENV EENV
BIN=$0

source default

if [[ $1 == "-x" ]]; then
    source games/$2
    setenv
    prepare
    run
else
    GAME=$1

    list () {
        echo "Games are:"
        for k in games/*(.:t); do
            echo "\t> $k"
        done
    }
    
    if [[ -z $GAME || ! -e games/$GAME ]]; then
        [[ ! -e games/$GAME ]] && log "Game '$GAME' not found"
        list
        exit 1
    else
        log "Launching '$GAME'"
        source games/$GAME
        execute
    fi
fi