소스 검색

HUD - Objective Tracker

Hudriwudri 5 년 전
부모
커밋
5468c2169b
3개의 변경된 파일64개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 1
      src/pathgame/PathGame.java
  2. 16 2
      src/pathgame/gameplay/Player.java
  3. 42 0
      src/pathgame/rendering/HUDRenderer.java

+ 6 - 1
src/pathgame/PathGame.java

@@ -7,6 +7,7 @@ import pathgame.rendering.TileMapRenderer;
 import pathgame.tilemap.TileMap;
 import pathgame.tilemap.TileMapGenerator;
 import pathgame.gameplay.Player;
+import pathgame.rendering.HUDRenderer;
 import pathgame.rendering.PlayerRenderer;
 import pathgame.rendering.TileRenderer;
 
@@ -16,7 +17,9 @@ public class PathGame implements IGame
     private final TileMap map = TileMapGenerator.getMap(50, 50);
 
     private final PlayerRenderer playerRenderer = new PlayerRenderer();
-    private final Player player = new Player(100);
+    private final Player player = new Player(100, 10);
+    
+    private final HUDRenderer hudRenderer = new HUDRenderer();
     
     private float lastScale = 1.0f;
     private float scale = 1.0f;
@@ -40,6 +43,7 @@ public class PathGame implements IGame
         {
             scale /= 1.1f;
         }
+        
     }
 
     @Override
@@ -53,6 +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); 
     }
 
     private float getMapOffsetX(Renderer r, float lag, float interScale)

+ 16 - 2
src/pathgame/gameplay/Player.java

@@ -19,10 +19,13 @@ public class Player
 
     private final int energySupply;
     private int energyUsed = 0;
+    private final int objectivesAmount;
+    private int objectivesVisited = 0;
 
-    public Player(int energySupply)
+    public Player(int energySupply, int objectivesAmount)
     {
         this.energySupply = energySupply;
+        this.objectivesAmount = objectivesAmount; 
     }
 
     public float getLastX()
@@ -58,10 +61,11 @@ public class Player
 
         if(isOnTile())
         {
+            
             velX = 0.0f;
             velY = 0.0f;
             if(isMoving)
-            {
+            {++objectivesVisited;//TODO check for objective
                 //System.out.print(map.getTile((int)x,(int) y).getEnergyCost());
 
                 energyUsed += currSpeedSlowdown;
@@ -157,4 +161,14 @@ public class Player
     {
         return energyUsed;
     }
+    
+    public int getObjectivesAmount()
+    {
+        return objectivesAmount;
+    }
+    
+    public int getObjectivesVisited()
+    {
+        return objectivesVisited;
+    }
 }

+ 42 - 0
src/pathgame/rendering/HUDRenderer.java

@@ -0,0 +1,42 @@
+package pathgame.rendering;
+
+import me.hammerle.snuviengine.api.Renderer;
+import pathgame.gameplay.Player;
+import pathgame.tilemap.TileMap;
+
+public class HUDRenderer
+{
+
+    public void renderTick(Renderer r, Player p)//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
+        
+        r.setMixColorEnabled(false);
+        r.setColorEnabled(true);
+        r.setTextureEnabled(true);
+        
+        //r.getFontRenderer().drawString(0, 0, "xx");
+        r.translateTo(0.0f, 0.0f);
+        r.scale(2.0f, 2.0f);
+        r.updateMatrix();
+        r.getFontRenderer().drawString(2, 1, objectiveTracker);
+        
+        r.getFontRenderer().drawString(
+                r.getViewWidth()*0.5f - 
+                r.getFontRenderer().getSize(energy).getWidth(), 
+                1, energy);
+        //r.getViewWidth() - r.getFontRenderer().getSize(energy).getWidth()
+        //r.getFontRenderer().
+    }
+
+}