Browse Source

new blocks, jump animation, sound experiments

Kajetan Johannes Hammerle 6 years ago
parent
commit
9733966651
39 changed files with 159 additions and 71 deletions
  1. BIN
      Fabian.wav
  2. 9 9
      levels/00.map
  3. 2 0
      src/me/hammerle/supersnuvi/entity/AnimatedEntity.java
  4. 4 3
      src/me/hammerle/supersnuvi/entity/Hero.java
  5. 14 0
      src/me/hammerle/supersnuvi/gamelogic/Level.java
  6. 42 13
      src/me/hammerle/supersnuvi/gamelogic/StateRenderer.java
  7. 14 0
      src/me/hammerle/supersnuvi/rendering/GameRenderer.java
  8. 0 1
      src/me/hammerle/supersnuvi/rendering/GameWindow.java
  9. BIN
      src/me/hammerle/supersnuvi/resources/end/end.png
  10. BIN
      src/me/hammerle/supersnuvi/resources/end/end2.png
  11. BIN
      src/me/hammerle/supersnuvi/resources/ice/ice.png
  12. BIN
      src/me/hammerle/supersnuvi/resources/shrooms/shroom.png
  13. BIN
      src/me/hammerle/supersnuvi/resources/shrooms/shroom2.png
  14. BIN
      src/me/hammerle/supersnuvi/resources/shrooms/shroom3.png
  15. BIN
      src/me/hammerle/supersnuvi/resources/shrooms/shroom4.png
  16. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime148.png
  17. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime149.png
  18. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime150.png
  19. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime151.png
  20. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime156.png
  21. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime157.png
  22. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime158.png
  23. BIN
      src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime159.png
  24. BIN
      src/me/hammerle/supersnuvi/resources/snuvi/snuvi_jump.png
  25. BIN
      src/me/hammerle/supersnuvi/resources/thorns/thorns_bottom.png
  26. BIN
      src/me/hammerle/supersnuvi/resources/thorns/thorns_mid.png
  27. BIN
      src/me/hammerle/supersnuvi/resources/thorns/thorns_top.png
  28. 10 0
      src/me/hammerle/supersnuvi/tiles/BaseBoxTile.java
  29. 0 1
      src/me/hammerle/supersnuvi/tiles/BaseTile.java
  30. 5 0
      src/me/hammerle/supersnuvi/tiles/BottledSoulTile.java
  31. 0 1
      src/me/hammerle/supersnuvi/tiles/ColoredBaseTile.java
  32. 6 0
      src/me/hammerle/supersnuvi/tiles/CrumblingStoneTile.java
  33. 3 10
      src/me/hammerle/supersnuvi/tiles/GoalTile.java
  34. 23 0
      src/me/hammerle/supersnuvi/tiles/KillTile.java
  35. 2 13
      src/me/hammerle/supersnuvi/tiles/SkyTile.java
  36. 3 4
      src/me/hammerle/supersnuvi/tiles/SlipperyTile.java
  37. 0 1
      src/me/hammerle/supersnuvi/tiles/SpikeTile.java
  38. 20 2
      src/me/hammerle/supersnuvi/tiles/Tile.java
  39. 2 13
      src/me/hammerle/supersnuvi/tiles/TrampolinTile.java

BIN
Fabian.wav


+ 9 - 9
levels/00.map

@@ -28,15 +28,15 @@
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1
+-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 161, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, -1, 64, 64, -1, -1, 64, 64, 64, 64, 64, 64, 64, -1, -1, -1, -1, -1, -1, 64, 64, -1, -1, 64, 64, 64, 64, 64, 64, 64, -1, -1
--1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1
--1, 22, 20, 20, 20, 20, 20, 20, 23, -1, -1, 32, -1, -1, -1, -1, -1, -1, 22, 20, 20, 20, 20, 20, 20, 23, -1, -1, 32, -1, -1, -1, -1, -1, -1
+-1, 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+-1, 177, -1, -1, -1, 64, 64, -1, -1, 64, 64, 64, 64, 64, 64, 64, -1, -1, -1, -1, -1, -1, 64, 64, -1, -1, 64, 64, 64, 64, 64, 64, 64, -1, -1
+-1, 177, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1
+-1, 176, -1, -1, 112, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1
+-1, 22, 20, 20, 148, 148, 148, 20, 23, -1, -1, 32, -1, -1, -1, -1, -1, -1, 22, 20, 20, 20, 20, 20, 20, 23, -1, -1, 32, -1, -1, -1, -1, -1, -1
 -1,  2,  0,  0,  0,  0,  0,  0,  1, 97, 97,  6,  5, 80, 80, -1, -1, -1,  2,  0,  0,  0,  0,  0,  0,  1, 97, 97,  6,  5, 80, 80, -1, -1, -1
  4,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  4,  4,  4,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  0,  0,  4,  4,  4
 #
@@ -56,7 +56,7 @@
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
--1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+-1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1

+ 2 - 0
src/me/hammerle/supersnuvi/entity/AnimatedEntity.java

@@ -39,6 +39,7 @@ public class AnimatedEntity extends Entity
         double motionX = getMotionX();
         if(isOnGround())
         {
+            setImage(face);
             if(motionX != 0)
             {
                 if(frame >= move.length)
@@ -55,6 +56,7 @@ public class AnimatedEntity extends Entity
         }
         else
         {
+            setImage(moveAir[0]);
             if(motionX != 0)
             {
                 if(frame >= moveAir.length)

+ 4 - 3
src/me/hammerle/supersnuvi/entity/Hero.java

@@ -25,8 +25,9 @@ public class Hero extends AnimatedEntity
         move[7] = Utils.getImage("snuvi/snuvi_frame8");
         move[8] = Utils.getImage("snuvi/snuvi_frame9");
         
-        moveAir = new Image[9];
-        moveAir[0] = Utils.getImage("snuvi/snuvi_frame1");
+        moveAir = new Image[1];
+        moveAir[0] = Utils.getImage("snuvi/snuvi_jump");
+        /*moveAir[0] = Utils.getImage("snuvi/snuvi_frame1");
         moveAir[1] = Utils.getImage("snuvi/snuvi_frame2");
         moveAir[2] = Utils.getImage("snuvi/snuvi_frame3");
         moveAir[3] = Utils.getImage("snuvi/snuvi_frame4");
@@ -34,7 +35,7 @@ public class Hero extends AnimatedEntity
         moveAir[5] = Utils.getImage("snuvi/snuvi_frame6");
         moveAir[6] = Utils.getImage("snuvi/snuvi_frame7");
         moveAir[7] = Utils.getImage("snuvi/snuvi_frame8");
-        moveAir[8] = Utils.getImage("snuvi/snuvi_frame9");
+        moveAir[8] = Utils.getImage("snuvi/snuvi_frame9");*/
     }
 
     @Override

+ 14 - 0
src/me/hammerle/supersnuvi/gamelogic/Level.java

@@ -114,6 +114,7 @@ public final class Level
     
     public void resetLevel()
     {
+        state.resetTiles();
         souls = 0;
         shouldReset = false;
         Hero h = spawnHero();
@@ -154,7 +155,20 @@ public final class Level
                     }
                 }
             }
+            
+            // hero is left from the first spawn, searching from the start
+            for(x = 0; x < width; x++)
+            {
+                for(y = 0; y < height; y++)
+                {
+                    if(background2[x][y] == StartTile.ID)
+                    {
+                        return new Hero(this, renderer.toCoord(x), renderer.toCoord(y), 32, 64);
+                    }
+                }
+            }
         }
+        // should never happen
         return new Hero(this, 0, 0, 32, 64);
     }
     

+ 42 - 13
src/me/hammerle/supersnuvi/gamelogic/StateRenderer.java

@@ -57,18 +57,18 @@ public class StateRenderer
         // dirt
         for(int i = 0; i < 16; i++)
         {
-            registeredTiles.put(i, new BaseTile("dirt/dirt" + i));
+            registeredTiles.put(i, new BaseBoxTile("dirt/dirt" + i));
         }
         
         // grass
-        registeredTiles.put(20, new BaseTile("grass/grass4"));
-        registeredTiles.put(21, new BaseTile("grass/grass7"));
-        registeredTiles.put(22, new BaseTile("grass/grass8"));
-        registeredTiles.put(23, new BaseTile("grass/grass9"));
-        registeredTiles.put(28, new BaseTile("grass/grass10"));
-        registeredTiles.put(29, new BaseTile("grass/grass14"));
-        registeredTiles.put(30, new BaseTile("grass/grass15"));
-        registeredTiles.put(31, new BaseTile("grass/grass16"));
+        registeredTiles.put(20, new BaseBoxTile("grass/grass4"));
+        registeredTiles.put(21, new BaseBoxTile("grass/grass7"));
+        registeredTiles.put(22, new BaseBoxTile("grass/grass8"));
+        registeredTiles.put(23, new BaseBoxTile("grass/grass9"));
+        registeredTiles.put(28, new BaseBoxTile("grass/grass10"));
+        registeredTiles.put(29, new BaseBoxTile("grass/grass14"));
+        registeredTiles.put(30, new BaseBoxTile("grass/grass15"));
+        registeredTiles.put(31, new BaseBoxTile("grass/grass16"));
         
         // bottled soul
         registeredTiles.put(BottledSoulTile.ID, new BottledSoulTile());
@@ -91,10 +91,34 @@ public class StateRenderer
         
         // sky
         registeredTiles.put(128, new SkyTile());
-        /*registeredTiles.put(4, new TrampolinTile().setDefaultCollisionBox());
-        registeredTiles.put(5, new Ice().setDefaultCollisionBox());
-        registeredTiles.put(6, new Water());
-        registeredTiles.put(7, new Goal());*/
+        
+        // ice
+        registeredTiles.put(144, new SlipperyTile("ice/ice"));
+        
+        // slippery slime
+        registeredTiles.put(148, new SlipperyTile("slippery_slime/slippery_slime148"));
+        registeredTiles.put(149, new SlipperyTile("slippery_slime/slippery_slime149"));
+        registeredTiles.put(150, new SlipperyTile("slippery_slime/slippery_slime150"));
+        registeredTiles.put(151, new SlipperyTile("slippery_slime/slippery_slime151"));
+        registeredTiles.put(156, new SlipperyTile("slippery_slime/slippery_slime156"));
+        registeredTiles.put(157, new SlipperyTile("slippery_slime/slippery_slime157"));
+        registeredTiles.put(158, new SlipperyTile("slippery_slime/slippery_slime158"));
+        registeredTiles.put(159, new SlipperyTile("slippery_slime/slippery_slime159"));
+        
+        // end level
+        registeredTiles.put(160, new GoalTile("end/end"));
+        registeredTiles.put(161, new GoalTile("end/end2"));
+        
+        // thorns
+        registeredTiles.put(176, new KillTile("thorns/thorns_bottom"));
+        registeredTiles.put(177, new KillTile("thorns/thorns_mid"));
+        registeredTiles.put(178, new KillTile("thorns/thorns_top"));
+        
+        // decoration shrooms
+        registeredTiles.put(208, new BaseTile("shrooms/shroom"));
+        registeredTiles.put(209, new BaseTile("shrooms/shroom2"));
+        registeredTiles.put(210, new BaseTile("shrooms/shroom3"));
+        registeredTiles.put(211, new BaseTile("shrooms/shroom4"));
     }
     
     public Image getTile(int id, int x, int y)
@@ -112,6 +136,11 @@ public class StateRenderer
         return registeredTiles.getOrDefault(id, FALLBACK_TILE);
     }
     
+    public void resetTiles()
+    {
+        registeredTiles.values().forEach(v -> v.reset());
+    }
+    
     // -------------------------------------------------------------------------
     // tick, rendering
     // -------------------------------------------------------------------------

+ 14 - 0
src/me/hammerle/supersnuvi/rendering/GameRenderer.java

@@ -1,5 +1,6 @@
 package me.hammerle.supersnuvi.rendering;
 
+import java.io.File;
 import me.hammerle.supersnuvi.gamelogic.StateRenderer;
 import javafx.animation.AnimationTimer;
 import javafx.scene.Scene;
@@ -7,6 +8,8 @@ import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.image.Image;
 import javafx.scene.input.KeyEvent;
+import javafx.scene.media.Media;
+import javafx.scene.media.MediaPlayer;
 import javafx.scene.paint.Color;
 import javafx.scene.paint.Paint;
 import me.hammerle.supersnuvi.input.KeyHandler;
@@ -93,6 +96,9 @@ public class GameRenderer extends AnimationTimer implements IGameRenderer
         });
     }
     
+    //public boolean once = true;
+    //public MediaPlayer mediaPlayer;
+    
     @Override
     public void handle(long now) 
     {
@@ -107,6 +113,14 @@ public class GameRenderer extends AnimationTimer implements IGameRenderer
             prepareRendering();
             state.tick(keys);
         }
+        
+        /*if(once)
+        {
+            once = false;
+            Media sound = new Media(new File("Fabian.wav").toURI().toString());
+            mediaPlayer = new MediaPlayer(sound);
+        }
+        mediaPlayer.play();*/
     }
     
     private void prepareRendering()

+ 0 - 1
src/me/hammerle/supersnuvi/rendering/GameWindow.java

@@ -5,7 +5,6 @@ import javafx.scene.Group;
 import javafx.scene.Scene;
 import javafx.scene.canvas.Canvas;
 import javafx.stage.Stage;
-import me.hammerle.supersnuvi.savegame.SimpleConfig;
 
 public class GameWindow extends Application
 {

BIN
src/me/hammerle/supersnuvi/resources/end/end.png


BIN
src/me/hammerle/supersnuvi/resources/end/end2.png


BIN
src/me/hammerle/supersnuvi/resources/ice/ice.png


BIN
src/me/hammerle/supersnuvi/resources/shrooms/shroom.png


BIN
src/me/hammerle/supersnuvi/resources/shrooms/shroom2.png


BIN
src/me/hammerle/supersnuvi/resources/shrooms/shroom3.png


BIN
src/me/hammerle/supersnuvi/resources/shrooms/shroom4.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime148.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime149.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime150.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime151.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime156.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime157.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime158.png


BIN
src/me/hammerle/supersnuvi/resources/slippery_slime/slippery_slime159.png


BIN
src/me/hammerle/supersnuvi/resources/snuvi/snuvi_jump.png


BIN
src/me/hammerle/supersnuvi/resources/thorns/thorns_bottom.png


BIN
src/me/hammerle/supersnuvi/resources/thorns/thorns_mid.png


BIN
src/me/hammerle/supersnuvi/resources/thorns/thorns_top.png


+ 10 - 0
src/me/hammerle/supersnuvi/tiles/BaseBoxTile.java

@@ -0,0 +1,10 @@
+package me.hammerle.supersnuvi.tiles;
+
+public class BaseBoxTile extends BaseTile
+{
+    public BaseBoxTile(String path)
+    {
+        super(path);
+        super.setDefaultCollisionBox();
+    }
+}

+ 0 - 1
src/me/hammerle/supersnuvi/tiles/BaseTile.java

@@ -10,7 +10,6 @@ public class BaseTile extends Tile
     public BaseTile(String path)
     {
         image = Utils.getTileImage(path);
-        super.setDefaultCollisionBox();
     }
 
     @Override

+ 5 - 0
src/me/hammerle/supersnuvi/tiles/BottledSoulTile.java

@@ -44,4 +44,9 @@ public class BottledSoulTile extends Tile
         return IMAGE;
     }
     
+    @Override
+    public void reset() 
+    {
+        states.clear();
+    } 
 }

+ 0 - 1
src/me/hammerle/supersnuvi/tiles/ColoredBaseTile.java

@@ -3,7 +3,6 @@ package me.hammerle.supersnuvi.tiles;
 import javafx.scene.image.Image;
 import javafx.scene.paint.Color;
 import me.hammerle.supersnuvi.rendering.GameRenderer;
-import me.hammerle.supersnuvi.util.CollisionBox;
 import me.hammerle.supersnuvi.util.Utils;
 
 public class ColoredBaseTile extends Tile

+ 6 - 0
src/me/hammerle/supersnuvi/tiles/CrumblingStoneTile.java

@@ -67,4 +67,10 @@ public class CrumblingStoneTile extends Tile
             return v;
         });
     }
+
+    @Override
+    public void reset() 
+    {
+        states.clear();
+    } 
 }

+ 3 - 10
src/me/hammerle/supersnuvi/tiles/GoalTile.java

@@ -1,16 +1,15 @@
 package me.hammerle.supersnuvi.tiles;
 
-import javafx.scene.image.Image;
 import me.hammerle.supersnuvi.entity.Entity;
 import me.hammerle.supersnuvi.entity.Hero;
-import me.hammerle.supersnuvi.gamelogic.StateRenderer;
 import me.hammerle.supersnuvi.util.CollisionBox;
 import me.hammerle.supersnuvi.util.Face;
 
-public class GoalTile extends Tile
+public class GoalTile extends BaseTile
 {
-    public GoalTile() 
+    public GoalTile(String path) 
     {
+        super(path);
         super.setCollisionBox(CollisionBox.createScaledBox(0.1, 0.1, 0.9, 0.9));
     }
 
@@ -22,10 +21,4 @@ public class GoalTile extends Tile
             ent.getLevel().finishLevel();
         }
     }
-
-    @Override
-    public Image getImage(int x, int y) 
-    {
-        return StateRenderer.FALLBACK_TILE.getImage(x, y);
-    }
 }

+ 23 - 0
src/me/hammerle/supersnuvi/tiles/KillTile.java

@@ -0,0 +1,23 @@
+package me.hammerle.supersnuvi.tiles;
+
+import me.hammerle.supersnuvi.entity.Entity;
+import me.hammerle.supersnuvi.entity.Hero;
+import me.hammerle.supersnuvi.util.Face;
+
+public class KillTile extends BaseBoxTile
+{
+    public KillTile(String path) 
+    {
+        super(path);
+    }
+
+    @Override
+    public void onEntityCollide(Entity ent, int x, int y, Face face) 
+    {
+        super.onEntityCollide(ent, x, y, face);
+        if(ent instanceof Hero)
+        {
+            ent.getLevel().scheduleReset();
+        }
+    }
+}

+ 2 - 13
src/me/hammerle/supersnuvi/tiles/SkyTile.java

@@ -1,20 +1,9 @@
 package me.hammerle.supersnuvi.tiles;
 
-import javafx.scene.image.Image;
-import me.hammerle.supersnuvi.util.Utils;
-
-public class SkyTile extends Tile
+public class SkyTile extends BaseTile
 {
-    private final Image image;
-    
     public SkyTile()
     {
-        image = Utils.getTileImage("sky/sky");
-    }
-    
-    @Override
-    public Image getImage(int x, int y) 
-    {
-        return image;
+        super("sky/sky");
     }
 }

+ 3 - 4
src/me/hammerle/supersnuvi/tiles/IceTile.java → src/me/hammerle/supersnuvi/tiles/SlipperyTile.java

@@ -1,14 +1,13 @@
 package me.hammerle.supersnuvi.tiles;
 
-import javafx.scene.paint.Color;
 import me.hammerle.supersnuvi.entity.Entity;
 import me.hammerle.supersnuvi.util.Face;
 
-public class IceTile extends ColoredBaseTile
+public class SlipperyTile extends BaseBoxTile
 {
-    public IceTile() 
+    public SlipperyTile(String path) 
     {
-        super(new Color(0.5f, 0.5f, 0.5f, 1));
+        super(path);
     }
 
     @Override

+ 0 - 1
src/me/hammerle/supersnuvi/tiles/SpikeTile.java

@@ -26,7 +26,6 @@ public class SpikeTile extends Tile
         images[5] = Utils.getTileImage("spike_trap/spike_trap_frame3");
         images[6] = Utils.getTileImage("spike_trap/spike_trap_frame4");
         super.setCollisionBox(CollisionBox.createScaledBox(0.1, 0.1, 0.9, 0.9));
-        super.setMovementBox(CollisionBox.NULL_BOX);
     }
 
     @Override

+ 20 - 2
src/me/hammerle/supersnuvi/tiles/Tile.java

@@ -25,7 +25,14 @@ public abstract class Tile
      */
     public Tile setMovementBox(CollisionBox cb)
     {
-        this.movementCollision = cb.copy();
+        if(cb == CollisionBox.NULL_BOX)
+        {
+            this.movementCollision = null;
+        }
+        else
+        {
+            this.movementCollision = cb.copy();
+        }
         return this;
     }
     
@@ -36,7 +43,14 @@ public abstract class Tile
      */
     public Tile setCollisionBox(CollisionBox cb)
     {
-        this.collisionBox = cb.copy();
+        if(cb == CollisionBox.NULL_BOX)
+        {
+            this.collisionBox = null;
+        }
+        else
+        {
+            this.collisionBox = cb.copy();
+        }
         return this;
     }
     
@@ -93,4 +107,8 @@ public abstract class Tile
     {
         return x | (((long) y) << 32);
     }
+    
+    public void reset()
+    {
+    }
 }

+ 2 - 13
src/me/hammerle/supersnuvi/tiles/TrampolinTile.java

@@ -1,18 +1,13 @@
 package me.hammerle.supersnuvi.tiles;
 
-import javafx.scene.image.Image;
 import me.hammerle.supersnuvi.entity.Entity;
 import me.hammerle.supersnuvi.util.Face;
-import me.hammerle.supersnuvi.util.Utils;
 
-public class TrampolinTile extends Tile
+public class TrampolinTile extends BaseBoxTile
 {
-    private final Image image;
-    
     public TrampolinTile() 
     {
-        image = Utils.getTileImage("bounce_shroom/bounce_shroom");
-        super.setDefaultCollisionBox();
+        super("bounce_shroom/bounce_shroom");
     }
 
     @Override
@@ -32,10 +27,4 @@ public class TrampolinTile extends Tile
             }
         }
     }
-
-    @Override
-    public Image getImage(int x, int y) 
-    {
-        return image;
-    }
 }