2011-10-08 22:03:44 +02:00
|
|
|
package com.massivecraft.factions.zcore.persist;
|
|
|
|
|
2014-04-04 20:55:21 +02:00
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.Map;
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2014-04-04 20:55:21 +02:00
|
|
|
public class EM {
|
2014-08-05 17:17:27 +02:00
|
|
|
|
2014-04-04 20:55:21 +02:00
|
|
|
public static Map<Class<? extends Entity>, EntityCollection<? extends Entity>> class2Entities = new LinkedHashMap<Class<? extends Entity>, EntityCollection<? extends Entity>>();
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2014-04-04 20:55:21 +02:00
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public static <T extends Entity> EntityCollection<T> getEntitiesCollectionForEntityClass(Class<T> entityClass) {
|
|
|
|
return (EntityCollection<T>) class2Entities.get(entityClass);
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void setEntitiesCollectionForEntityClass(Class<? extends Entity> entityClass, EntityCollection<? extends Entity> entities) {
|
|
|
|
class2Entities.put(entityClass, entities);
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------- //
|
|
|
|
// ATTACH AND DETACH
|
|
|
|
// -------------------------------------------- //
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public static <T extends Entity> void attach(T entity) {
|
|
|
|
EntityCollection<T> ec = (EntityCollection<T>) getEntitiesCollectionForEntityClass(entity.getClass());
|
|
|
|
ec.attach(entity);
|
|
|
|
}
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public static <T extends Entity> void detach(T entity) {
|
|
|
|
EntityCollection<T> ec = (EntityCollection<T>) getEntitiesCollectionForEntityClass(entity.getClass());
|
|
|
|
ec.detach(entity);
|
|
|
|
}
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public static <T extends Entity> boolean attached(T entity) {
|
|
|
|
EntityCollection<T> ec = (EntityCollection<T>) getEntitiesCollectionForEntityClass(entity.getClass());
|
|
|
|
return ec.attached(entity);
|
|
|
|
}
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public static <T extends Entity> boolean detached(T entity) {
|
|
|
|
EntityCollection<T> ec = (EntityCollection<T>) getEntitiesCollectionForEntityClass(entity.getClass());
|
|
|
|
return ec.detached(entity);
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------- //
|
|
|
|
// DISC
|
|
|
|
// -------------------------------------------- //
|
|
|
|
|
|
|
|
public static void saveAllToDisc() {
|
|
|
|
for (EntityCollection<? extends Entity> ec : class2Entities.values()) {
|
|
|
|
ec.saveToDisc();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void loadAllFromDisc() {
|
|
|
|
for (EntityCollection<? extends Entity> ec : class2Entities.values()) {
|
|
|
|
ec.loadFromDisc();
|
|
|
|
}
|
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|