X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavecraft%2Fgame%2FGameRenderer.java;h=54ec384e040cf91cf688cce9b31ba7bcd9ad357f;hb=7115b8cce5cc8469c03ea1fa1fc24506a1e2765e;hp=563f095203bd418c6822cb9039b907a70c48318d;hpb=a6ec412e508cfa8679dcf32e69600fbb939122af;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java b/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java index 563f095..54ec384 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java @@ -3,10 +3,13 @@ package ru.deadsoftware.cavecraft.game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.glutils.ShapeRenderer; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector3; +import ru.deadsoftware.cavecraft.Assets; +import ru.deadsoftware.cavecraft.BlocksLoader; import ru.deadsoftware.cavecraft.GameScreen; import ru.deadsoftware.cavecraft.game.objects.Player; @@ -17,19 +20,22 @@ public class GameRenderer { public Vector3 camTargetPos; public OrthographicCamera camera; ShapeRenderer shapeRenderer; + SpriteBatch spriteBatch; public GameRenderer(GameProc gameProc) { Gdx.gl.glClearColor(0f,.6f,.6f,1f); this.gameProc = gameProc; camera = new OrthographicCamera(); - camera.setToOrtho(true, 320, - 320*((float)GameScreen.getHeight()/GameScreen.getWidth())); + camera.setToOrtho(true, 360, + 360*((float)GameScreen.getHeight()/GameScreen.getWidth())); camera.position.x=0; camera.position.y=0; camTargetPos = camera.position.cpy(); shapeRenderer = new ShapeRenderer(); shapeRenderer.setProjectionMatrix(camera.combined); shapeRenderer.setAutoShapeType(true); + spriteBatch = new SpriteBatch(); + spriteBatch.setProjectionMatrix(camera.combined); } private void setColor(int r, int g, int b) { @@ -53,46 +59,57 @@ public class GameRenderer { int maxY = (int) ((camera.position.y+camera.viewportHeight)/16)+1; if (minX<0) minX=0; if (minY<0) minY=0; - if (maxX>=gameProc.world.getWidth()) maxX = gameProc.world.getWidth()-1; - if (maxY>=gameProc.world.getHeight()) maxY = gameProc.world.getHeight()-1; + if (maxX>gameProc.world.getWidth()) maxX = gameProc.world.getWidth(); + if (maxY>gameProc.world.getHeight()) maxY = gameProc.world.getHeight(); for (int y=minY; y0) { - setColor(128,128,128); - fillRect(x*16-camera.position.x, - y*16-camera.position.y,16,16); - setColor(0,0,0); - drawRect(x*16-camera.position.x, - y*16-camera.position.y,16,16); - } else { - if (gameProc.world.getBackMap(x,y)>0) { - setColor(64,64,64); - fillRect(x*16-camera.position.x, - y*16-camera.position.y,16,16); - setColor(0,0,0); - drawRect(x*16-camera.position.x, - y*16-camera.position.y,16,16); - } + spriteBatch.draw( + BlocksLoader.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).getTexture(), + x * 16 - camera.position.x,y * 16 - camera.position.y); + } else if (gameProc.world.getBackMap(x,y)>0) { + spriteBatch.draw( + BlocksLoader.BLOCKS.getValueAt(gameProc.world.getBackMap(x,y)).getTexture(), + x * 16 - camera.position.x,y * 16 - camera.position.y); + Assets.shade.setPosition(x * 16 - camera.position.x,y * 16 - camera.position.y); + Assets.shade.draw(spriteBatch); } - } } - shapeRenderer.setColor(Color.ORANGE); - drawRect(gameProc.cursorX*16-camera.position.x, - gameProc.cursorY*16-camera.position.y,16,16); } private void drawPlayer(Player pl) { - setColor(0,128,0); - fillRect(pl.position.x - camera.position.x, - pl.position.y - camera.position.y, pl.width, pl.height); + Assets.playerSprite[pl.dir].setPosition(pl.position.x - camera.position.x, + pl.position.y - camera.position.y); + Assets.playerSprite[pl.dir].draw(spriteBatch); + } + + private void drawGUI() { + spriteBatch.draw(Assets.invBar, camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2, + camera.viewportHeight - Assets.invBar.getRegionHeight()); + for (int i=0; i<8; i++) { + if (gameProc.player.inventory[i]>0) { + spriteBatch.draw(BlocksLoader.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture(), + camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2+3+i*20, + camera.viewportHeight-19); + } + } + spriteBatch.draw(Assets.invCur, + camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2 - 1 + 20*gameProc.invSlot, + camera.viewportHeight - Assets.invBar.getRegionHeight() - 2); } public void render() { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); - shapeRenderer.begin(); + spriteBatch.begin(); drawWorld(); drawPlayer(gameProc.player); + drawGUI(); + spriteBatch.end(); + shapeRenderer.begin(ShapeRenderer.ShapeType.Line); + shapeRenderer.setColor(Color.ORANGE); + drawRect(gameProc.cursorX*16-camera.position.x, + gameProc.cursorY*16-camera.position.y,16,16); shapeRenderer.end(); }