Use Set as BaseRule's entities collection and Queue as ObjectLayer's movements collection
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user