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.look) {
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();
50 if (txt.matches(".*turn!.*")) {
51 this.cards.pile = Spades.getCards(txt, ".*turn! \\((.*)\\)");
52 this.cards.requestRender();
54 if (txt.startsWith("It is")) {
55 this.cards.turn = txt.replaceAll("It is (\\w+)'s (\\w+)!.*", "$1");
56 this.cards.state = txt.replaceAll("It is (\\w+)'s (\\w+)!.*", "$2");
57 this.cards.requestRender();
59 if (txt.startsWith("it is your") && msg.to != "") {
60 this.cards.turn = msg.to;
61 this.cards.state = txt.replaceAll("it is your (\\w+)!", "$1");
62 this.cards.requestRender();
67 public boolean onConnect()
69 Os.debug("Spades: onConnect");
70 this.send(this.admin, ".status");
71 this.send(this.admin, ".turn");
76 public boolean onBid(int bid)
78 Os.debug("Spades: onBid - " + bid);
79 return this.send(".bid " + bid);
82 public boolean onPass(String card)
84 Os.debug("Spades: onPass - " + card);
85 return this.send(this.admin, ".pass " + card);
88 public boolean onLook()
90 Os.debug("Spades: onLook");
91 return this.send(".look");
94 public boolean onPlay(String card)
96 Os.debug("Spades: onPlay - " + card);
97 return this.send(".play " + card);
100 public boolean onTurn()
102 Os.debug("Spades: onTurn");
103 return this.send(".turn");
106 /* Helper functions */
107 private boolean send(String dst, String msg)
109 if (this.task == null)
111 this.task.send(dst, msg);
114 private boolean send(String msg)
116 if (this.task == null)