Mercurial > hg > ristipolku
changeset 180:fa9f29387cff
Implement a very simplistic message queue system.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 16 Mar 2017 12:22:30 +0200 |
parents | ac5cf78a1cd2 |
children | 2e033eced6e5 |
files | game/Engine.java game/IDMWidget.java game/IDMWindow.java |
diffstat | 3 files changed, 58 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/game/Engine.java Thu Mar 16 10:47:09 2017 +0200 +++ b/game/Engine.java Thu Mar 16 12:22:30 2017 +0200 @@ -503,7 +503,7 @@ GameBoard lauta = null; InputStream musa; - IDMContainer widgets; + IDMWindow widgets; AboutBox aboutBox; public void dbg(String msg) @@ -552,7 +552,7 @@ } // Create IDM GUI widgets - widgets = new IDMContainer(); + widgets = new IDMWindow(); lauta = new GameBoard(new IDMPoint(95, 130), 63); widgets.add(lauta); @@ -764,6 +764,13 @@ } catch (InterruptedException x) { } + + String msg; + do { + msg = widgets.getMessage(); + if (msg != null && msg == "NEWGAME") + startNewGame(); + } while (msg != null); } } @@ -776,7 +783,7 @@ public void clicked() { - startNewGame(); + sendMessage("NEWGAME"); } }
--- a/game/IDMWidget.java Thu Mar 16 10:47:09 2017 +0200 +++ b/game/IDMWidget.java Thu Mar 16 12:22:30 2017 +0200 @@ -265,4 +265,18 @@ { modalWidget = m; } + + public void sendMessage(String msg) + { + if (parent != null) + parent.sendMessage(msg); + } + + public String getMessage() + { + if (parent != null) + return parent.getMessage(); + else + return null; + } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/game/IDMWindow.java Thu Mar 16 12:22:30 2017 +0200 @@ -0,0 +1,34 @@ +/* + * Ristipolku IDM window + * (C) Copyright 2011 Matti 'ccr' Hämäläinen <ccr@tnsp.org> + */ +package game; + +import java.awt.*; +import java.awt.event.*; +import java.util.*; + + + +public class IDMWindow extends IDMContainer +{ + private ArrayList<String> messages; + + public IDMWindow() + { + messages = new ArrayList<String>(); + } + + public void sendMessage(String msg) + { + messages.add(0, msg); + } + + public String getMessage() + { + if (messages.size() > 0) + return messages.remove(0); + else + return null; + } +}