From 0196ba0d7e3cff3cecd723efaef0f28f906011c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Tue, 16 Mar 2021 23:41:35 +0100 Subject: [PATCH] Use Set as BaseRule's entities collection and Queue as ObjectLayer's movements collection --- .../bartlomiejpluta/base/api/game/rule/BaseRule.java | 6 +++--- .../world/map/layer/object/DefaultObjectLayer.java | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/rule/BaseRule.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/rule/BaseRule.java index a25dc8c7..d104a3da 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/rule/BaseRule.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/rule/BaseRule.java @@ -2,11 +2,11 @@ package com.bartlomiejpluta.base.api.game.rule; import com.bartlomiejpluta.base.api.game.entity.Entity; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; public abstract class BaseRule implements Rule { - private final List invoked = new LinkedList<>(); + private final Set invoked = new HashSet<>(); protected abstract boolean test(Entity entity); diff --git a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java index bb0a2ea1..520dac05 100644 --- a/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java +++ b/engine/src/main/java/com/bartlomiejpluta/base/engine/world/map/layer/object/DefaultObjectLayer.java @@ -18,6 +18,7 @@ import org.joml.Vector2ic; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.Queue; public class DefaultObjectLayer implements ObjectLayer { @@ -30,7 +31,7 @@ public class DefaultObjectLayer implements ObjectLayer { @Getter private final PassageAbility[][] passageMap; - private final List movements = new LinkedList<>(); + private final Queue movements = new LinkedList<>(); private final List rules = new ArrayList<>(); @@ -124,14 +125,11 @@ public class DefaultObjectLayer implements ObjectLayer { @Override public void update(float dt) { - for (var iterator = movements.iterator(); iterator.hasNext(); ) { - var movement = iterator.next(); - + while (!movements.isEmpty()) { + var movement = movements.poll(); if (isTileReachable(movement.getTo())) { movement.perform(); } - - iterator.remove(); } for (var entity : entities) {