Browse Source

HUD-Minus fuer gehen

Hudriwudri 5 years ago
parent
commit
df5be530ea

+ 1 - 1
src/pathgame/PathGame.java

@@ -57,7 +57,7 @@ public class PathGame implements IGame
 
         mapRenderer.renderTick(map, r, false, offX, offY);
         playerRenderer.renderTick(map, mapRenderer, r, player, lag, offX, offY);
-        hudRenderer.renderTick(r, player); 
+        hudRenderer.renderTick(r, player, lag); 
     }
 
     private float getMapOffsetX(Renderer r, float lag, float interScale)

+ 73 - 0
src/pathgame/gameplay/MinusStepsValues.java

@@ -0,0 +1,73 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package pathgame.gameplay;
+
+/**
+ *
+ * @author Julia
+ */
+public class MinusStepsValues
+{
+
+    private int minusValue;
+    private float x;
+    private float y;
+    private float diffX;
+    private float diffY;
+    private float lifeTime;
+    private float alpha;
+
+    MinusStepsValues(int minusValue, float x, float y)
+    {
+        this.minusValue = minusValue;
+        //this.x = x;
+        //this.y= y;
+        this.x = 1;
+        this.y = 1;
+        lifeTime = 3;
+        alpha = 1;
+    }
+
+    public int getMinusValue()
+    {
+        return minusValue;
+    }
+
+    public float getX()
+    {
+        return x;
+    }
+
+    public float getY()
+    {
+        return y;
+    }
+
+    public float getLifeTime()
+    {
+        return lifeTime;
+    }
+
+    public float getDiffY()
+    {
+        return diffY;
+    }
+
+    public void updateMinusValues(float lag)
+    {
+        lifeTime -= lag / 10;
+        y += lag / 100;
+
+        diffY += lag / 100;
+
+        alpha -= lag / 10;
+        if(alpha < 0)
+        {
+            alpha = 0;
+        }
+        //x -= lag/1000;
+    }
+}

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

@@ -4,7 +4,6 @@ import pathgame.tilemap.TileMap;
 
 public class Player
 {
-
     private static final float SPEED = 0.125f;
 
     private float lastX = 0;
@@ -21,6 +20,8 @@ public class Player
     private int energyUsed = 0;
     private final int objectivesAmount;
     private int objectivesVisited = 0;
+    private lastPlayerSteps lastSteps = new lastPlayerSteps();
+    //private int minusEnergy = 0;
 
     public Player(int energySupply, int objectivesAmount)
     {
@@ -50,6 +51,7 @@ public class Player
 
     public void tick(TileMap map)
     {
+        
         currSpeedSlowdown = map.getTile(Math.round(x), Math.round(y)).getEnergyCost();
         lastX = x;
         lastY = y;
@@ -65,9 +67,11 @@ public class Player
             velX = 0.0f;
             velY = 0.0f;
             if(isMoving)
-            {++objectivesVisited;//TODO check for objective
+            {
+                ++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
@@ -171,4 +175,15 @@ public class Player
     {
         return objectivesVisited;
     }
+    
+    public lastPlayerSteps getLastSteps()
+    {
+        return lastSteps;
+    }
+//    public int getMinusEnergy()
+//    {
+//        int mEnergy = minusEnergy;
+//        minusEnergy = 0;
+//        return mEnergy;
+//    }
 }

+ 36 - 0
src/pathgame/gameplay/lastPlayerSteps.java

@@ -0,0 +1,36 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package pathgame.gameplay;
+
+import java.util.LinkedList;
+
+public class lastPlayerSteps
+{
+
+    private LinkedList<MinusStepsValues> minusEnergy = new LinkedList<>();
+
+    public void addMinus(MinusStepsValues minusEnergy)
+    {
+        this.minusEnergy.add(minusEnergy);
+    }
+
+    public void addMinus(int minusValue, float x, float y)
+    {
+        MinusStepsValues values = new MinusStepsValues(minusValue, x, y);
+        addMinus(values);
+    }
+
+    public LinkedList<MinusStepsValues> getLastPlayerSteps()
+    {
+
+        if(minusEnergy.size() > 0 && minusEnergy.getFirst().getLifeTime() <= 0)
+        {
+            minusEnergy.removeFirst();
+        }
+        return minusEnergy;
+    }
+
+}

+ 41 - 18
src/pathgame/rendering/HUDRenderer.java

@@ -1,42 +1,65 @@
 package pathgame.rendering;
 
+import java.util.Map;
 import me.hammerle.snuviengine.api.Renderer;
 import pathgame.gameplay.Player;
+import pathgame.gameplay.lastPlayerSteps;
 import pathgame.tilemap.TileMap;
 
 public class HUDRenderer
 {
 
-    public void renderTick(Renderer r, Player p)//TileMap map, TileMapRenderer map, float lag, float offX, float offY)
+    private lastPlayerSteps lastSteps = new lastPlayerSteps();
+
+    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";
-        
-        
-        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
-        
+        String minusEnergy = "";
+
+        //int mEnergy = p.getMinusEnergy();
+//        if(mEnergy>0)
+//        {
+//            minusEnergy = "-" + String.valueOf(mEnergy);
+//        }
+        renderHUDBackgound(r);
+
         r.setMixColorEnabled(false);
         r.setColorEnabled(true);
         r.setTextureEnabled(true);
-        
-        //r.getFontRenderer().drawString(0, 0, "xx");
+
+        //render ObjectiveTracker
         r.translateTo(0.0f, 0.0f);
         r.scale(2.0f, 2.0f);
         r.updateMatrix();
         r.getFontRenderer().drawString(2, 1, objectiveTracker);
-        
+
+        //render energy
         r.getFontRenderer().drawString(
-                r.getViewWidth()*0.5f - 
-                r.getFontRenderer().getSize(energy).getWidth(), 
+                r.getViewWidth() * 0.5f
+                - r.getFontRenderer().getSize(energy).getWidth(),
                 1, energy);
-        //r.getViewWidth() - r.getFontRenderer().getSize(energy).getWidth()
-        //r.getFontRenderer().
+
+        //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);
+        }
+
+    }
+
+    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
     }
 
 }