DEADSOFTWARE

Optimization
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / game / GameRenderer.java
index 72686d11e6484a83a5091f09776f499965236267..3d65ddc68faf2db0ed563a673991698b3ace6b8e 100644 (file)
@@ -2,6 +2,7 @@ package ru.deadsoftware.cavecraft.game;
 
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.graphics.GL20;
+import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
 import ru.deadsoftware.cavecraft.CaveGame;
 import ru.deadsoftware.cavecraft.GameScreen;
 import ru.deadsoftware.cavecraft.game.mobs.Mob;
@@ -46,8 +47,6 @@ public class GameRenderer extends Renderer {
                         drawX(x), drawY(y));
                 if (gp.world.getForeMap(x, y) == 0 && x == gp.curX && y == gp.curY)
                     drawWreck(gp.world.getBackMap(gp.curX, gp.curY));
-                Assets.shade.setPosition(drawX(x), drawY(y));
-                Assets.shade.draw(spriter);
             }
         }
         if (gp.world.getForeMap(x, y) > 0 && GameItems.getBlock(gp.world.getForeMap(x, y)).isBackground() == drawBG) {
@@ -71,6 +70,22 @@ public class GameRenderer extends Renderer {
                 drawBlock(x, y, bg);
             }
         }
+        if (bg) {
+            spriter.end();
+            Gdx.gl.glEnable(GL20.GL_BLEND);
+            Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
+            shaper.begin(ShapeRenderer.ShapeType.Filled);
+            shaper.setColor(0f, 0f, 0f, .5f);
+            for (int y = minY; y < maxY; y++) {
+                for (int x = minX; x < maxX; x++) {
+                    if ((gp.world.getForeMap(x, y) == 0 || GameItems.getBlock(gp.world.getForeMap(x, y)).isTransparent())
+                            && gp.world.getBackMap(x, y) > 0) shaper.rect(drawX(x), drawY(y), 16, 16);
+                }
+            }
+            shaper.end();
+            Gdx.gl.glDisable(GL20.GL_BLEND);
+            spriter.begin();
+        }
     }
 
     private void drawMob(Mob mob) {