From 2f9d880866d34b9bda6fcb8fad43ca0a2b33bb0d Mon Sep 17 00:00:00 2001 From: Andy Spencer Date: Mon, 22 Apr 2013 02:56:50 +0000 Subject: [PATCH] Add cards display from IRC messages --- src/org/pileus/spades/Cards.java | 10 ++------ src/org/pileus/spades/Main.java | 4 +-- src/org/pileus/spades/Message.java | 8 ++++++ src/org/pileus/spades/Spades.java | 40 ++++++++++++++++++++++++++---- 4 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/org/pileus/spades/Cards.java b/src/org/pileus/spades/Cards.java index e4c566e..1cf4c3e 100644 --- a/src/org/pileus/spades/Cards.java +++ b/src/org/pileus/spades/Cards.java @@ -144,14 +144,8 @@ public class Cards extends GLSurfaceView implements GLSurfaceView.Renderer this.ylim = 0.4f; - this.hand = new String[] { - "As", "7s", "6s", "6h", "2h", "Ac", - "Kc", "3c", "10d", "9d", "8d", "7d", "2d" - }; - - this.pile = new String[] { - "As", "7s", "6s" - }; + this.hand = "As Ks Qs Js 10s 9s 8s 7s 6s 5s 4s 3s 2s".split(" "); + this.pile = "Ah Ac Ad".split(" "); this.index = new HashMap(52); for (int i = 0; i < 52; i++) diff --git a/src/org/pileus/spades/Main.java b/src/org/pileus/spades/Main.java index 56691e4..f85e06f 100644 --- a/src/org/pileus/spades/Main.java +++ b/src/org/pileus/spades/Main.java @@ -257,14 +257,14 @@ public class Main extends Activity .setContent(R.id.debug)); // Setup Spades game and cards view - this.game = new Spades(); + this.game = new Spades("rhawk"); this.cards = new Cards(this); this.game.cards = this.cards; this.cards.game = this.game; this.spades.addView(cards); - + // Attach to background service this.register(); diff --git a/src/org/pileus/spades/Message.java b/src/org/pileus/spades/Message.java index d13ea1c..f241c8d 100644 --- a/src/org/pileus/spades/Message.java +++ b/src/org/pileus/spades/Message.java @@ -58,6 +58,14 @@ public class Message public String to = ""; public String txt = ""; + /* Static methods */ + public static String clean(String msg) + { + String num = "0?[0-9]|1[0-5]"; + return msg.replaceAll("[\\002\\011\\017\\025]", "") + .replaceAll("[\\003\\013]("+num+")(,"+num+")?", ""); + } + /* Private methods */ private String notnull(String string) { diff --git a/src/org/pileus/spades/Spades.java b/src/org/pileus/spades/Spades.java index a9fd150..f7924bc 100644 --- a/src/org/pileus/spades/Spades.java +++ b/src/org/pileus/spades/Spades.java @@ -2,19 +2,49 @@ package org.pileus.spades; public class Spades { - /* Private data */ - public Task task; - public Cards cards; + /* Properties */ + public Task task; + public Cards cards; + public String admin; + + /* Static methods */ + private static String[] getCards(String msg, String regex) + { + String cards = Message.clean(msg) + .replaceAll(regex, "$1") + .replaceAll(",", " ") + .replaceAll("♠", "s") + .replaceAll("♥", "h") + .replaceAll("♦", "d") + .replaceAll("♣", "c"); + Os.debug("Cards: getCards - [" + cards + "]:" + Os.base64(cards)); + return cards.split("\\s+"); + } /* Widget callback functions */ - public Spades() + public Spades(String admin) { + this.admin = admin; } /* IRC Callbacks */ public void onMessage(Message msg) { - Os.debug("Spades: onMessage"); + Os.debug("Spades: onMessage - " + msg.msg); + if (msg.type != Message.Type.PRIVMSG) + return; + if (!msg.from.equals(this.admin)) + return; + + String txt = msg.txt; + if (txt.startsWith("You have: ")) { + this.cards.hand = Spades.getCards(txt, "You have: (.*)"); + this.cards.requestRender(); + } + if (txt.matches("turn!")) { + this.cards.pile = Spades.getCards(txt, ".*turn! (.*)"); + this.cards.requestRender(); + } } /* UI Callbacks */ -- 2.43.2