]> Pileus Git - ~andy/rhawk/blob - test.awk
Save game after flipping the table
[~andy/rhawk] / test.awk
1 # Functions
2 function say(who, msg)
3 {
4         print ":" who"!u@h PRIVMSG #rhtest :" msg
5 }
6
7 function auth(user, nick)
8 {
9         print ":" nick "!u@c ACCOUNT " user
10 }
11
12 function error(msg)
13 {
14         print "error: " msg > "/dev/stderr"
15 }
16
17 function debug(msg)
18 {
19         print msg > "/dev/stderr"
20 }
21
22 function command(who, cmd, i)
23 {
24         arg=cmd
25         gsub(/\<[nbpYNS]|[+-]/, "", arg)
26         if      (cmd ~ /^\./)     0 # nop
27         else if (cmd ~ /^n/)      say(who, ".newgame " arg)
28         else if (cmd ~ /^e/)      say(who, ".endgame ")
29         else if (cmd ~ /^j/)      say(who, ".join")
30         else if (cmd ~ /^Y/)      say(who, ".allow " arg)
31         else if (cmd ~ /^N/)      say(who, ".deny " arg)
32         else if (cmd ~ /^S/)      say(who, ".show ")
33         else if (cmd ~ /^o/)      say("andy753421", ".order " who " " i)
34         else if (cmd ~ /^d/)      say("andy753421", ".deal " who " " hand[who])
35         else if (cmd ~ /^l/)      say(who, ".look")
36         else if (cmd ~ /^b/)      say(who, ".bid "  arg)
37         else if (cmd ~ /^s/)      say(who, ".score")
38         else if (cmd ~ /^B/)      say(who, ".bids")
39         else if (cmd ~ /^t/)      say(who, ".tricks")
40         else if (cmd ~ /^T/)      say(who, ".turn")
41         else if (cmd ~ /^p/)      say(who, ".pass " arg)
42         else if (arg ~ /[shdc]$/) say(who, ".play " arg)
43         else                      error("unknown cmd '" cmd "'")
44 }
45
46 function reset()
47 {
48         nturns = 0
49         delete players # players[i]   -> "name"
50         delete turns   # turns[pi][i] -> "cmd"
51 }
52
53 # Rules
54 BEGIN { 
55         auth("andy753421", "andy753421")
56         reset()
57 }
58
59 //  { gsub(/#.*/, "") }
60
61 /^[^ ]+:/ {
62         gsub(/:/, " ")
63         split($1, parts, "/");
64         pi = length(players)
65         if (NF-2 > nturns)
66                 nturns = NF-1
67         for (i=2; i<=NF; i++)
68                 turns[pi][i-2] = $i
69         who         = parts[1]
70         players[pi] = parts[1]
71         auths[pi]   = parts[2]
72         hand[who]   = $0
73         gsub(/^\w*(\/\w*)?|[nbpYN-]\w+|\<[nejadowlbsBtpdS]\>|[.+]/, "", hand[who])
74         gsub(/^ *| *$/, "", hand[who])
75         gsub(/  */, " ", hand[who])
76         print who ": " hand[who] > "/dev/stderr"
77         say(who, "unicode :(")
78         say(who, "colors :(")
79 }
80
81 /^\s*$/ {
82         for (pi=0; pi<length(players); pi++)
83                 if (auths[pi])
84                         auth(auths[pi], players[pi])
85         for (ti=0; ti<nturns; ti++)
86                 for (pi=0; pi<length(players); pi++)
87                         command(players[pi], turns[pi][ti], pi)
88         reset()
89 }