// Path: core/src/net/mostlyoriginal/game/component/ui/Label.java
// public class Label extends Component {
// 
//     public String text;
//     public Align align = Align.LEFT;
//     public Tint shadowColor;
// 
//     /** target smokeLayer, higher is in front, lower is behind. */
//     public float scale = 1f;
//     public float maxWidth = G.CANVAS_WIDTH;
// 
//     public Label() {}
//     public Label(String text) {
//         this.text = text;
//     }
// 
//     public Label(String text, float scale) {
//         this.text = text;
//         this.scale = scale;
//     }
// 
//     public enum Align {
//         LEFT, RIGHT;
//     }
// }
// 
// Path: core/src/net/mostlyoriginal/game/manager/FontManager.java
// public class FontManager extends Manager {
// 
//     public BitmapFont font;
//     public BitmapFont bigFont;
// 
//     @Override
//     protected void initialize() {
//         super.initialize();
//         font = new BitmapFont(Gdx.files.internal("5x5.fnt"), (TextureRegion)null, false);
//         font.setColor(1f, 1f, 1f, 1f);
//         bigFont = new BitmapFont(Gdx.files.internal("5x5.fnt"), false);
//         bigFont.setColor(1f, 1f, 1f, 1f);
//         bigFont.getData().scale(1f);
//     }
// }


import com.artemis.Aspect;
import com.artemis.ComponentMapper;
import com.artemis.annotations.Wire;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.Align;
import net.mostlyoriginal.api.component.basic.Pos;
import net.mostlyoriginal.api.component.graphics.Invisible;
import net.mostlyoriginal.api.component.graphics.Renderable;
import net.mostlyoriginal.api.component.graphics.Tint;
import net.mostlyoriginal.api.system.camera.CameraSystem;
import net.mostlyoriginal.api.system.delegate.DeferredEntityProcessingSystem;
import net.mostlyoriginal.api.system.delegate.EntityProcessPrincipal;
import net.mostlyoriginal.game.component.ui.Label;
import net.mostlyoriginal.game.manager.FontManager;
        super(Aspect.all(Pos.class, Label.class, Renderable.class).exclude(Invisible.class), principal);
        batch = new SpriteBatch(1000);
    }

    @Override
    protected void begin() {
        batch.setProjectionMatrix(cameraSystem.camera.combined);
        batch.begin();
        batch.setColor(1f, 1f, 1f, 1f);
    }

    @Override
    protected void initialize() {
        super.initialize();
        glyphLayout = new GlyphLayout();
    }

    @Override
    protected void end() {
        batch.end();
    }

    @Override
    protected boolean checkProcessing() {
        return true;
    }

    @Override
    protected void process(int entity) {

// Path: core/src/net/mostlyoriginal/game/component/ui/Label.java
// public class Label extends Component {
// 
//     public String text;
//     public Align align = Align.LEFT;
//     public Tint shadowColor;
// 
//     /** target smokeLayer, higher is in front, lower is behind. */
//     public float scale = 1f;
//     public float maxWidth = G.CANVAS_WIDTH;
// 
//     public Label() {}
//     public Label(String text) {
//         this.text = text;
//     }
// 
//     public Label(String text, float scale) {
//         this.text = text;
//         this.scale = scale;
//     }
// 
//     public enum Align {
//         LEFT, RIGHT;
//     }
// }
// 
// Path: core/src/net/mostlyoriginal/game/manager/FontManager.java
// public class FontManager extends Manager {
// 
//     public BitmapFont font;
//     public BitmapFont bigFont;
// 
//     @Override
//     protected void initialize() {
//         super.initialize();
//         font = new BitmapFont(Gdx.files.internal("5x5.fnt"), (TextureRegion)null, false);
//         font.setColor(1f, 1f, 1f, 1f);
//         bigFont = new BitmapFont(Gdx.files.internal("5x5.fnt"), false);
//         bigFont.setColor(1f, 1f, 1f, 1f);
//         bigFont.getData().scale(1f);
//     }
// }


// Path: core/src/net/mostlyoriginal/game/system/render/LabelRenderSystem.java
import com.artemis.Aspect;
import com.artemis.ComponentMapper;
import com.artemis.annotations.Wire;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.Align;
import net.mostlyoriginal.api.component.basic.Pos;
import net.mostlyoriginal.api.component.graphics.Invisible;
import net.mostlyoriginal.api.component.graphics.Renderable;
import net.mostlyoriginal.api.component.graphics.Tint;
import net.mostlyoriginal.api.system.camera.CameraSystem;
import net.mostlyoriginal.api.system.delegate.DeferredEntityProcessingSystem;
import net.mostlyoriginal.api.system.delegate.EntityProcessPrincipal;
import net.mostlyoriginal.game.component.ui.Label;
import net.mostlyoriginal.game.manager.FontManager;

        super(Aspect.all(Pos.class, Label.class, Renderable.class).exclude(Invisible.class), principal);
        batch = new SpriteBatch(1000);
    }

    @Override
    protected void begin() {
        batch.setProjectionMatrix(cameraSystem.camera.combined);
        batch.begin();
        batch.setColor(1f, 1f, 1f, 1f);
    }

    @Override
    protected void initialize() {
        super.initialize();
        glyphLayout = new GlyphLayout();
    }

    @Override
    protected void end() {
        batch.end();
    }

    @Override
    protected boolean checkProcessing() {
        return true;
    }

    @Override
    protected void process(int entity) {

        final Label label = mLabel.get(entity);