X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavecraft%2Fgame%2FGameRenderer.java;h=00508b2b74e153bdeb219000c0bb5c9cc99b6274;hb=e5f474791112f95004f7e8f8ec96661884d7373f;hp=cc3bcdee8c9f849e89f1d8184bb68b397c4660e8;hpb=503cd1720db3f53b7cbf7e3819968044de29a465;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java b/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java index cc3bcde..00508b2 100644 --- a/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java +++ b/core/src/ru/deadsoftware/cavecraft/game/GameRenderer.java @@ -19,6 +19,8 @@ public class GameRenderer { private GameProc gameProc; + public boolean showCreative = false; + public OrthographicCamera camera, fontCam; ShapeRenderer shapeRenderer; SpriteBatch spriteBatch, fontBatch; @@ -27,8 +29,8 @@ public class GameRenderer { Gdx.gl.glClearColor(0f,.6f,.6f,1f); this.gameProc = gameProc; camera = new OrthographicCamera(); - camera.setToOrtho(true, 360, - 360*((float)GameScreen.getHeight()/GameScreen.getWidth())); + camera.setToOrtho(true, 480, + 480*((float)GameScreen.getHeight()/GameScreen.getWidth())); shapeRenderer = new ShapeRenderer(); shapeRenderer.setProjectionMatrix(camera.combined); @@ -61,7 +63,8 @@ public class GameRenderer { if (maxY>gameProc.world.getHeight()) maxY = gameProc.world.getHeight(); for (int y=minY; y0) { + if (gameProc.world.getForeMap(x,y)>0 && + !Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).foreground) { spriteBatch.draw( Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).getTexture(), x * 16 - camera.position.x,y * 16 - camera.position.y); @@ -76,6 +79,27 @@ public class GameRenderer { } } + private void drawWorldForeground(){ + int minX = (int) (camera.position.x/16); + int minY = (int) (camera.position.y/16); + int maxX = (int) ((camera.position.x+camera.viewportWidth)/16)+1; + 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(); + if (maxY>gameProc.world.getHeight()) maxY = gameProc.world.getHeight(); + for (int y=minY; y0 && + Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).foreground) { + spriteBatch.draw( + Items.BLOCKS.getValueAt(gameProc.world.getForeMap(x,y)).getTexture(), + x * 16 - camera.position.x,y * 16 - camera.position.y); + } + } + } + } + private void drawMob(Mob mob) { mob.draw(spriteBatch, mob.position.x-camera.position.x, mob.position.y-camera.position.y); @@ -119,9 +143,25 @@ public class GameRenderer { Assets.playerSkin[0][2].draw(spriteBatch); } + private void drawCreative() { + float x = camera.viewportWidth/2-Assets.creativeInv.getRegionWidth()/2; + float y = camera.viewportHeight/2 - Assets.creativeInv.getRegionHeight()/2; + spriteBatch.draw(Assets.creativeInv, x, y); + spriteBatch.draw(Assets.creativeScroll, x+156, y+18); + for (int i=1; i0) + spriteBatch.draw(Items.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture(), + x+8+i*18, y+184); + } + } + private void drawGUI() { spriteBatch.draw(Assets.invBar, camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2, 0); - for (int i=0; i<8; i++) { + for (int i=0; i<9; i++) { if (gameProc.player.inventory[i]>0) { spriteBatch.draw(Items.BLOCKS.getValueAt(gameProc.player.inventory[i]).getTexture(), camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2+3+i*20, @@ -132,6 +172,8 @@ public class GameRenderer { camera.viewportWidth/2 - Assets.invBar.getRegionWidth()/2 - 1 + 20*gameProc.invSlot, -1); + if (showCreative) drawCreative(); + if (CaveGame.TOUCH) { spriteBatch.draw(Assets.touchArrows[0],26,camera.viewportHeight-52); spriteBatch.draw(Assets.touchArrows[1],0,camera.viewportHeight-26); @@ -155,7 +197,9 @@ public class GameRenderer { drawWorld(); for (Mob mob : gameProc.mobs) drawMob(mob); drawPlayer(gameProc.player); + drawWorldForeground(); drawGUI(); + spriteBatch.end(); if (gameProc.ctrlMode==1) { @@ -175,7 +219,7 @@ public class GameRenderer { drawString("Y: "+(int)(gameProc.player.position.y/16), 0, 60); drawString("Block: "+ Items.BLOCKS.keys().toArray().get(gameProc.world.getForeMap( - (int)(gameProc.player.position.x/16), + (int)((gameProc.player.position.x+gameProc.player.texWidth/2)/16), (int)(gameProc.player.position.y/16+2))), 0, 80); fontBatch.end();