Remove rules and create movement rules
This commit is contained in:
@@ -3,7 +3,7 @@ package com.bartlomiejpluta.base.api.map.layer.object;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.map.layer.base.Layer;
|
||||
import com.bartlomiejpluta.base.api.move.Movement;
|
||||
import com.bartlomiejpluta.base.api.rule.Rule;
|
||||
import com.bartlomiejpluta.base.api.rule.MovementRule;
|
||||
import org.joml.Vector2ic;
|
||||
|
||||
import java.util.List;
|
||||
@@ -17,9 +17,9 @@ public interface ObjectLayer extends Layer {
|
||||
|
||||
List<Entity> getEntities();
|
||||
|
||||
void registerRule(Rule rule);
|
||||
void registerMovementRule(MovementRule rule);
|
||||
|
||||
void unregisterRule(Rule rule);
|
||||
void unregisterMovementRule(MovementRule rule);
|
||||
|
||||
void unregisterRules();
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.bartlomiejpluta.base.api.move;
|
||||
import org.joml.Vector2ic;
|
||||
|
||||
public interface Movement {
|
||||
Movable getObject();
|
||||
|
||||
boolean perform();
|
||||
|
||||
Movement another();
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.bartlomiejpluta.base.api.rule;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.move.Movement;
|
||||
import org.joml.Vector2ic;
|
||||
|
||||
public interface MovementRule {
|
||||
Vector2ic from();
|
||||
|
||||
Vector2ic to();
|
||||
|
||||
void invoke(Movement movement);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package com.bartlomiejpluta.base.api.rule;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
|
||||
public interface Rule {
|
||||
boolean when(Entity entity);
|
||||
|
||||
void then(Entity entity);
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package com.bartlomiejpluta.base.lib.rule;
|
||||
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.rule.Rule;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class BaseRule implements Rule {
|
||||
private final Set<Entity> invoked = new HashSet<>();
|
||||
|
||||
protected abstract boolean test(Entity entity);
|
||||
|
||||
protected abstract void invoke(Entity entity);
|
||||
|
||||
@Override
|
||||
public boolean when(Entity entity) {
|
||||
if (test(entity)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
invoked.remove(entity);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void then(Entity entity) {
|
||||
if (!invoked.contains(entity)) {
|
||||
invoke(entity);
|
||||
invoked.add(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user