package kpc.common.core; import kpc.api.computer.Computer; import java.util.Collection; import java.util.HashMap; import java.util.Map; public abstract class ComputerRegistry<TComputer extends Computer>{ private final Map<Integer, TComputer> computers = new HashMap<>(); private int nextId = 0; public ComputerRegistry(){ this.reset(); } public boolean contains(int id){ return this.computers.containsKey(id); } public abstract void update(); public TComputer get(int id){ if(id >= 0){ if(this.computers.containsKey(id)){ return this.computers.get(id); } } return null; } public int nextId(){ System.out.println(this.nextId); return this.nextId++; } public Collection<TComputer> all(){ return this.computers.values(); } public void remove(int id){ if(this.computers.containsKey(id)){ this.computers.remove(id); } } public void register(int id, TComputer computer){ if(this.computers.containsKey(id)){ this.computers.remove(id); } this.computers.put(id, computer); this.nextId = Math.max(this.nextId, id + 1); } public void reset(){ this.computers.clear(); this.nextId = 0; } }