Reduced reflection usage / Improved event system

This commit is contained in:
Anuken
2018-08-31 16:14:14 -04:00
parent 522e19d4bf
commit 5cb50d57ec
24 changed files with 95 additions and 85 deletions
@@ -50,18 +50,18 @@ public class BlockIndexer{
private Array<Tile> returnArray = new ThreadArray<>();
public BlockIndexer(){
Events.on(TileChangeEvent.class, tile -> {
if(typeMap.get(tile.packedPosition()) != null){
TileIndex index = typeMap.get(tile.packedPosition());
Events.on(TileChangeEvent.class, event -> {
if(typeMap.get(event.tile.packedPosition()) != null){
TileIndex index = typeMap.get(event.tile.packedPosition());
for(BlockFlag flag : index.flags){
getFlagged(index.team)[flag.ordinal()].remove(tile);
getFlagged(index.team)[flag.ordinal()].remove(event.tile);
}
}
process(tile);
updateQuadrant(tile);
process(event.tile);
updateQuadrant(event.tile);
});
Events.on(WorldLoadEvent.class, () -> {
Events.on(WorldLoadEvent.class, event -> {
flagMap = new ObjectSet[Team.all.length][BlockFlag.all.length];
for(int i = 0; i < flagMap.length; i++){
for(int j = 0; j < BlockFlag.all.length; j++){
@@ -25,18 +25,18 @@ public class Pathfinder{
private IntArray blocked = new IntArray();
public Pathfinder(){
Events.on(WorldLoadEvent.class, this::clear);
Events.on(TileChangeEvent.class, tile -> {
Events.on(WorldLoadEvent.class, event -> clear());
Events.on(TileChangeEvent.class, event -> {
if(Net.client()) return;
for(Team team : Team.all){
TeamData data = state.teams.get(team);
if(state.teams.isActive(team) && data.team != tile.getTeam() && paths[data.team.ordinal()].weights[tile.x][tile.y] >= Float.MAX_VALUE){
update(tile, data.team);
if(state.teams.isActive(team) && data.team != event.tile.getTeam() && paths[data.team.ordinal()].weights[event.tile.x][event.tile.y] >= Float.MAX_VALUE){
update(event.tile, data.team);
}
}
update(tile, tile.getTeam());
update(event.tile, event.tile.getTeam());
});
}
@@ -163,7 +163,7 @@ public class WaveSpawner{
}
}
private void reset(){
private void reset(WorldLoadEvent event){
flySpawns.clear();
groundSpawns.clear();
quadrants = new GridBits(quadWidth(), quadHeight());