Browse Source

character animation, main menu, gamestate

Hudriwudri 5 năm trước cách đây
mục cha
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.Renderer;
+import pathgame.gameplay.Gamestate;
 import pathgame.gameplay.Keys;
+import pathgame.gameplay.Menu;
 import pathgame.rendering.TileMapRenderer;
 import pathgame.tilemap.TileMap;
 import pathgame.tilemap.TileMapGenerator;
 import pathgame.gameplay.Player;
 import pathgame.rendering.HUDRenderer;
+import pathgame.rendering.MenuRenderer;
 import pathgame.rendering.PlayerRenderer;
 import pathgame.rendering.TileRenderer;
 
 public class PathGame implements IGame
 {
+
     private final TileMapRenderer mapRenderer = new TileMapRenderer();
     private final TileMap map = TileMapGenerator.getMap(50, 50, 2);
 
     private final PlayerRenderer playerRenderer = new PlayerRenderer();
     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 float lastScale = 1.0f;
     private float scale = 1.0f;
-    
+
     public PathGame()
     {
     }
@@ -32,8 +39,15 @@ public class PathGame implements IGame
     public void 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;
         if(Keys.ZOOM_IN_KEY.isDown())
         {
@@ -43,21 +57,29 @@ public class PathGame implements IGame
         {
             scale /= 1.1f;
         }
-        
+
     }
 
     @Override
     public void renderTick(Renderer r, float lag)
     {
+
         float interScale = lastScale + (scale - lastScale) * lag;
         mapRenderer.setScale(interScale);
-        
+
         float offX = getMapOffsetX(r, lag, interScale);
         float offY = getMapOffsetY(r, lag, interScale);
 
         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)

+ 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 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 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;
 
 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;
 
-/**
- *
- * @author Julia
- */
 public class MinusStepsValues
 {
 

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

@@ -131,7 +131,7 @@ public class Player
             moveY = Math.min(moveY, d);
         }
 
-        System.out.println(moveX);
+        //System.out.println(moveX);
         x += moveX;
         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;
     }
 
+    public float getVelX()
+    {
+        return velX;
+    }
+
+    public float getVelY()
+    {
+        return velY;
+    }
+
     public int getEnergySupply()
     {
         return energySupply;
@@ -170,10 +180,4 @@ public class Player
     {
         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)
     {
+        r.translateTo(0.0f, 0.0f);
+        r.scale(2.0f, 2.0f);    
+        r.updateMatrix();
 
         renderHUDBackgound(r);
         renderObjectiveTracker(r, p);
@@ -45,9 +48,6 @@ public class HUDRenderer
         //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);
     }
 
@@ -76,7 +76,7 @@ public class HUDRenderer
         r.setBlendingEnabled(true);
 
         float energyPercent = 100 / (float) p.getEnergySupply() * (float) p.getEnergyLeft() / 100;
-        System.out.println(energyPercent);
+        //System.out.println(energyPercent);
         ENERGYBARGREY.bind();
         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 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)
     {
@@ -24,8 +24,28 @@ public class PlayerRenderer
         r.translateTo(0.0f, 0.0f);
         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;
 
         //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