package mountainrangepvp.client.renderer;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Vector2;
import mountainrangepvp.core.Terrain;
/**
* @author lachlan
*/
public class TerrainRenderer {
private static final Color BASE_COLOUR = new Color(0, 0, 0, 1f);
private final int width, height;
private final ShapeRenderer shapeRenderer;
private final SpriteBatch batch;
private final Texture worldSliceTexture;
public TerrainRenderer(SpriteBatch batch) {
width = Gdx.graphics.getWidth() + 1;
height = Gdx.graphics.getHeight();
shapeRenderer = new ShapeRenderer();
this.batch = batch;
worldSliceTexture = new Texture(Gdx.files.internal("terrain/slice.png"));
}
public void render(Vector2 scroll, Terrain map) {
Terrain.Slice slice = map.sliceAt((int) scroll.x, width);
/*
* Render the block(s)
*/
shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(BASE_COLOUR);
for (int i = 0; i < width; i++) {
int column = slice.get(i) - (int) scroll.y;
if (column <= 0) {
continue;
} else {
column = Math.min(column, height);
}
shapeRenderer.line(i, 0, i, column);
}
shapeRenderer.end();
batch.begin();
for (int i = 0; i < width; i++) {
int column = slice.get(i) - (int) scroll.y;
if (column <= 0) {
continue;
}
batch.draw(worldSliceTexture, i - 1, column - worldSliceTexture.
getHeight());
}
batch.end();
}
// /**
// * Internal caching system. Eventually will be moved elsewhere.
// * <p/>
// * @param blockNumber
// * @return
// */
// private int[] getBlock(int blockNumber) {
// if (blocks.containsKey(blockNumber)) {
// return blocks.get(blockNumber);
// } else {
// int[] block = map.getBlock(width * blockNumber, width);
//
// blocks.put(blockNumber, block);
//
// return block;
// }
// }
}