// Path: core/src/com/balanceball/component/GuiComponent.java
// public class GuiComponent implements Component {
//     public Stage stage = null;
// }
// 
// Path: core/src/com/balanceball/component/VisibleComponent.java
// public class VisibleComponent implements Component {
//     public boolean visible = true;
// }
// 
// Path: core/src/com/sec/Component.java
// public interface Component {
// }
// 
// Path: core/src/com/sec/Entity.java
// public abstract class Entity implements GameLifecycleListener {
//     private ObjectMap<String, Component> mComponents;
// 
//     public static final int STATE_BECOMING_ACTIVE = 0;
//     public static final int STATE_ACTIVE = 1;
//     public static final int STATE_BECOMING_PAUSED = 2;
//     public static final int STATE_PAUSED = 3;
// 
//     private int mState = STATE_BECOMING_ACTIVE;
// 
//     protected Engine mEngine;
// 
//     public Entity() {
//         mComponents = new ObjectMap<String, Component>(16);
//     }
// 
//     protected final void addComponent(Component component) {
//         mComponents.put(component.getClass().getName(), component);
//     }
// 
//     void setEngine(Engine engine) {
//         mEngine = engine;
//     }
// 
//     public int getState() {
//         return mState;
//     }
// 
//     public void becomeActive() {
//         mState = STATE_BECOMING_ACTIVE;
//     }
// 
//     public void becomePaused() {
//         mState = STATE_BECOMING_PAUSED;
//     }
// 
//     @Override
//     public void resume() {
//         mState = STATE_ACTIVE;
//     }
// 
//     @Override
//     public void update() {
//         // do nothing
//     }
// 
//     @Override
//     public void pause() {
//         mState = STATE_PAUSED;
//     }
// 
//     @Override
//     public void create() {
//         // do nothing
//     }
// 
//     @Override
//     public void dispose() {
//         // do nothing
//     }
// 
//     /**
//      * check if the entity matches all required components
//      * @param componentsType
//      * @return boolean
//      */
//     final boolean matchesComponentTypes(Array<Class<? extends Component>> componentsType) {
//         for (Class<? extends Component> componentType : componentsType) {
//             if (getComponentByType(componentType) == null) {
//                 return false;
//             }
//         }
//         return true;
//     }
// 
//     /**
//      *
//      * @param componentType
//      * @param <T> get the component of a given type
//      * @return T the component, null if not found
//      */
//     public final <T extends Component> T getComponentByType(Class<T> componentType) {
//         Object o = mComponents.get(componentType.getName());
//         return (o == null) ? null : (T) o;
//     }
// }
// 
// Path: core/src/com/sec/System.java
// public abstract class System implements SystemInterface, GameLifecycleListener {
// 
//     protected Engine mEngine = null;
// 
//     // register all type it want to listen for
//     private Array<Class<? extends Component>> mComponentsType;
// 
//     protected System() {
//         mComponentsType = new Array<Class<? extends Component>>();
//     }
// 
//     void setEngine(Engine engine) {
//         mEngine = engine;
//     }
// 
//     protected final void addComponentType(Class<? extends Component> componentType) {
//         mComponentsType.add(componentType);
//     }
// 
//     Array<Class<? extends Component>> getComponentsType() {
//         return mComponentsType;
//     }
// 
//     @Override
//     public void create() {
// 
//     }
// 
//     @Override
//     public void resume() {
// 
//     }
// 
//     @Override
//     public void update() {
// 
//     }
// 
//     @Override
//     public void pause() {
// 
//     }
// 
//     @Override
//     public void dispose() {
// 
//     }
// }


import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Array;
import com.balanceball.component.GuiComponent;
import com.balanceball.component.VisibleComponent;
import com.sec.Component;
import com.sec.Entity;
import com.sec.System;
    }

    public GuiRendererSystem() {
        addComponentType(GuiComponent.class);
    }

    public void activateGui(Class<? extends Entity> guiEntityClass) {
        if (mActiveGui != null) {
            Entity activeGui = mEngine.getFirstEntityOfType(mActiveGui);
            activeGui.becomePaused();
        }

        mActiveGui = guiEntityClass;

        if (mActiveGui != null) {
            Entity toBecomeActiveEntity = mEngine.getFirstEntityOfType(mActiveGui);
            toBecomeActiveEntity.becomeActive();

            GuiComponent guiComponent = toBecomeActiveEntity.getComponentByType(GuiComponent.class);
            if (guiComponent != null) {
                Gdx.input.setInputProcessor(guiComponent.stage);
            }
        }
    }

    @Override
    public void updateFromEntities(Array<Entity> entities) {
        for (Entity entity : entities) {
            VisibleComponent visibleComponent = entity.getComponentByType(VisibleComponent.class);
            if (visibleComponent != null && !visibleComponent.visible) {
// Path: core/src/com/balanceball/component/GuiComponent.java
// public class GuiComponent implements Component {
//     public Stage stage = null;
// }
// 
// Path: core/src/com/balanceball/component/VisibleComponent.java
// public class VisibleComponent implements Component {
//     public boolean visible = true;
// }
// 
// Path: core/src/com/sec/Component.java
// public interface Component {
// }
// 
// Path: core/src/com/sec/Entity.java
// public abstract class Entity implements GameLifecycleListener {
//     private ObjectMap<String, Component> mComponents;
// 
//     public static final int STATE_BECOMING_ACTIVE = 0;
//     public static final int STATE_ACTIVE = 1;
//     public static final int STATE_BECOMING_PAUSED = 2;
//     public static final int STATE_PAUSED = 3;
// 
//     private int mState = STATE_BECOMING_ACTIVE;
// 
//     protected Engine mEngine;
// 
//     public Entity() {
//         mComponents = new ObjectMap<String, Component>(16);
//     }
// 
//     protected final void addComponent(Component component) {
//         mComponents.put(component.getClass().getName(), component);
//     }
// 
//     void setEngine(Engine engine) {
//         mEngine = engine;
//     }
// 
//     public int getState() {
//         return mState;
//     }
// 
//     public void becomeActive() {
//         mState = STATE_BECOMING_ACTIVE;
//     }
// 
//     public void becomePaused() {
//         mState = STATE_BECOMING_PAUSED;
//     }
// 
//     @Override
//     public void resume() {
//         mState = STATE_ACTIVE;
//     }
// 
//     @Override
//     public void update() {
//         // do nothing
//     }
// 
//     @Override
//     public void pause() {
//         mState = STATE_PAUSED;
//     }
// 
//     @Override
//     public void create() {
//         // do nothing
//     }
// 
//     @Override
//     public void dispose() {
//         // do nothing
//     }
// 
//     /**
//      * check if the entity matches all required components
//      * @param componentsType
//      * @return boolean
//      */
//     final boolean matchesComponentTypes(Array<Class<? extends Component>> componentsType) {
//         for (Class<? extends Component> componentType : componentsType) {
//             if (getComponentByType(componentType) == null) {
//                 return false;
//             }
//         }
//         return true;
//     }
// 
//     /**
//      *
//      * @param componentType
//      * @param <T> get the component of a given type
//      * @return T the component, null if not found
//      */
//     public final <T extends Component> T getComponentByType(Class<T> componentType) {
//         Object o = mComponents.get(componentType.getName());
//         return (o == null) ? null : (T) o;
//     }
// }
// 
// Path: core/src/com/sec/System.java
// public abstract class System implements SystemInterface, GameLifecycleListener {
// 
//     protected Engine mEngine = null;
// 
//     // register all type it want to listen for
//     private Array<Class<? extends Component>> mComponentsType;
// 
//     protected System() {
//         mComponentsType = new Array<Class<? extends Component>>();
//     }
// 
//     void setEngine(Engine engine) {
//         mEngine = engine;
//     }
// 
//     protected final void addComponentType(Class<? extends Component> componentType) {
//         mComponentsType.add(componentType);
//     }
// 
//     Array<Class<? extends Component>> getComponentsType() {
//         return mComponentsType;
//     }
// 
//     @Override
//     public void create() {
// 
//     }
// 
//     @Override
//     public void resume() {
// 
//     }
// 
//     @Override
//     public void update() {
// 
//     }
// 
//     @Override
//     public void pause() {
// 
//     }
// 
//     @Override
//     public void dispose() {
// 
//     }
// }


// Path: core/src/com/balanceball/system/GuiRendererSystem.java
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Array;
import com.balanceball.component.GuiComponent;
import com.balanceball.component.VisibleComponent;
import com.sec.Component;
import com.sec.Entity;
import com.sec.System;

    }

    public GuiRendererSystem() {
        addComponentType(GuiComponent.class);
    }

    public void activateGui(Class<? extends Entity> guiEntityClass) {
        if (mActiveGui != null) {
            Entity activeGui = mEngine.getFirstEntityOfType(mActiveGui);
            activeGui.becomePaused();
        }

        mActiveGui = guiEntityClass;

        if (mActiveGui != null) {
            Entity toBecomeActiveEntity = mEngine.getFirstEntityOfType(mActiveGui);
            toBecomeActiveEntity.becomeActive();

            GuiComponent guiComponent = toBecomeActiveEntity.getComponentByType(GuiComponent.class);
            if (guiComponent != null) {
                Gdx.input.setInputProcessor(guiComponent.stage);
            }
        }
    }

    @Override
    public void updateFromEntities(Array<Entity> entities) {
        for (Entity entity : entities) {
            VisibleComponent visibleComponent = entity.getComponentByType(VisibleComponent.class);
            if (visibleComponent != null && !visibleComponent.visible) {
                continue;