Use Set as BaseRule's entities collection and Queue as ObjectLayer's movements collection

This commit is contained in:
2021-03-16 23:41:35 +01:00
parent 0c1f0748a1
commit 0196ba0d7e
2 changed files with 7 additions and 9 deletions

View File

@@ -2,11 +2,11 @@ package com.bartlomiejpluta.base.api.game.rule;
import com.bartlomiejpluta.base.api.game.entity.Entity; import com.bartlomiejpluta.base.api.game.entity.Entity;
import java.util.LinkedList; import java.util.HashSet;
import java.util.List; import java.util.Set;
public abstract class BaseRule implements Rule { public abstract class BaseRule implements Rule {
private final List<Entity> invoked = new LinkedList<>(); private final Set<Entity> invoked = new HashSet<>();
protected abstract boolean test(Entity entity); protected abstract boolean test(Entity entity);

View File

@@ -18,6 +18,7 @@ import org.joml.Vector2ic;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Queue;
public class DefaultObjectLayer implements ObjectLayer { public class DefaultObjectLayer implements ObjectLayer {
@@ -30,7 +31,7 @@ public class DefaultObjectLayer implements ObjectLayer {
@Getter @Getter
private final PassageAbility[][] passageMap; private final PassageAbility[][] passageMap;
private final List<Movement> movements = new LinkedList<>(); private final Queue<Movement> movements = new LinkedList<>();
private final List<Rule> rules = new ArrayList<>(); private final List<Rule> rules = new ArrayList<>();
@@ -124,14 +125,11 @@ public class DefaultObjectLayer implements ObjectLayer {
@Override @Override
public void update(float dt) { public void update(float dt) {
for (var iterator = movements.iterator(); iterator.hasNext(); ) { while (!movements.isEmpty()) {
var movement = iterator.next(); var movement = movements.poll();
if (isTileReachable(movement.getTo())) { if (isTileReachable(movement.getTo())) {
movement.perform(); movement.perform();
} }
iterator.remove();
} }
for (var entity : entities) { for (var entity : entities) {