package me.hammerle.supersnuvi.entity.components.ai; import me.hammerle.snuviengine.api.Shader; import me.hammerle.supersnuvi.entity.Entity; import me.hammerle.supersnuvi.rendering.LevelRenderer; import me.hammerle.supersnuvi.tiles.Tile; import me.hammerle.supersnuvi.util.Face; import me.hammerle.supersnuvi.util.Utils; public class BoxController extends Controller { private final float startX; private final float endX; public BoxController(int type) { startX = (256.0f + Tile.SIZE * type) / 512.0f; endX = (288.0f + Tile.SIZE * type) / 512.0f; } @Override public void renderTick(Entity ent, float lag) { float x = Utils.interpolate(ent.getLastX(), ent.getX(), lag); float y = Utils.interpolate(ent.getLastY(), ent.getY(), lag); LevelRenderer.TILES.bind(); Shader.getTextureRenderer().drawRectangle(x, y, x + ent.getWidth(), y + ent.getHeight(), startX, 0.125f, endX, 0.1875f); } @Override public void onCollideWithEntity(Entity ent, Entity other, Face face) { if(face == Face.LEFT && other.getOwnForceX() > 0.0f) { ent.applyForce(other.getOwnForceX(), 0.0f); } else if(face == Face.RIGHT && other.getOwnForceX() < 0.0f) { ent.applyForce(other.getOwnForceX(), 0.0f); } } }