remove obsolete ships
[fleet.git] / misc / obsolete-ships / HomeworkCounter.java
diff --git a/misc/obsolete-ships/HomeworkCounter.java b/misc/obsolete-ships/HomeworkCounter.java
new file mode 100644 (file)
index 0000000..0aa8be8
--- /dev/null
@@ -0,0 +1,39 @@
+package edu.berkeley.fleet.interpreter.ships;
+import edu.berkeley.fleet.interpreter.*;
+import edu.berkeley.fleet.*;
+
+import java.util.*;
+import java.io.*;
+
+public class HomeworkCounter extends InterpreterShip {
+
+    private int count = -1;
+
+    TokenOutbox zero     = new TokenOutbox(this, "zero");
+    TokenOutbox positive = new TokenOutbox(this, "positive");
+    DataInbox    load     = new DataInbox(this, "load");
+    TokenInbox  ask      = new TokenInbox(this, "ask");
+
+    public HomeworkCounter(Interpreter fleet, String name) {
+        super(fleet, name);
+    }
+
+    public void service() {
+        if (!zero.readyForTokenFromShip()) return;
+        if (!positive.readyForTokenFromShip()) return;
+        if (load.dataReadyForShip()) {
+            count = load.removeDataForShip();
+            return;
+        }
+        if (ask.tokenReadyForShip()) {
+            ask.removeTokenForShip();
+            if (count > 0) {
+                count--;
+                positive.addTokenFromShip();
+            } else if (count<=0) {
+                zero.addTokenFromShip();
+            }
+        }
+    }
+
+}