package com.riiablo.engine.client; import com.artemis.BaseEntitySystem; import com.artemis.ComponentMapper; import com.artemis.annotations.All; import com.artemis.utils.IntBag; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.AssetDescriptor; import com.riiablo.Riiablo; import com.riiablo.engine.client.component.CofDescriptor; import com.riiablo.engine.server.event.CofChangeEvent; import com.riiablo.codec.COF; import net.mostlyoriginal.api.event.common.Subscribe; @All(CofDescriptor.class) public class CofUnloader extends BaseEntitySystem { private static final String TAG = "CofUnloader"; private static final boolean DEBUG = !true; private static final boolean DEBUG_EVENTS = DEBUG && true; protected ComponentMapper<CofDescriptor> mCofDescriptor; @Override protected void processSystem() {} @Subscribe public void onCofChanged(CofChangeEvent event) { if (DEBUG_EVENTS) Gdx.app.debug(TAG, "onCofChanged"); unload(event.entityId); } @Override protected void dispose() { IntBag entities = getEntityIds(); for (int i = 0, size = entities.size(); i < size; i++) { int id = entities.get(i); unload(id); } } private void unload(int entityId) { if (!mCofDescriptor.has(entityId)) return; CofDescriptor cofDescriptor = mCofDescriptor.get(entityId); AssetDescriptor<COF> descriptor = cofDescriptor.descriptor; if (DEBUG) Gdx.app.debug(TAG, "Unloading " + descriptor.fileName); Riiablo.assets.unload(descriptor.fileName); mCofDescriptor.remove(entityId); } }