diff --git a/core/src/com/riiablo/engine/server/ServerEntityFactory.java b/core/src/com/riiablo/engine/server/ServerEntityFactory.java index ed27c2c8..4f00a27d 100644 --- a/core/src/com/riiablo/engine/server/ServerEntityFactory.java +++ b/core/src/com/riiablo/engine/server/ServerEntityFactory.java @@ -113,6 +113,7 @@ public class ServerEntityFactory extends EntityFactory { int id = createMonster(map, zone, monstats, x, y); mDS1ObjectWrapper.create(id).set(preset.getDS1(), object); if (object.path != null) mPathWrapper.create(id).path = object.path; + mNetworked.create(id); return id; } diff --git a/core/src/com/riiablo/screen/GameScreen.java b/core/src/com/riiablo/screen/GameScreen.java index ca9077a4..79d2ef4c 100644 --- a/core/src/com/riiablo/screen/GameScreen.java +++ b/core/src/com/riiablo/screen/GameScreen.java @@ -531,8 +531,10 @@ public class GameScreen extends ScreenAdapter implements GameLoadingScreen.Loada if (!DEBUG_TOUCHPAD && Gdx.app.getType() == Application.ApplicationType.Desktop) { builder.with(new CursorMovementSystem()); } + if (socket == null) { + builder.with(new AIStepper()); + } builder - .with(new AIStepper()) .with(new Pathfinder()) .with(new SoundEmitterHandler()) diff --git a/server/d2gs/src/com/riiablo/server/d2gs/D2GS.java b/server/d2gs/src/com/riiablo/server/d2gs/D2GS.java index fd11a77f..c2f21cfc 100644 --- a/server/d2gs/src/com/riiablo/server/d2gs/D2GS.java +++ b/server/d2gs/src/com/riiablo/server/d2gs/D2GS.java @@ -459,7 +459,7 @@ public class D2GS extends ApplicationAdapter { outPackets.offer(broadcast); world.delete(entityId); - player.put(id, Engine.INVALID_ENTITY); + player.remove(id, Engine.INVALID_ENTITY); synchronized (clients) { clients[id] = null; numClients--; diff --git a/server/d2gs/src/com/riiablo/server/d2gs/NetworkSynchronizer.java b/server/d2gs/src/com/riiablo/server/d2gs/NetworkSynchronizer.java index d503359c..e7e8d061 100644 --- a/server/d2gs/src/com/riiablo/server/d2gs/NetworkSynchronizer.java +++ b/server/d2gs/src/com/riiablo/server/d2gs/NetworkSynchronizer.java @@ -26,12 +26,16 @@ public class NetworkSynchronizer extends IteratingSystem { @Wire(name = "player") protected IntIntMap players; + @Override + protected boolean checkProcessing() { + return players.size > 0; + } + @Override protected void process(int entityId) { D2GS sync = sync(entityId); int id = players.findKey(entityId, -1); - assert id != -1; - boolean success = outPackets.offer(com.riiablo.server.d2gs.D2GS.Packet.obtain(~(1 << id), sync)); + boolean success = outPackets.offer(com.riiablo.server.d2gs.D2GS.Packet.obtain(id != -1 ? ~(1 << id) : 0xFFFFFFFF, sync)); assert success; }