From ad1e4d213417f6861397e3baf65c77b4abef1345 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Sat, 19 Sep 2020 14:36:32 +0200 Subject: [PATCH] working on contact and signal functions --- resources/css/style.css | 4 +++ .../java/de/srsoftware/web4rail/Route.java | 7 ++-- .../de/srsoftware/web4rail/moving/Train.java | 5 +-- .../de/srsoftware/web4rail/tiles/Contact.java | 34 +++++++++++++++++++ .../de/srsoftware/web4rail/tiles/Signal.java | 2 +- .../srsoftware/web4rail/tiles/TurnoutL.java | 10 ++++-- .../srsoftware/web4rail/tiles/TurnoutR.java | 9 +++-- 7 files changed, 60 insertions(+), 11 deletions(-) diff --git a/resources/css/style.css b/resources/css/style.css index 179eac5..6395904 100644 --- a/resources/css/style.css +++ b/resources/css/style.css @@ -174,4 +174,8 @@ svg.straight .right{ .occupied .block{ fill: yellow; +} + +.active circle{ + fill: #ffcc88; } \ No newline at end of file diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 55f3891..0cb6b11 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -209,8 +209,8 @@ public class Route { if (lastTile instanceof Turnout) addTurnout((Turnout) lastTile,state); } - public Route setSignals() throws IOException { - for (Signal signal : signals) signal.state("go"); + public Route setSignals(String state) throws IOException { + for (Signal signal : signals) signal.state(state == null ? "go" : state); return this; } @@ -222,8 +222,9 @@ public class Route { return Translation.get(Application.class, txt, fills); } - public void unlock() { + public Route unlock() { for (Tile tile : path) tile.unlock(); + return this; } public void update(HashMap params) { diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 9416514..e244a76 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -11,6 +11,7 @@ import de.srsoftware.web4rail.Application; import de.srsoftware.web4rail.Route; import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tiles.Block; +import de.srsoftware.web4rail.tiles.Signal; import de.srsoftware.web4rail.tiles.Tile; public class Train { @@ -63,9 +64,9 @@ public class Train { availableRoutes.add(route); } Random rand = new Random(); - if (route != null) route.unlock(); + if (route != null) route.unlock().setSignals(Signal.STOP); int sel = rand.nextInt(availableRoutes.size()); - route = availableRoutes.get(sel).lock(this).setSignals(); + route = availableRoutes.get(sel).lock(this).setSignals(null); return t("started {}",this); } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java index 1a51197..3c5d032 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java @@ -1,5 +1,39 @@ package de.srsoftware.web4rail.tiles; +import java.io.IOException; + +import de.srsoftware.tools.Tag; + public abstract class Contact extends Tile{ + + private boolean active = false; + + + private void activate() throws IOException { + active = true; + stream(); + new Thread() { + public void run() { + try { + sleep(200); + active=false; + stream(); + } catch (Exception e) {} + } + }.start(); + } + + + @Override + public Object click() throws IOException { + activate(); + return super.click(); + } + + public void stream() throws IOException { + Tag tag = super.tag(null); + if (active) tag.clazz(tag.get("class")+" active"); + plan.stream("place "+tag); + } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java index a38cf17..419853c 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java @@ -8,7 +8,7 @@ import de.srsoftware.web4rail.Plan.Direction; public abstract class Signal extends Tile{ - private static final String STOP = "stop"; + public static final String STOP = "stop"; private String state = STOP; public Signal() { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java index ea2804a..07f405b 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java @@ -5,8 +5,12 @@ import java.io.IOException; public class TurnoutL extends Turnout { @Override public Object click() throws IOException { - if (lockedBy != null) return t("{} is locked by {}!",this,lockedBy); - state = (state == State.STRAIGHT) ? State.LEFT : State.STRAIGHT; - return tag(null); + if (lockedBy != null) { + plan.stream(t("{} is locked by {}!",this,lockedBy)); + } else { + state = (state == State.STRAIGHT) ? State.LEFT : State.STRAIGHT; + plan.stream("place "+tag(null)); + } + return propMenu(); } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java index 0cf7ec8..3fb8bcb 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java @@ -5,7 +5,12 @@ import java.io.IOException; public class TurnoutR extends Turnout { @Override public Object click() throws IOException { - state = (state == State.STRAIGHT) ? State.RIGHT : State.STRAIGHT; - return tag(null); + if (lockedBy != null) { + plan.stream(t("{} is locked by {}!",this,lockedBy)); + } else { + state = (state == State.STRAIGHT) ? State.RIGHT : State.STRAIGHT; + plan.stream("place "+tag(null)); + } + return propMenu(); } }