package me.hammerle.supersnuvi.tiles; import me.hammerle.snuviengine.api.Texture.Animation; import me.hammerle.supersnuvi.entity.Entity; import me.hammerle.supersnuvi.rendering.LevelRenderer; import me.hammerle.supersnuvi.util.Face; import me.hammerle.supersnuvi.gamelogic.Level; public class WaterTile extends BaseCollisionTile { private final static Animation WATER = LevelRenderer.TILES.addAnimation(160, 0, "resources/water/water_frame1.png", "resources/water/water_frame2.png", "resources/water/water_frame3.png", "resources/water/water_frame4.png", "resources/water/water_frame5.png", "resources/water/water_frame6.png", "resources/water/water_frame7.png", "resources/water/water_frame8.png"); private int counter = 0; private final int level; public WaterTile(int level) { super(0.3125f, 0.00390625f * (15 - level), 0.375f, 0.0625f, 0.03125f * Tile.SIZE, Tile.SIZE - (Tile.SIZE / 16) * (level + 1), 0.96875f * Tile.SIZE, Tile.SIZE); this.level = level; } @Override public void onEntityCollide(Entity ent, int x, int y, Face face, Level l) { super.onEntityCollide(ent, x, y, face, l); ent.getMovement().setInWater(true); } @Override public boolean shouldAiUseCollisionBox(int x, int y, Level l) { return false; } @Override public void tick() { if(level == 15) { counter++; if(counter > 3) { counter = 0; WATER.nextFrame(); } } } @Override public final float getOffsetY() { return Tile.SIZE - (Tile.SIZE / 16) * (level + 1); } @Override public final float getHeight() { return (Tile.SIZE / 16) * (level + 1); } }