1 package org.pileus.spades;
12 private static String[] getCards(String msg, String regex)
15 .replaceAll(regex, "$1")
20 .replaceAll("♣", "c");
21 Os.debug("Cards: getCards - [" + cards + "]:" + Os.base64(cards));
22 return cards.split("\\s+");
25 /* Widget callback functions */
26 public Spades(String admin)
32 public void onMessage(Message msg)
34 Os.debug("Spades: onMessage - " + msg.msg);
35 if (msg.type != Message.Type.PRIVMSG)
37 if (!msg.from.equals(this.admin))
41 if (txt.matches(".*turn!.*") && !this.looked) {
42 this.send(this.admin, ".look");
45 if (txt.startsWith("You have: ")) {
46 this.cards.hand = Spades.getCards(txt, "You have: (.*)");
47 this.cards.requestRender();
49 if (txt.matches(".*turn!.*")) {
50 this.cards.pile = Spades.getCards(txt, ".*turn! \\((.*)\\)");
51 this.cards.requestRender();
53 if (txt.startsWith("It is")) {
54 this.cards.turn = txt.replaceAll("It is (\\w+)'s (\\w+)!.*", "$1");
55 this.cards.state = txt.replaceAll("It is (\\w+)'s (\\w+)!.*", "$2");
56 this.cards.requestRender();
58 if (txt.startsWith("^it is your")) {
59 this.cards.turn = msg.to;
60 this.cards.requestRender();
65 public boolean onConnect()
67 Os.debug("Spades: onConnect");
69 this.send(this.admin, ".status");
70 this.send(this.admin, ".turn");
74 public boolean onBid(int bid)
76 Os.debug("Spades: onBid - " + bid);
77 return this.send(".bid " + bid);
80 public boolean onPass(String card)
82 Os.debug("Spades: onPass - " + card);
83 return this.send(this.admin, ".pass " + card);
86 public boolean onLook()
88 Os.debug("Spades: onLook");
89 return this.send(".look");
92 public boolean onPlay(String card)
94 Os.debug("Spades: onPlay - " + card);
95 return this.send(".play " + card);
98 public boolean onTurn()
100 Os.debug("Spades: onTurn");
101 return this.send(".turn");
104 /* Helper functions */
105 private boolean send(String dst, String msg)
107 if (this.task == null)
109 this.task.send(dst, msg);
112 private boolean send(String msg)
114 if (this.task == null)