Browse Source

HUD - Energy Bar

Hudriwudri 5 years ago
parent
commit
197a34ce72

BIN
res/energyBar.png


BIN
res/energyBarGrey.png


+ 2 - 2
src/pathgame/gameplay/lastPlayerSteps.java → src/pathgame/gameplay/LastPlayerMinusSteps.java

@@ -7,7 +7,7 @@ package pathgame.gameplay;
 
 import java.util.LinkedList;
 
-public class lastPlayerSteps
+public class LastPlayerMinusSteps
 {
 
     private LinkedList<MinusStepsValues> minusEnergy = new LinkedList<>();
@@ -19,7 +19,7 @@ public class lastPlayerSteps
 
     public void addMinus(int minusValue, float x, float y)
     {
-        MinusStepsValues values = new MinusStepsValues(minusValue, x, y);
+        MinusStepsValues values = new MinusStepsValues(minusValue);
         addMinus(values);
     }
 

+ 11 - 32
src/pathgame/gameplay/MinusStepsValues.java

@@ -13,22 +13,14 @@ public class MinusStepsValues
 {
 
     private int minusValue;
-    private float x;
-    private float y;
-    private float diffX;
-    private float diffY;
+    private float diffY = 0;
+    private float lastDiffY = 0;
     private float lifeTime;
-    private float alpha;
 
-    MinusStepsValues(int minusValue, float x, float y)
+    MinusStepsValues(int minusValue)
     {
         this.minusValue = minusValue;
-        //this.x = x;
-        //this.y= y;
-        this.x = 1;
-        this.y = 1;
         lifeTime = 3;
-        alpha = 1;
     }
 
     public int getMinusValue()
@@ -36,16 +28,6 @@ public class MinusStepsValues
         return minusValue;
     }
 
-    public float getX()
-    {
-        return x;
-    }
-
-    public float getY()
-    {
-        return y;
-    }
-
     public float getLifeTime()
     {
         return lifeTime;
@@ -56,18 +38,15 @@ public class MinusStepsValues
         return diffY;
     }
 
-    public void updateMinusValues(float lag)
+    public float getLastDiffY()
     {
-        lifeTime -= lag / 10;
-        y += lag / 100;
-
-        diffY += lag / 100;
+        return lastDiffY;
+    }
 
-        alpha -= lag / 10;
-        if(alpha < 0)
-        {
-            alpha = 0;
-        }
-        //x -= lag/1000;
+    public void updateMinusValues()
+    {
+        lastDiffY = diffY;
+        lifeTime -= 0.07f;
+        diffY += 0.16f;
     }
 }

+ 8 - 18
src/pathgame/gameplay/Player.java

@@ -4,6 +4,7 @@ import pathgame.tilemap.TileMap;
 
 public class Player
 {
+
     private static final float SPEED = 0.125f;
 
     private float lastX = 0;
@@ -20,13 +21,13 @@ public class Player
     private int energyUsed = 0;
     private final int objectivesAmount;
     private int objectivesVisited = 0;
-    private lastPlayerSteps lastSteps = new lastPlayerSteps();
+    private LastPlayerMinusSteps lastSteps = new LastPlayerMinusSteps();
     //private int minusEnergy = 0;
 
     public Player(int energySupply, int objectivesAmount)
     {
         this.energySupply = energySupply;
-        this.objectivesAmount = objectivesAmount; 
+        this.objectivesAmount = objectivesAmount;
     }
 
     public float getLastX()
@@ -51,19 +52,13 @@ public class Player
 
     public void tick(TileMap map)
     {
-        
         currSpeedSlowdown = map.getTile(Math.round(x), Math.round(y)).getEnergyCost();
         lastX = x;
         lastY = y;
 
-        if(velY != 0)
-        {
-            //System.out.println(velY + " " + currSpeedSlowdown + " " + y);
-        }
-
         if(isOnTile())
         {
-            
+
             velX = 0.0f;
             velY = 0.0f;
             if(isMoving)
@@ -71,12 +66,7 @@ public class Player
                 ++objectivesVisited;//TODO check for objective
                 //System.out.print(map.getTile((int)x,(int) y).getEnergyCost());
                 lastSteps.addMinus(currSpeedSlowdown, x, y);
-                //minusEnergy = currSpeedSlowdown;
                 energyUsed += currSpeedSlowdown;
-                //currSpeedSlowdown = 1;
-                //TODO: +Energy
-                //Tile currTile = map.getTile((int)x,(int) y);
-
             }
             isMoving = false;
         }
@@ -165,18 +155,18 @@ public class Player
     {
         return energyUsed;
     }
-    
+
     public int getObjectivesAmount()
     {
         return objectivesAmount;
     }
-    
+
     public int getObjectivesVisited()
     {
         return objectivesVisited;
     }
-    
-    public lastPlayerSteps getLastSteps()
+
+    public LastPlayerMinusSteps getLastSteps()
     {
         return lastSteps;
     }

+ 72 - 27
src/pathgame/rendering/HUDRenderer.java

@@ -2,64 +2,109 @@ package pathgame.rendering;
 
 import java.util.Map;
 import me.hammerle.snuviengine.api.Renderer;
+import me.hammerle.snuviengine.api.Texture;
 import pathgame.gameplay.Player;
-import pathgame.gameplay.lastPlayerSteps;
+import pathgame.gameplay.LastPlayerMinusSteps;
 import pathgame.tilemap.TileMap;
 
 public class HUDRenderer
 {
 
-    private lastPlayerSteps lastSteps = new lastPlayerSteps();
+    private static final Texture ENERGYBAR = new Texture("res/energyBar.png");
+    private static final Texture ENERGYBARGREY = new Texture("res/energyBarGrey.png");
+    private LastPlayerMinusSteps lastSteps = new LastPlayerMinusSteps();
 
     public void renderTick(Renderer r, Player p, float lag)//TileMap map, TileMapRenderer map, float lag, float offX, float offY)
     {
 
-        String objectiveTracker = String.valueOf(p.getObjectivesVisited()) + "/" + String.valueOf(p.getObjectivesAmount()) + " Towns";
-        String energy = String.valueOf(p.getEnergyLeft()) + "/" + String.valueOf(p.getEnergySupply()) + " Energy used";
-        String minusEnergy = "";
-
-        //int mEnergy = p.getMinusEnergy();
-//        if(mEnergy>0)
-//        {
-//            minusEnergy = "-" + String.valueOf(mEnergy);
-//        }
         renderHUDBackgound(r);
+        renderObjectiveTracker(r, p);
+        renderEnergyBar(r, p);
+        //todo: render Energy Bar
+        renderEnergyText(r, p);
+        renderMinusEnergy(r, p, lag);
 
+    }
+
+    void renderHUDBackgound(Renderer r)
+    {
+        r.setMixColorEnabled(true);
+        r.setColorEnabled(true);
+        r.setTextureEnabled(false);
+        r.setBlendingEnabled(true);
+
+        r.getColorRenderer().drawRectangle(0, 0, r.getViewWidth(), 20, 0x33_00_00_00);//ABGR
+    }
+
+    void renderObjectiveTracker(Renderer r, Player p)
+    {
         r.setMixColorEnabled(false);
         r.setColorEnabled(true);
         r.setTextureEnabled(true);
 
         //render ObjectiveTracker
+        String objectiveTracker = String.valueOf(p.getObjectivesVisited()) + "/" + String.valueOf(p.getObjectivesAmount()) + " Towns";
+
         r.translateTo(0.0f, 0.0f);
         r.scale(2.0f, 2.0f);
         r.updateMatrix();
         r.getFontRenderer().drawString(2, 1, objectiveTracker);
+    }
+
+    void renderEnergyText(Renderer r, Player p)
+    {
+        r.setMixColorEnabled(false);
+        r.setColorEnabled(true);
+        r.setTextureEnabled(true);
+
+        String energy = String.valueOf(p.getEnergyLeft()) + "/" + String.valueOf(p.getEnergySupply());
 
-        //render energy
         r.getFontRenderer().drawString(
                 r.getViewWidth() * 0.5f
-                - r.getFontRenderer().getSize(energy).getWidth(),
+                - r.getFontRenderer().getSize(energy).getWidth() - 15,
                 1, energy);
-
-        //render minus Energy
-        for(int i = 0; i < p.getLastSteps().getLastPlayerSteps().size(); ++i)
-        {
-            minusEnergy = "-" + String.valueOf(p.getLastSteps().getLastPlayerSteps().get(i).getMinusValue());
-            //r.getFontRenderer().drawString(p.getLastSteps().getLastPlayerSteps().get(i).getX()*32, p.getLastSteps().getLastPlayerSteps().get(i).getY()*32, minusEnergy);
-            r.getFontRenderer().drawString(r.getViewWidth() * 0.5f - 144, 3 + (p.getLastSteps().getLastPlayerSteps().get(i).getDiffY() * 32), minusEnergy);
-            p.getLastSteps().getLastPlayerSteps().get(i).updateMinusValues(lag);
-        }
-
+//        r.getFontRenderer().drawString(
+//                111,
+//                1, energy);
     }
 
-    void renderHUDBackgound(Renderer r)
+    void renderEnergyBar(Renderer r, Player p)
     {
         r.setMixColorEnabled(true);
-        r.setColorEnabled(true);
-        r.setTextureEnabled(false);
+        r.setColorEnabled(false);
+        r.setTextureEnabled(true);
         r.setBlendingEnabled(true);
 
-        r.getColorRenderer().drawRectangle(0, 0, r.getViewWidth(), 20, 0x33_00_00_00);//ABGR
+        float energyPercent = 100 / (float) p.getEnergySupply() * (float) p.getEnergyLeft() / 100;
+        System.out.println(energyPercent);
+        ENERGYBARGREY.bind();
+        r.getTextureRenderer().drawRectangle(100, 0, (r.getViewWidth() / 2 - 5), 10, 0, 0, 1, 1);
+
+        ENERGYBAR.bind();
+        r.getTextureRenderer().drawRectangle(100, 0, (((r.getViewWidth() / 2 - 5) - 100) * (energyPercent)) + 100, 10, 0, 0, 1 * energyPercent, 1);
+
     }
 
+    void renderMinusEnergy(Renderer r, Player p, float lag)
+    {
+        r.setMixColorEnabled(false);
+        r.setColorEnabled(true);
+        r.setTextureEnabled(true);
+
+        String minusEnergy = "";
+
+        for(int i = 0; i < p.getLastSteps().getLastPlayerSteps().size(); ++i)
+        {
+            minusEnergy = "&4-" + String.valueOf(p.getLastSteps().getLastPlayerSteps().get(i).getMinusValue());
+            //r.getFontRenderer().drawString(p.getLastSteps().getLastPlayerSteps().get(i).getX()*32, p.getLastSteps().getLastPlayerSteps().get(i).getY()*32, minusEnergy);
+            float YPos = 3 + (p.getLastSteps().getLastPlayerSteps().get(i).getLastDiffY()
+                    + (p.getLastSteps().getLastPlayerSteps().get(i).getDiffY()
+                    - p.getLastSteps().getLastPlayerSteps().get(i).getLastDiffY())
+                    * lag);
+            //System.out.println(YPos);
+            r.getFontRenderer().drawString(r.getViewWidth() * 0.5f
+                    - 63, YPos, minusEnergy);
+            p.getLastSteps().getLastPlayerSteps().get(i).updateMinusValues(); //todo: outsource to tick
+        }
+    }
 }

+ 5 - 2
src/pathgame/rendering/PlayerRenderer.java

@@ -7,6 +7,7 @@ import pathgame.tilemap.TileMap;
 
 public class PlayerRenderer
 {
+
     private static final Texture CHARACTER = new Texture("res/character/characterFront.png");
     //private static final Texture characterLeft = new Texture("res/character/characterLeft.png");
     //private static final Texture characterRight = new Texture("res/character/characterRight.png");
@@ -25,8 +26,10 @@ public class PlayerRenderer
 
         CHARACTER.bind();
         //TODO: animation with velocity
-        float ix = (p.getLastX() + (p.getX() - p.getLastX()) * lag) * mapR.getScale()*TileRenderer.TILE_SIZE + offX;
-        float iy = (p.getLastY() + (p.getY() - p.getLastY()) * lag) * mapR.getScale()*TileRenderer.TILE_SIZE + offY;
+        float ix = (p.getLastX() + (p.getX() - p.getLastX()) * lag) * mapR.getScale() * TileRenderer.TILE_SIZE + offX;
+
+        //System.out.println(ix);
+        float iy = (p.getLastY() + (p.getY() - p.getLastY()) * lag) * mapR.getScale() * TileRenderer.TILE_SIZE + offY;
         r.getTextureRenderer().drawRectangle(ix, iy, ix + playerSize, iy + playerSize, 0, 0, 1, 1); //TODO: change last 4 texture coordinates for animation 
     }
 }