Prechádzať zdrojové kódy

character animation, main menu, gamestate

Hudriwudri 5 rokov pred
rodič
commit
fd227ea165

BIN
res/character/characterWalkRight.png


+ 31 - 9
src/pathgame/PathGame.java

@@ -2,28 +2,35 @@ package pathgame;
 
 
 import me.hammerle.snuviengine.api.IGame;
 import me.hammerle.snuviengine.api.IGame;
 import me.hammerle.snuviengine.api.Renderer;
 import me.hammerle.snuviengine.api.Renderer;
+import pathgame.gameplay.Gamestate;
 import pathgame.gameplay.Keys;
 import pathgame.gameplay.Keys;
+import pathgame.gameplay.Menu;
 import pathgame.rendering.TileMapRenderer;
 import pathgame.rendering.TileMapRenderer;
 import pathgame.tilemap.TileMap;
 import pathgame.tilemap.TileMap;
 import pathgame.tilemap.TileMapGenerator;
 import pathgame.tilemap.TileMapGenerator;
 import pathgame.gameplay.Player;
 import pathgame.gameplay.Player;
 import pathgame.rendering.HUDRenderer;
 import pathgame.rendering.HUDRenderer;
+import pathgame.rendering.MenuRenderer;
 import pathgame.rendering.PlayerRenderer;
 import pathgame.rendering.PlayerRenderer;
 import pathgame.rendering.TileRenderer;
 import pathgame.rendering.TileRenderer;
 
 
 public class PathGame implements IGame
 public class PathGame implements IGame
 {
 {
+
     private final TileMapRenderer mapRenderer = new TileMapRenderer();
     private final TileMapRenderer mapRenderer = new TileMapRenderer();
     private final TileMap map = TileMapGenerator.getMap(50, 50, 2);
     private final TileMap map = TileMapGenerator.getMap(50, 50, 2);
 
 
     private final PlayerRenderer playerRenderer = new PlayerRenderer();
     private final PlayerRenderer playerRenderer = new PlayerRenderer();
     private final Player player = new Player(100, 10);
     private final Player player = new Player(100, 10);
-    
+
+    private final MenuRenderer menuRenderer = new MenuRenderer();
+    private final Menu menu = new Menu();
+
     private final HUDRenderer hudRenderer = new HUDRenderer();
     private final HUDRenderer hudRenderer = new HUDRenderer();
-    
+
     private float lastScale = 1.0f;
     private float lastScale = 1.0f;
     private float scale = 1.0f;
     private float scale = 1.0f;
-    
+
     public PathGame()
     public PathGame()
     {
     {
     }
     }
@@ -32,8 +39,15 @@ public class PathGame implements IGame
     public void tick()
     public void tick()
     {
     {
         mapRenderer.tick();
         mapRenderer.tick();
-        player.tick(map);
-        
+        if(Gamestate.gamestate.equals(Gamestate.gamestates.GAMEPLAY))
+        {
+            player.tick(map);
+        }
+        if(Gamestate.gamestate.equals(Gamestate.gamestates.MAINMENU))
+        {
+            menu.tick();
+        }
+
         lastScale = scale;
         lastScale = scale;
         if(Keys.ZOOM_IN_KEY.isDown())
         if(Keys.ZOOM_IN_KEY.isDown())
         {
         {
@@ -43,21 +57,29 @@ public class PathGame implements IGame
         {
         {
             scale /= 1.1f;
             scale /= 1.1f;
         }
         }
-        
+
     }
     }
 
 
     @Override
     @Override
     public void renderTick(Renderer r, float lag)
     public void renderTick(Renderer r, float lag)
     {
     {
+
         float interScale = lastScale + (scale - lastScale) * lag;
         float interScale = lastScale + (scale - lastScale) * lag;
         mapRenderer.setScale(interScale);
         mapRenderer.setScale(interScale);
-        
+
         float offX = getMapOffsetX(r, lag, interScale);
         float offX = getMapOffsetX(r, lag, interScale);
         float offY = getMapOffsetY(r, lag, interScale);
         float offY = getMapOffsetY(r, lag, interScale);
 
 
         mapRenderer.renderTick(map, r, false, offX, offY);
         mapRenderer.renderTick(map, r, false, offX, offY);
-        playerRenderer.renderTick(map, mapRenderer, r, player, lag, offX, offY);
-        hudRenderer.renderTick(r, player, lag); 
+        if(Gamestate.gamestate.equals(Gamestate.gamestates.GAMEPLAY))
+        {
+            playerRenderer.renderTick(map, mapRenderer, r, player, lag, offX, offY);
+            hudRenderer.renderTick(r, player, lag);
+        }
+        if(Gamestate.gamestate.equals(Gamestate.gamestates.MAINMENU))
+        {
+            menuRenderer.renderTick(r, lag, menu);
+        }
     }
     }
 
 
     private float getMapOffsetX(Renderer r, float lag, float interScale)
     private float getMapOffsetX(Renderer r, float lag, float interScale)

+ 9 - 0
src/pathgame/gameplay/Gamestate.java

@@ -0,0 +1,9 @@
+
+package pathgame.gameplay;
+
+
+public class Gamestate
+{
+    public enum gamestates {GAMEPLAY, MAINMENU, ESCMENU}
+    public static gamestates gamestate = gamestates.MAINMENU;
+}

+ 1 - 0
src/pathgame/gameplay/Keys.java

@@ -12,4 +12,5 @@ public class Keys
     public static final KeyBinding RIGHT_KEY = KeyHandler.register(GLFW.GLFW_KEY_D);
     public static final KeyBinding RIGHT_KEY = KeyHandler.register(GLFW.GLFW_KEY_D);
     public static final KeyBinding ZOOM_IN_KEY = KeyHandler.register(GLFW.GLFW_KEY_I);
     public static final KeyBinding ZOOM_IN_KEY = KeyHandler.register(GLFW.GLFW_KEY_I);
     public static final KeyBinding ZOOM_OUT_KEY = KeyHandler.register(GLFW.GLFW_KEY_O);
     public static final KeyBinding ZOOM_OUT_KEY = KeyHandler.register(GLFW.GLFW_KEY_O);
+    public static final KeyBinding CONFIRM_KEY = KeyHandler.register(GLFW.GLFW_KEY_ENTER);
 }
 }

+ 0 - 5
src/pathgame/gameplay/LastPlayerMinusSteps.java

@@ -1,8 +1,3 @@
-/*
- * 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;
 package pathgame.gameplay;
 
 
 import java.util.LinkedList;
 import java.util.LinkedList;

+ 71 - 0
src/pathgame/gameplay/Menu.java

@@ -0,0 +1,71 @@
+package pathgame.gameplay;
+
+import pathgame.rendering.MenuRenderer;
+
+public class Menu
+{
+
+    public enum menuButtons
+    {
+        START, OPTIONS, EXIT
+    }
+
+    private menuButtons activeButton = menuButtons.START;
+
+    public void tick()
+    {
+
+        if(Keys.UP_KEY.isDown() && Keys.UP_KEY.getTime() == 1 || (Keys.UP_KEY.getTime() >= 20 && Keys.UP_KEY.getTime() % 5 == 1))
+        {
+            activeButton = getPrevButton(activeButton);
+            System.out.println(activeButton);
+        }
+        else if(Keys.DOWN_KEY.isDown() && Keys.DOWN_KEY.getTime() == 1 || (Keys.DOWN_KEY.getTime() >= 20 && Keys.DOWN_KEY.getTime() % 5 == 1))
+        {
+            activeButton = getNextButton(activeButton);
+            System.out.println(activeButton);
+        }
+        else if(Keys.CONFIRM_KEY.isDown())
+        {
+            if(activeButton.equals(menuButtons.EXIT))
+            {
+
+                System.exit(0);
+            }
+            else if(activeButton.equals(menuButtons.START))
+            {
+                Gamestate.gamestate = Gamestate.gamestates.GAMEPLAY;
+            }
+
+        }
+
+    }
+
+    public menuButtons getActiveButton()
+    {
+        return activeButton;
+    }
+
+    public boolean isActiveButton(menuButtons button)
+    {
+        return activeButton.equals(button);
+    }
+
+    private menuButtons getNextButton(menuButtons e)
+    {
+        int index = e.ordinal();
+        int nextIndex = index + 1;
+        menuButtons[] btns = menuButtons.values();
+        nextIndex %= btns.length;
+        return btns[nextIndex];
+    }
+
+    private menuButtons getPrevButton(menuButtons e)
+    {
+        int index = e.ordinal();
+        menuButtons[] btns = menuButtons.values();
+        int nextIndex = index + btns.length - 1;
+        nextIndex %= btns.length;
+        return btns[nextIndex];
+    }
+}

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

@@ -1,14 +1,5 @@
-/*
- * 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;
 package pathgame.gameplay;
 
 
-/**
- *
- * @author Julia
- */
 public class MinusStepsValues
 public class MinusStepsValues
 {
 {
 
 

+ 11 - 7
src/pathgame/gameplay/Player.java

@@ -131,7 +131,7 @@ public class Player
             moveY = Math.min(moveY, d);
             moveY = Math.min(moveY, d);
         }
         }
 
 
-        System.out.println(moveX);
+        //System.out.println(moveX);
         x += moveX;
         x += moveX;
         y += moveY;
         y += moveY;
     }
     }
@@ -141,6 +141,16 @@ public class Player
         return Math.abs(x - Math.round(x)) < 0.01f && Math.abs(y - Math.round(y)) < 0.01f;
         return Math.abs(x - Math.round(x)) < 0.01f && Math.abs(y - Math.round(y)) < 0.01f;
     }
     }
 
 
+    public float getVelX()
+    {
+        return velX;
+    }
+
+    public float getVelY()
+    {
+        return velY;
+    }
+
     public int getEnergySupply()
     public int getEnergySupply()
     {
     {
         return energySupply;
         return energySupply;
@@ -170,10 +180,4 @@ public class Player
     {
     {
         return lastSteps;
         return lastSteps;
     }
     }
-//    public int getMinusEnergy()
-//    {
-//        int mEnergy = minusEnergy;
-//        minusEnergy = 0;
-//        return mEnergy;
-//    }
 }
 }

+ 4 - 4
src/pathgame/rendering/HUDRenderer.java

@@ -16,6 +16,9 @@ public class HUDRenderer
 
 
     public void renderTick(Renderer r, Player p, float lag)//TileMap map, TileMapRenderer map, float lag, float offX, float offY)
     public void renderTick(Renderer r, Player p, float lag)//TileMap map, TileMapRenderer map, float lag, float offX, float offY)
     {
     {
+        r.translateTo(0.0f, 0.0f);
+        r.scale(2.0f, 2.0f);    
+        r.updateMatrix();
 
 
         renderHUDBackgound(r);
         renderHUDBackgound(r);
         renderObjectiveTracker(r, p);
         renderObjectiveTracker(r, p);
@@ -45,9 +48,6 @@ public class HUDRenderer
         //render ObjectiveTracker
         //render ObjectiveTracker
         String objectiveTracker = String.valueOf(p.getObjectivesVisited()) + "/" + String.valueOf(p.getObjectivesAmount()) + " Towns";
         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);
         r.getFontRenderer().drawString(2, 1, objectiveTracker);
     }
     }
 
 
@@ -76,7 +76,7 @@ public class HUDRenderer
         r.setBlendingEnabled(true);
         r.setBlendingEnabled(true);
 
 
         float energyPercent = 100 / (float) p.getEnergySupply() * (float) p.getEnergyLeft() / 100;
         float energyPercent = 100 / (float) p.getEnergySupply() * (float) p.getEnergyLeft() / 100;
-        System.out.println(energyPercent);
+        //System.out.println(energyPercent);
         ENERGYBARGREY.bind();
         ENERGYBARGREY.bind();
         r.getTextureRenderer().drawRectangle(100, 0, (r.getViewWidth() / 2 - 5), 10, 0, 0, 1, 1);
         r.getTextureRenderer().drawRectangle(100, 0, (r.getViewWidth() / 2 - 5), 10, 0, 0, 1, 1);
 
 

+ 47 - 0
src/pathgame/rendering/MenuRenderer.java

@@ -0,0 +1,47 @@
+package pathgame.rendering;
+
+import me.hammerle.snuviengine.api.Renderer;
+import pathgame.gameplay.Keys;
+import pathgame.gameplay.Menu;
+
+public class MenuRenderer
+{
+    public void renderTick(Renderer r, float lag, Menu menu)
+    {
+        r.translateTo(0.0f, 0.0f);
+        r.scale(2.0f, 2.0f);
+        r.updateMatrix();
+
+        renderBackground(r);
+        renderButton("Start", r.getViewHeight() * 0.25f - 20 - r.getFontRenderer().getSize("Start").getHeight() * 0.5f, menu.isActiveButton(Menu.menuButtons.START), r);
+        renderButton("Options", r.getViewHeight() * 0.25f - r.getFontRenderer().getSize("Options").getHeight() * 0.5f, menu.isActiveButton(Menu.menuButtons.OPTIONS), r);
+        renderButton("Exit", r.getViewHeight() * 0.25f + 20 - r.getFontRenderer().getSize("Exit").getHeight() * 0.5f, menu.isActiveButton(Menu.menuButtons.EXIT), r);
+    }
+
+    void renderButton(String text, float y, boolean active, Renderer r)
+    {
+        r.setMixColorEnabled(false);
+        r.setColorEnabled(true);
+        r.setTextureEnabled(true);
+        String s = text;
+        if(active)
+        {
+            s = "&f" + s;
+        }
+        else
+        {
+            s = "&7" + s;
+        }
+        r.getFontRenderer().drawString(r.getViewWidth() * 0.25f - (r.getFontRenderer().getSize(s).getWidth() * 0.5f), y, s);
+    }
+
+    void renderBackground(Renderer r)
+    {
+        r.setMixColorEnabled(true);
+        r.setColorEnabled(true);
+        r.setTextureEnabled(false);
+        r.setBlendingEnabled(true);
+
+        r.getColorRenderer().drawRectangle(r.getViewWidth() * 0.25f - 100, r.getViewHeight() * 0.25f - 50, r.getViewWidth() * 0.25f + 100, r.getViewHeight() * 0.25f + 50, 0x33_00_00_00);//ABGR
+    }
+}

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

@@ -9,9 +9,9 @@ public class PlayerRenderer
 {
 {
 
 
     private static final Texture CHARACTER = new Texture("res/character/characterFront.png");
     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");
-    //private static final Texture characterBack = new Texture("res/character/characterBack.png");
+    private static final Texture CHARACTERLEFT = new Texture("res/character/characterLeft.png");
+    private static final Texture CHARACTERRIGHT = new Texture("res/character/characterRight.png");
+    private static final Texture CHARACTERBACK = new Texture("res/character/characterBack.png");
 
 
     public void renderTick(TileMap map, TileMapRenderer mapR, Renderer r, Player p, float lag, float offX, float offY)
     public void renderTick(TileMap map, TileMapRenderer mapR, Renderer r, Player p, float lag, float offX, float offY)
     {
     {
@@ -24,8 +24,28 @@ public class PlayerRenderer
         r.translateTo(0.0f, 0.0f);
         r.translateTo(0.0f, 0.0f);
         r.updateMatrix();
         r.updateMatrix();
 
 
-        CHARACTER.bind();
-        //TODO: animation with velocity
+        //TODO: insert animations
+        if(p.getVelX() > 0)
+        {
+            CHARACTERRIGHT.bind();
+        }
+        else if(p.getVelX() < 0)
+        {
+            CHARACTERLEFT.bind();
+        }
+        else if(p.getVelY() > 0)
+        {
+            CHARACTER.bind();
+        }
+        else if(p.getVelY() < 0)
+        {
+            CHARACTERBACK.bind();
+        }
+        else
+        {
+            CHARACTER.bind();
+        }
+
         float ix = (p.getLastX() + (p.getX() - p.getLastX()) * lag) * mapR.getScale() * TileRenderer.TILE_SIZE + offX;
         float ix = (p.getLastX() + (p.getX() - p.getLastX()) * lag) * mapR.getScale() * TileRenderer.TILE_SIZE + offX;
 
 
         //System.out.println(ix);
         //System.out.println(ix);

+ 56 - 0
x

@@ -0,0 +1,56 @@
+commit 197a34ce72533feb900ebf39175dc1b0d1976a58 (HEAD -> gameplay, origin/master, origin/gameplay, origin/HEAD, master)
+Author: Hudriwudri <33928114+jpichler11@users.noreply.github.com>
+Date:   Mon Oct 21 22:58:36 2019 +0200
+
+    HUD - Energy Bar
+
+commit 4349899f54a6e820aa2aa06474c4cea4bf322388 (origin/tilemap)
+Author: Kajetan Johannes Hammerle <kajetan@hammerle.me>
+Date:   Mon Oct 21 13:10:14 2019 +0200
+
+    added mountains to texture atlas, setable map seed, forest generation
+
+commit df5be530ea3ef37921d5fc6e1763843a1d970e6b
+Author: Hudriwudri <33928114+jpichler11@users.noreply.github.com>
+Date:   Sun Oct 20 15:18:56 2019 +0200
+
+    HUD-Minus fuer gehen
+
+commit 5468c2169b8ca506539393d96032d948a81a5bad
+Author: Hudriwudri <33928114+jpichler11@users.noreply.github.com>
+Date:   Fri Oct 18 11:30:32 2019 +0200
+
+    HUD - Objective Tracker
+
+commit 09bbee05c885ce50b93b1a62e0c60c537acb9d2f
+Author: Hudriwudri <33928114+jpichler11@users.noreply.github.com>
+Date:   Tue Oct 15 16:20:45 2019 +0200
+
+    adapt speed to tile
+
+commit 5ae672fbce0c3b4ebdf28112a6da23e33953daec
+Author: Hudriwudri <33928114+jpichler11@users.noreply.github.com>
+Date:   Mon Oct 14 01:24:25 2019 +0200
+
+    added energy system
+
+commit 71c82986654e38492b4ea099a4d48e9edf847072
+Author: Kajetan Johannes Hammerle <kajetan@hammerle.me>
+Date:   Sun Oct 13 11:15:29 2019 +0200
+
+    integration of highmap, basic map generator, prevent map rendering
+    artifacts, registered new tiles and their renderers, updated texture
+    atlas
+
+commit 6327e9a5e545ff86aa00ba0a411d2cd148e4d706
+Merge: 466f0c6 efcd7da
+Author: Kajetan Johannes Hammerle <kajetan@hammerle.me>
+Date:   Sun Oct 13 09:48:41 2019 +0200
+
+    Merge branch 'master' of git.hammerle.me:kjhammerle/path-game into tilemap
+
+commit efcd7da9fcaf720d40ab6a148f4b2aa5d8d388e7
+Author: Hudriwudri <33928114+jpichler11@users.noreply.github.com>
+Date:   Tue Oct 8 15:22:34 2019 +0200
+
+    improve controls, map scrolling depending on player position, zoom, map border, player renderer, refactoring