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;
+    }
+}