/** * Removes an entity from the map. * * @param entity the entity to remove */ public void removeEntity(MapEntity entity) { allEntities[entity.getLayer().getId()].remove(entity); setChanged(); notifyObservers(); }
/** * Changes the layer of an entity. You should call this method instead of calling directly * MapEntity.setLayer(), because the entity of the 3 layers are stored in 3 different structures. * If the entity is not known by the map (yet), this method just calls MapEntity.setLayer(). * * @param entity the entity to change the layer * @param layer the new layer */ public void setEntityLayer(MapEntity entity, Layer layer) { Layer oldLayer = entity.getLayer(); if (layer != oldLayer) { entity.setLayer(layer); if (allEntities[oldLayer.getId()].remove(entity)) { allEntities[layer.getId()].add(entity); } setChanged(); notifyObservers(); } }
/** * Brings the specified entities to the front, keeping their layer. The order of the specified * entities in the map is unchanged. * * @param entities the entities to move */ public void bringToFront(List<MapEntity> entities) { List<MapEntity> sortedEntities = getSortedEntities(entities); // bring to front each entity from sortedEntities ListIterator<MapEntity> iterator = sortedEntities.listIterator(0); while (iterator.hasNext()) { MapEntity entity = iterator.next(); Layer layer = entity.getLayer(); allEntities[layer.getId()].remove(entity); allEntities[layer.getId()].addLast(entity); } setChanged(); notifyObservers(); }
/** * Brings the specified entities to the back, keeping their layer. The order of the specified * entities in the map is unchanged. * * @param entities the entities to move */ public void bringToBack(List<MapEntity> entities) { List<MapEntity> sortedEntities = getSortedEntities(entities); // bring to back each entity from sortedEntities ListIterator<MapEntity> iterator = sortedEntities.listIterator(sortedEntities.size()); while (iterator.hasPrevious()) { MapEntity entity = iterator.previous(); Layer layer = entity.getLayer(); allEntities[layer.getId()].remove(entity); allEntities[layer.getId()].addFirst(entity); } setChanged(); notifyObservers(); }