Преглед изворни кода

tweaking, game is rendered twice as big, improved animations (different ticks)

Kajetan Johannes Hammerle пре 6 година
родитељ
комит
302e918045

+ 1 - 1
options.txt

@@ -12,4 +12,4 @@ key.left="Left"
 key.right="Right"
 key.run="Shift"
 key.up="Up"
-sound=false
+sound=true

+ 3 - 0
slot1.txt

@@ -1,3 +1,6 @@
 level.00-Tech Demo=true
 level.00-Tech Demo.bottles=3
 level.00-Tech Demo.time=4.125000000000025
+level.01-Parabola=true
+level.01-Parabola.bottles=4
+level.01-Parabola.time=76.27500000000877

+ 6 - 5
src/me/hammerle/supersnuvi/entity/EntityBuilder.java

@@ -16,6 +16,7 @@ import me.hammerle.supersnuvi.entity.components.ai.WalkController;
 import me.hammerle.supersnuvi.entity.components.animator.HeroAnimator;
 import me.hammerle.supersnuvi.entity.components.animator.EntityAnimator;
 import me.hammerle.supersnuvi.gamelogic.Level;
+import me.hammerle.supersnuvi.rendering.Game;
 
 public final class EntityBuilder 
 {
@@ -26,7 +27,7 @@ public final class EntityBuilder
     
     public static Entity buildHero(Level level, double x, double y)
     {
-        Entity hero = new Entity(level, x, y, 32.0, 64.0);
+        Entity hero = new Entity(level, x, y, Game.TILE_SIZE, Game.TILE_SIZE * 2);
         hero.animator = new HeroAnimator(hero);
         hero.controller = new HumanController(hero);
         hero.health = new DefaultHealth(hero, new Death() 
@@ -38,7 +39,7 @@ public final class EntityBuilder
                     }
                 }, 100.0);
         hero.energy = new DefaultEnergy(hero, 100.0);
-        hero.move = new DefaultMovement(hero, ent -> level.getData().getInt("jump", 12));
+        hero.move = new DefaultMovement(hero, ent -> level.getData().getInt("jump", 24));
         hero.itemCollector = new HeroItemCollector(hero);
         hero.movePenalty = new LandMovement(hero);
         return hero;
@@ -46,13 +47,13 @@ public final class EntityBuilder
     
     public static Entity buildTest(Level level, double x, double y)
     {
-        Entity hero = new Entity(level, x, y, 32.0, 64.0);
+        Entity hero = new Entity(level, x, y, Game.TILE_SIZE, Game.TILE_SIZE * 2);
         hero.animator = new HeroAnimator(hero);
         hero.controller = new FollowHeroController(hero, 1);
         //hero.controller = new HumanController(hero);
         hero.health = new DefaultHealth(hero, Death.NULL, 100.0);
         hero.energy = new DefaultEnergy(hero, 100.0);
-        hero.move = new DefaultMovement(hero, ent -> level.getData().getInt("jump", 12));
+        hero.move = new DefaultMovement(hero, ent -> level.getData().getInt("jump", 24));
         //hero.itemCollector = new HeroItemCollector(hero);
         hero.movePenalty = new LandMovement(hero);
         return hero;
@@ -66,7 +67,7 @@ public final class EntityBuilder
                 return buildTest(level, x, y);
             case 2:
             {
-                Entity ent = new Entity(level, x, y, 32.0, 64.0);
+                Entity ent = new Entity(level, x, y, Game.TILE_SIZE, Game.TILE_SIZE * 2);
                 ent.animator = new HeroAnimator(ent);
                 ent.controller = new WalkController(ent, 1);
                 ent.health = new DefaultHealth(ent, Death.NULL, 100.0);

+ 4 - 0
src/me/hammerle/supersnuvi/entity/components/DefaultEnergy.java

@@ -18,6 +18,10 @@ public class DefaultEnergy extends Energy
     public void tick() 
     {
         if(!ent.isMoving())
+        {
+            addEnergy(0.25);
+        }
+        else if(!ent.getController().isRunning())
         {
             addEnergy(0.1);
         }

+ 29 - 6
src/me/hammerle/supersnuvi/entity/components/DefaultHealth.java

@@ -7,23 +7,27 @@ public class DefaultHealth extends Health
     private final double maxHealth;
     private double health;
     
-    private int hurtTicks;
+    private int hurtTicks = 0;
+    private int invincibility = 0;
     
-    private int deathTicks;
-    private boolean isDead;
+    private int deathTicks = -1;
+    private boolean isDead = false;
     
     public DefaultHealth(Entity ent, Death death, double maxHealth) 
     {
         super(ent, death);
         this.maxHealth = maxHealth;
         this.health = maxHealth;
-        this.deathTicks = -1;
-        this.isDead = false;
     }
 
     @Override
     public void tick() 
     {
+        if(invincibility > 0)
+        {
+            invincibility--;
+        }
+        
         if(hurtTicks > 0)
         {
             hurtTicks--;
@@ -67,6 +71,12 @@ public class DefaultHealth extends Health
         return hurtTicks > 0;
     }
 
+    @Override
+    public boolean hasInvincibility() 
+    {
+        return invincibility > 0;
+    }
+
     @Override
     public boolean wasHealed() 
     {
@@ -88,7 +98,20 @@ public class DefaultHealth extends Health
     @Override
     public void addHealth(double h) 
     {
-        hurtTicks = h < 0 ? 10 : -5;
+        if(h < 0)
+        {
+            if(invincibility > 0)
+            {
+                return;
+            }
+            invincibility = 100;
+            ent.getAnimator().resetHeadFrames();
+            hurtTicks = 15;
+        }
+        else
+        {
+            hurtTicks = -5;
+        }
         health += h;
         if(health > maxHealth)
         {

+ 5 - 0
src/me/hammerle/supersnuvi/entity/components/Health.java

@@ -33,6 +33,11 @@ public class Health extends Component
         return false;
     }
     
+    public boolean hasInvincibility()
+    {
+        return false;
+    }
+    
     public boolean wasHealed()
     {
         return false;

+ 31 - 21
src/me/hammerle/supersnuvi/entity/components/ai/HumanController.java

@@ -98,7 +98,7 @@ public class HumanController extends EntityController
         }
         if(blockTimer >= ent.getAnimator().getBlockTicks())
         {
-            blockTimer = -60;
+            blockTimer = -80;
         }
         
         if(attackTimer != -1)
@@ -113,23 +113,29 @@ public class HumanController extends EntityController
         if(dodgeTimer != -1)
         {
             dodgeTimer++;
-            if(dodgeTimer > 5)
+            if(dodgeTimer > 12)
             {
                 dodgeTimer = -1;
+                ent.setMotionX(0.0);
+            }
+            else
+            {
+                ent.setMotionX(ent.getAnimator().drawImageFlipped() ? 10 : -10);
             }
-            
-            ent.setMotionX(ent.getAnimator().drawImageFlipped() ? 5 : -5);
         }
         
         if(dashTimer != -1)
         {
             dashTimer++;
-            if(dashTimer > 5)
+            if(dashTimer > 15)
             {
                 dashTimer = -1;
+                ent.setMotionX(0.0);
+            }
+            else
+            {
+                ent.setMotionX(ent.getAnimator().drawImageFlipped() ? -15 : 15);
             }
-            
-            ent.setMotionX(ent.getAnimator().drawImageFlipped() ? -5 : 5);
         }
          
         if(combatMode && combatTimer == 0)
@@ -143,39 +149,40 @@ public class HumanController extends EntityController
             {
                 attackTimer = 0;
             }
-            else if(KeyHandler.COMBAT_DASH.wasJustReleased() && dashTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.2)
+            else if(KeyHandler.COMBAT_DASH.wasJustReleased() && dashTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.3)
             {
                 dashTimer = 0;
-                ent.getEnergy().addEnergyPercent(-0.2);
+                ent.getEnergy().addEnergyPercent(-0.3);
             }
-            else if(KeyHandler.COMBAT_DODGE.wasJustReleased() && dodgeTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.05)
+            else if(KeyHandler.COMBAT_DODGE.wasJustReleased() && dodgeTimer == -1 && ent.getEnergy().getEnergyPercent() >= 0.1)
             {
                 dodgeTimer = 0;
-                ent.getEnergy().addEnergyPercent(-0.05);
+                ent.getEnergy().addEnergyPercent(-0.10);
             }
         }
         
         
         if(!isBlocking() && dodgeTimer == -1 && dashTimer == -1)
         {
-            if(KeyHandler.JUMP.isDown() && ent.getMovement().jump())
+            if(KeyHandler.JUMP.isDown() && ent.getEnergy().getEnergyPercent() > 0.2 && ent.getMovement().jump())
             {
+                ent.getEnergy().addEnergyPercent(-0.10);
                 SoundUtils.playSound(SoundUtils.Sound.JUMP);
             }
             
             double speed;
             if(ent.getController().isInCombatMode())
             {
-                speed = 1.5;
+                speed = 3.0;
             }
             else
             {
-                speed = 3.0;
+                speed = 6.0;
                 if(isRunning())
                 {
                     if(ent.getEnergy().getEnergyPercent() > 0.0)
                     {
-                        speed = 4.5;
+                        speed = 9.0;
                     }
                     if(ent.isMoving())
                     {
@@ -184,13 +191,16 @@ public class HumanController extends EntityController
                 }
             }
 
-            if(KeyHandler.LEFT.isDown())
-            {
-                ent.setMotionX(-speed * ent.getMovementPenalty().getFactor());
-            }
-            else if(KeyHandler.RIGHT.isDown())
+            if(dodgeTimer == -1 && dashTimer == -1)
             {
-                ent.setMotionX(speed * ent.getMovementPenalty().getFactor());
+                if(KeyHandler.LEFT.isDown())
+                {
+                    ent.setMotionX(-speed * ent.getMovementPenalty().getFactor());
+                }
+                else if(KeyHandler.RIGHT.isDown())
+                {
+                    ent.setMotionX(speed * ent.getMovementPenalty().getFactor());
+                }
             }
 
             if(ent.isOnGround() && ent.getPreviousMotionX() != 0)

+ 26 - 1
src/me/hammerle/supersnuvi/entity/components/animator/EntityAnimator.java

@@ -22,7 +22,32 @@ public class EntityAnimator
     {
     }
     
-    public void resetFrames()
+    public final void resetFrames()
+    {
+        resetDefaultFrames();
+        resetIdleFrames();
+        resetHeadFrames();
+        resetBodyFrames();
+        resetArmsFrames();
+    }
+    
+    public void resetDefaultFrames()
+    {
+    }
+    
+    public void resetIdleFrames()
+    {
+    }
+    
+    public void resetHeadFrames()
+    {
+    }
+    
+    public void resetBodyFrames()
+    {
+    }
+    
+    public void resetArmsFrames()
     {
     }
     

+ 126 - 64
src/me/hammerle/supersnuvi/entity/components/animator/HeroAnimator.java

@@ -24,12 +24,34 @@ public class HeroAnimator extends EntityAnimator
     
     private final Image JUMP = Utils.getImage("snuvi/jump", true);
     
-    private final static Image[] BLOCK = new Image[]
+    static
     {
-        Utils.getImage("snuvi/block/block_f1", true),
-        Utils.getImage("snuvi/block/block_f2", true),
-        Utils.getImage("snuvi/block/block_f3", true)
-    };
+        Image block3 = Utils.getImage("snuvi/block/block_f3", true);
+        BLOCK = new Image[]
+        {
+            Utils.getImage("snuvi/block/block_f1", true),
+            Utils.getImage("snuvi/block/block_f2", true),
+            block3,
+            block3,
+            block3,
+            block3,
+            block3,
+            block3,
+            block3,
+            block3
+        };
+        
+        Image headHit3 = Utils.getImage("snuvi/combat/cbat_hit_f3", true);
+        COMBAT_HEAD_HIT = new Image[]
+        {
+            Utils.getImage("snuvi/combat/cbat_hit_f1", true),
+            Utils.getImage("snuvi/combat/cbat_hit_f2", true),
+            headHit3,
+            headHit3
+        };
+    }
+    
+    private final static Image[] BLOCK;
     
     private final static Image[] DEATH = new Image[]
     {
@@ -109,12 +131,7 @@ public class HeroAnimator extends EntityAnimator
         Utils.getImage("snuvi/combat/cbat_head_f14", true)
     };
     
-    private final static Image[] COMBAT_HEAD_HIT = new Image[]
-    {
-        Utils.getImage("snuvi/combat/cbat_hit_f1", true),
-        Utils.getImage("snuvi/combat/cbat_hit_f2", true),
-        Utils.getImage("snuvi/combat/cbat_hit_f3", true)
-    };
+    private final static Image[] COMBAT_HEAD_HIT;
     
     private final Image COMBAT_ARMS_IDLE = Utils.getImage("snuvi/combat/cbat_arms_idle", true);
     
@@ -165,14 +182,20 @@ public class HeroAnimator extends EntityAnimator
     
     
     private int counter = 0;
+    private int counterIdle = 0;
+    private int counterBody = 0;
+    private int counterHead = 0;
+    private int counterArms = 0;
+    private int frame = 0;
+    private int frameIdle = 0;
     private int frameBody = 0;
     private int frameHead = 0;
+    private int frameHeadHit = 0;
     private int frameArms = 0;
     
     private int attackCounter = 0;
 
     private boolean flipped = false;
-    private int blink = 0;
     
     public HeroAnimator(Entity ent) 
     {
@@ -202,13 +225,40 @@ public class HeroAnimator extends EntityAnimator
     {
         return DEATH.length * 5;
     }
-
+    
     @Override
-    public void resetFrames() 
+    public void resetDefaultFrames()
     {
         counter = 0;
-        frameBody = 0;
+        frame = 0;
+    }
+    
+    @Override
+    public void resetIdleFrames()
+    {
+        counterIdle = 0;
+        frameIdle = 0;
+    }
+    
+    @Override
+    public void resetHeadFrames()
+    {
+        counterHead = 0;
         frameHead = 0;
+        frameHeadHit = 0;
+    }
+    
+    @Override
+    public void resetBodyFrames()
+    {
+        counterBody = 0;
+        frameBody = 0;
+    }
+    
+    @Override
+    public void resetArmsFrames()
+    {
+        counterArms = 0;
         frameArms = 0;
     }
 
@@ -221,17 +271,17 @@ public class HeroAnimator extends EntityAnimator
         if(ent.getHealth().isDead())
         {
             x -= (drawImageFlipped() ? ent.getWidth() : 0);
-            if(frameBody >= DEATH.length)
+            if(frame >= DEATH.length)
             {
-                frameBody = 0;
+                frame = 0;
             }
             if(ent.getController().isInCombatMode())
             {
-                renderer.drawImage(COMBAT_DEATH[frameBody], x, y, drawImageFlipped());
+                renderer.drawImage(COMBAT_DEATH[frame], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
             }
             else
             {
-                renderer.drawImage(DEATH[frameBody], x, y, drawImageFlipped());
+                renderer.drawImage(DEATH[frame], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
             }
         }
         else if(ent.getController().isInCombatMode())
@@ -239,12 +289,12 @@ public class HeroAnimator extends EntityAnimator
             x -= (drawImageFlipped() ? ent.getWidth() : 0);
             if(ent.getController().isBlocking())
             {
-                if(frameBody >= BLOCK.length)
+                if(frame >= BLOCK.length)
                 {
-                    frameBody = 0;
+                    frame = 0;
                 }
-                bindSlot(BLOCK[frameBody]);
-                renderer.drawImage(BLOCK[frameBody], x, y, drawImageFlipped());
+                bindSlot(BLOCK[frame]);
+                renderer.drawImage(BLOCK[frame], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
             }
             else
             {
@@ -252,17 +302,17 @@ public class HeroAnimator extends EntityAnimator
                 if(!ent.isOnGround())
                 {
                     bindSlot(COMBAT_BODY_JUMP);
-                    renderer.drawImage(COMBAT_BODY_JUMP, x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_BODY_JUMP, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else if(ent.getController().isDashing())
                 {
                     bindSlot(COMBAT_BODY_DASH);
-                    renderer.drawImage(COMBAT_BODY_DASH, x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_BODY_DASH, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else if(ent.getController().isDodging())
                 {
                     bindSlot(COMBAT_BODY_DODGE);
-                    renderer.drawImage(COMBAT_BODY_DODGE, x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_BODY_DODGE, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else if(ent.getPreviousMotionX() != 0)
                 {
@@ -271,12 +321,12 @@ public class HeroAnimator extends EntityAnimator
                         frameBody = 0;
                     }
                     bindSlot(COMBAT_BODY_WALK[frameBody]);
-                    renderer.drawImage(COMBAT_BODY_WALK[frameBody], x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_BODY_WALK[frameBody], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else
                 {
                     bindSlot(COMBAT_BODY_IDLE);
-                    renderer.drawImage(COMBAT_BODY_IDLE, x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_BODY_IDLE, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
 
                 // arms rendering
@@ -289,7 +339,7 @@ public class HeroAnimator extends EntityAnimator
                         combatStart += COMBAT_SWITCH.length;
                     }
                     bindSlot(COMBAT_SWITCH[combatStart]);
-                    renderer.drawImage(COMBAT_SWITCH[combatStart], x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_SWITCH[combatStart], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else if(ent.getController().isAttacking())
                 {
@@ -304,23 +354,19 @@ public class HeroAnimator extends EntityAnimator
                         }
                     }
                     bindSlot(attack[frameArms]);
-                    renderer.drawImage(attack[frameArms], x, y, drawImageFlipped());
+                    renderer.drawImage(attack[frameArms], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else
                 {
                     bindSlot(COMBAT_ARMS_IDLE);
-                    renderer.drawImage(COMBAT_ARMS_IDLE, x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_ARMS_IDLE, x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
 
                 // head rendering
-                if(ent.getHealth().wasHurt())
+                if(ent.getHealth().hasInvincibility() && frameHeadHit < COMBAT_HEAD_HIT.length)
                 {
-                    if(frameHead >= COMBAT_HEAD_HIT.length)
-                    {
-                        frameHead = 0;
-                    }
                     bindSlot(COMBAT_HEAD_HIT[frameHead]);
-                    renderer.drawImage(COMBAT_HEAD_HIT[frameHead], x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_HEAD_HIT[frameHead], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
                 else
                 {
@@ -329,7 +375,7 @@ public class HeroAnimator extends EntityAnimator
                         frameHead = 0;
                     }
                     bindSlot(COMBAT_HEAD[frameHead]);
-                    renderer.drawImage(COMBAT_HEAD[frameHead], x, y, drawImageFlipped());
+                    renderer.drawImage(COMBAT_HEAD[frameHead], x, y, ent.getWidth() * 2, ent.getHeight(), drawImageFlipped());
                 }
             }
         }
@@ -337,27 +383,27 @@ public class HeroAnimator extends EntityAnimator
         {
             if(ent.getPreviousMotionX() != 0)
             {
-                if(frameBody >= WALK.length)
+                if(frame >= WALK.length)
                 {
-                    frameBody = 0;
+                    frame = 0;
                 }
-                bindSlot(WALK[frameBody]);
-                renderer.drawImage(WALK[frameBody], x, y, drawImageFlipped());
+                bindSlot(WALK[frame]);
+                renderer.drawImage(WALK[frame], x, y, ent.getWidth(), ent.getHeight(), drawImageFlipped());
             }
             else
             {
-                if(frameBody >= IDLE.length)
+                if(frameIdle >= IDLE.length)
                 {
-                    frameBody = 0;
+                    frameIdle = 0;
                 }
-                bindSlot(IDLE[frameBody]);
-                renderer.drawImage(IDLE[frameBody], x, y, drawImageFlipped());
+                bindSlot(IDLE[frameIdle]);
+                renderer.drawImage(IDLE[frameIdle], x, y, ent.getWidth(), ent.getHeight(), drawImageFlipped());
             }
         }
         else
         {
             bindSlot(JUMP);
-            renderer.drawImage(JUMP, x, y, drawImageFlipped());
+            renderer.drawImage(JUMP, x, y, ent.getWidth(), ent.getHeight(), drawImageFlipped());
         }
     }
     
@@ -369,15 +415,44 @@ public class HeroAnimator extends EntityAnimator
 
     @Override
     public void tick() 
-    {
+    {   
         counter++;
-        if(counter >= 6)
+        counterIdle++;
+        counterBody++;
+        counterHead++;
+        counterArms++;
+        if(counter >= 6) 
         {
             counter = 0;
+            frame++;
+        }
+        
+        if(counterIdle >= 12) 
+        {
+            counterIdle = 0;
+            frameIdle++;
+        }
+        if(counterBody >= 9)
+        {
+            counterBody = 0;
             frameBody++;
-            frameHead++;
+        }
+        if(counterArms >= 9)
+        {
+            counterArms = 0;
             frameArms++;
         }
+        if(counterHead >= 12) 
+        {
+            counterHead = 0;
+            frameHead++;
+            frameHeadHit++;
+        }
+        
+        if(frameIdle < 0)
+        {
+            frameIdle = 0;
+        }
         
         if(frameBody < 0)
         {
@@ -394,12 +469,6 @@ public class HeroAnimator extends EntityAnimator
             frameArms = 0;
         }
         
-        blink++;
-        if(blink > 9)
-        { 
-            blink = 0;
-        }
-        
         if(ent.getController().isInCombatMode())
         {
             if(KeyHandler.COMBAT_SWITCH_FACE.wasJustReleased())
@@ -431,14 +500,7 @@ public class HeroAnimator extends EntityAnimator
             }
             else if(h.wasHurt())
             {
-                if(blink >= 5)
-                {
-                    image.bindSlot(0);
-                }
-                else
-                {
-                    image.bindSlot(-1);
-                }
+                image.bindSlot(0);
             }
             else
             {

+ 3 - 2
src/me/hammerle/supersnuvi/gamelogic/Level.java

@@ -8,6 +8,7 @@ import java.util.TreeSet;
 import java.util.stream.Collectors;
 import me.hammerle.supersnuvi.entity.Entity;
 import me.hammerle.supersnuvi.entity.EntityBuilder;
+import me.hammerle.supersnuvi.rendering.Game;
 import me.hammerle.supersnuvi.tiles.BottledSoulTile;
 import me.hammerle.supersnuvi.tiles.Location;
 import me.hammerle.supersnuvi.tiles.StartTile;
@@ -282,8 +283,8 @@ public final class Level
             double rWidth = renderer.getWidth();
             double rHeight = renderer.getHeight();
             
-            double centerX = Math.min(Math.max(0, hero.getX() - rWidth / 2), data.getWidth() * 32 - rWidth);
-            double centerY = Math.min(Math.max(0, hero.getY() - rHeight / 2), data.getHeight() * 32 - rHeight);
+            double centerX = Math.min(Math.max(0, hero.getX() - rWidth / 2), data.getWidth() * Game.TILE_SIZE - rWidth);
+            double centerY = Math.min(Math.max(0, hero.getY() - rHeight / 2), data.getHeight() * Game.TILE_SIZE - rHeight);
             
             renderer.setViewCenter(centerX, centerY);
             

+ 15 - 1
src/me/hammerle/supersnuvi/rendering/Game.java

@@ -7,7 +7,7 @@ import me.hammerle.supersnuvi.javafx.Image;
 public class Game implements IRenderer
 {
     // constants
-    public final static int TILE_SIZE = 32;
+    public final static int TILE_SIZE = 64;
     
     // basic graphic stuff
     private final IJavaRenderer renderer;
@@ -72,6 +72,20 @@ public class Game implements IRenderer
         }
     }
     
+    @Override
+    public void drawImage(Image image, double x, double y, double w, double h, boolean flipped)
+    {
+        if(flipped)
+        {
+            renderer.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), 
+                    offsetX + x + w, offsetY - y, -w, h);
+        }
+        else
+        {
+            renderer.drawImage(image, offsetX + x, offsetY - y, w, h);
+        }
+    }
+    
     @Override
     public void drawFixedImage(Image image, double x, double y)
     {

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

@@ -10,6 +10,7 @@ public interface IRenderer
     
     public void drawImage(Image image, double x, double y);
     public void drawImage(Image image, double x, double y, boolean flipped);
+    public void drawImage(Image image, double x, double y, double w, double h, boolean flipped);
     public void drawFixedImage(Image image, double x, double y);
     public void drawFixedImage(Image image, double x, double y, double w, double h);
     public void drawBlockImage(Image image, int x, int y, double offsetX, double offsetY);  

+ 1 - 1
src/me/hammerle/supersnuvi/tiles/BottledSoulTile.java

@@ -34,7 +34,7 @@ public class BottledSoulTile extends Tile
                     SoundUtils.playSound(SoundUtils.Sound.COLLECT);
                     ent.getLevel().increaseSouls();
                 }
-                ent.getHealth().addHealthPercent(0.2);
+                ent.getHealth().addHealthPercent(0.143);
             }
         }
     }

+ 1 - 1
src/me/hammerle/supersnuvi/tiles/KillTile.java

@@ -19,7 +19,7 @@ public class KillTile extends BaseTile
     public void onEntityCollide(Entity ent, int x, int y, Face face) 
     {
         super.onEntityCollide(ent, x, y, face);
-        ent.getHealth().addHealth(-0.05);
+        ent.getHealth().addHealth(-14.3);
     }
 
     @Override

+ 2 - 2
src/me/hammerle/supersnuvi/tiles/SlipperyTile.java

@@ -15,9 +15,9 @@ public class SlipperyTile extends BaseBoxTile
     {
         if(face == Face.UP)
         {
-            if(ent.getPreviousMotionY() != -Entity.GRAVITY && Math.abs(ent.getMotionX()) <= 0.05)
+            if(ent.getPreviousMotionY() != -Entity.GRAVITY && Math.abs(ent.getMotionX()) <= 0.07)
             {
-                ent.setMotionX(ent.getAnimator().drawImageFlipped() ? -2.5 : 2.5);
+                ent.setMotionX(ent.getAnimator().drawImageFlipped() ? -5.0 : 5.0);
             }
             ent.getMovementPenalty().setFriction(0.08);
         }

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

@@ -34,7 +34,7 @@ public class SpikeTile extends Tile
         super.onEntityCollide(ent, x, y, face);
         if(frame >= 4)
         {
-            ent.getHealth().addHealth(-0.4);
+            ent.getHealth().addHealth(-42.857);
         }
     }