From 960c82a5e44e1a300490ddf8d447d2493e8afbc7 Mon Sep 17 00:00:00 2001 From: Mo Date: Thu, 22 Dec 2016 16:35:36 +0300 Subject: [PATCH] set blocked state on expansion --- .../main/java/ru/trader/core/AbstractPlace.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/ru/trader/core/AbstractPlace.java b/core/src/main/java/ru/trader/core/AbstractPlace.java index 5c0454d..325233a 100644 --- a/core/src/main/java/ru/trader/core/AbstractPlace.java +++ b/core/src/main/java/ru/trader/core/AbstractPlace.java @@ -171,9 +171,9 @@ public abstract class AbstractPlace implements Place { if (market == null) return; if (oldState == null) oldState = POWER_STATE.NONE; if (newState == null) newState = POWER_STATE.NONE; - if (oldState.isControl() && !newState.isControl()){ + if (oldState.isExpansion() && !newState.isExpansion()){ market.getInControllingRadius(this).forEach(p -> { - if (p instanceof AbstractPlace) ((AbstractPlace)p).removeControlling(this); + if (p.getPowerState() == POWER_STATE.BLOCKED) p.setPower(getPower(), POWER_STATE.NONE); }); } if (!oldState.isControl() && newState.isControl()){ @@ -181,6 +181,16 @@ public abstract class AbstractPlace implements Place { if (p instanceof AbstractPlace) ((AbstractPlace)p).addControlling(this); }); } + if (oldState.isControl() && !newState.isControl()){ + market.getInControllingRadius(this).forEach(p -> { + if (p instanceof AbstractPlace) ((AbstractPlace)p).removeControlling(this); + }); + } + if (!oldState.isExpansion() && newState.isExpansion()){ + market.getInControllingRadius(this).forEach(p -> { + if (p.getPowerState() == POWER_STATE.NONE) p.setPower(getPower(), POWER_STATE.BLOCKED); + }); + } } protected void addControlling(Place controllingSystem){