parent
							
								
									78035ced7a
								
							
						
					
					
						commit
						fb244dc2b9
					
				@ -1,40 +0,0 @@ | 
				
			||||
package mightypork.gamecore.util.math.algo.pathfinding; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.util.math.algo.Coord; | 
				
			||||
import mightypork.gamecore.util.math.algo.Step; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public interface PathFindingContext { | 
				
			||||
	 | 
				
			||||
	/** | 
				
			||||
	 * @param pos tile pos | 
				
			||||
	 * @return true if the tile is walkable | 
				
			||||
	 */ | 
				
			||||
	boolean isAccessible(Coord pos); | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	/** | 
				
			||||
	 * Cost of walking onto a tile. It's useful to use ie. 10 for basic step. | 
				
			||||
	 *  | 
				
			||||
	 * @param from last tile | 
				
			||||
	 * @param to current tile | 
				
			||||
	 * @return cost | 
				
			||||
	 */ | 
				
			||||
	int getCost(Coord from, Coord to); | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	/** | 
				
			||||
	 * @return lowest cost. Used to multiply heuristics. | 
				
			||||
	 */ | 
				
			||||
	int getMinCost(); | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	/** | 
				
			||||
	 * @return used heuristic | 
				
			||||
	 */ | 
				
			||||
	Heuristic getHeuristic(); | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	Step[] getWalkSides(); | 
				
			||||
} | 
				
			||||
@ -1,29 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.entity; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.util.math.algo.Coord; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class SimpleEntityPathFindingContext extends EntityPathfindingContext { | 
				
			||||
	 | 
				
			||||
	public SimpleEntityPathFindingContext(Entity entity) | 
				
			||||
	{ | 
				
			||||
		super(entity); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public int getCost(Coord from, Coord to) | 
				
			||||
	{ | 
				
			||||
		return 10; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public int getMinCost() | 
				
			||||
	{ | 
				
			||||
		return 10; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,59 @@ | 
				
			||||
package mightypork.rogue.world.entity.entities; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.rogue.world.entity.Entity; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class RatAi extends MonsterAi { | 
				
			||||
	 | 
				
			||||
	public RatAi(Entity entity) | 
				
			||||
	{ | 
				
			||||
		super(entity); | 
				
			||||
		 | 
				
			||||
		setAttackTime(1); | 
				
			||||
		setScanTime(2); | 
				
			||||
		setSleepTime(100); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected double getScanRadius() | 
				
			||||
	{ | 
				
			||||
		return isSleeping() ? 2 + rand.nextInt(3) : 4 + rand.nextInt(3); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected double getAttackDistance() | 
				
			||||
	{ | 
				
			||||
		return 1.42; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected int getAttackStrength() | 
				
			||||
	{ | 
				
			||||
		return 1 + rand.nextInt(2); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected int getPreyAbandonDistance() | 
				
			||||
	{ | 
				
			||||
		return 8 + rand.nextInt(4); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected boolean shouldSkipScan() | 
				
			||||
	{ | 
				
			||||
		return false;//rand.nextInt(3) == 0;
 | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected boolean shouldRandomlyAbandonPrey() | 
				
			||||
	{ | 
				
			||||
		return false;//rand.nextInt(8) == 0;
 | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,59 @@ | 
				
			||||
package mightypork.rogue.world.entity.entities; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.util.math.algo.pathfinding.PathFinder; | 
				
			||||
import mightypork.rogue.world.entity.*; | 
				
			||||
import mightypork.rogue.world.entity.renderers.EntityRenderer; | 
				
			||||
import mightypork.rogue.world.entity.renderers.EntityRendererMobLR; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class RatEntity extends Entity { | 
				
			||||
	 | 
				
			||||
	/** Navigation PFC */ | 
				
			||||
	private PathFinder pathf; | 
				
			||||
	 | 
				
			||||
	private final RatAi ai = new RatAi(this); | 
				
			||||
	 | 
				
			||||
	private EntityRenderer renderer; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public RatEntity(EntityModel model, int eid) | 
				
			||||
	{ | 
				
			||||
		super(model, eid); | 
				
			||||
		 | 
				
			||||
		addModule("ai", ai); | 
				
			||||
		pos.addMoveListener(ai); | 
				
			||||
		 | 
				
			||||
		pos.setStepTime(0.5); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public PathFinder getPathFinder() | 
				
			||||
	{ | 
				
			||||
		if (pathf == null) { | 
				
			||||
			pathf = new EntityPathFinder(this); | 
				
			||||
		} | 
				
			||||
		 | 
				
			||||
		return pathf; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public EntityType getType() | 
				
			||||
	{ | 
				
			||||
		return EntityType.MONSTER; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected EntityRenderer getRenderer() | 
				
			||||
	{ | 
				
			||||
		if (renderer == null) { | 
				
			||||
			renderer = new EntityRendererMobLR(this, "sprite.player"); | 
				
			||||
		} | 
				
			||||
		 | 
				
			||||
		return renderer; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -1,41 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.entity.entities; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.util.math.algo.pathfinding.PathFindingContext; | 
				
			||||
import mightypork.rogue.world.entity.*; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public abstract class SimpleMonster extends Entity { | 
				
			||||
	 | 
				
			||||
	/** Navigation PFC */ | 
				
			||||
	private EntityPathfindingContext pathfc; | 
				
			||||
	 | 
				
			||||
	private final EntityModule ai = new MonsterAi(this); | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public SimpleMonster(EntityModel model, int eid) | 
				
			||||
	{ | 
				
			||||
		super(model, eid); | 
				
			||||
		 | 
				
			||||
		addModule("ai", ai); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public PathFindingContext getPathfindingContext() | 
				
			||||
	{ | 
				
			||||
		if (pathfc == null) { | 
				
			||||
			pathfc = new SimpleEntityPathFindingContext(this); | 
				
			||||
		} | 
				
			||||
		 | 
				
			||||
		return pathfc; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public EntityType getType() | 
				
			||||
	{ | 
				
			||||
		return EntityType.MONSTER; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -1,14 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * Data storage for tile renderer | 
				
			||||
 *  | 
				
			||||
 * @author MightyPork | 
				
			||||
 */ | 
				
			||||
public class TileRenderData { | 
				
			||||
	 | 
				
			||||
	public byte shadows; | 
				
			||||
	public boolean shadowsComputed; | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -1,39 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.renderers; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.render.Render; | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.gamecore.util.math.constraints.rect.Rect; | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.level.render.TileRenderContext; | 
				
			||||
import mightypork.rogue.world.tile.Tile; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class DoorRenderer extends TileRenderer { | 
				
			||||
	 | 
				
			||||
	private final TxSheet closed; | 
				
			||||
	private final TxSheet open; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public DoorRenderer(String quadClosed, String quadOpen) | 
				
			||||
	{ | 
				
			||||
		this.closed = Res.getTxSheet(quadClosed); | 
				
			||||
		this.open = Res.getTxSheet(quadOpen); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void renderTile(TileRenderContext context) | 
				
			||||
	{ | 
				
			||||
		final Tile t = context.getTile(); | 
				
			||||
		final Rect rect = context.getRect(); | 
				
			||||
		 | 
				
			||||
		if (t.isOccupied()) { | 
				
			||||
			Render.quadTextured(rect, open.getRandomQuad(context.getTileNoise())); | 
				
			||||
		} else { | 
				
			||||
			Render.quadTextured(rect, closed.getRandomQuad(context.getTileNoise())); | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,70 @@ | 
				
			||||
package mightypork.rogue.world.tile.renderers; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.render.Render; | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.gamecore.util.math.constraints.rect.Rect; | 
				
			||||
import mightypork.gamecore.util.math.timing.TimedTask; | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.level.render.TileRenderContext; | 
				
			||||
import mightypork.rogue.world.tile.Tile; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseDoor; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class DoorTileRenderer extends TileRenderer { | 
				
			||||
	 | 
				
			||||
	private final TxSheet locked; | 
				
			||||
	private final TxSheet closed; | 
				
			||||
	private final TxSheet open; | 
				
			||||
	 | 
				
			||||
	private boolean visuallyOpen = false; | 
				
			||||
	 | 
				
			||||
	private final TimedTask closeTask = new TimedTask() { | 
				
			||||
		 | 
				
			||||
		@Override | 
				
			||||
		public void run() | 
				
			||||
		{ | 
				
			||||
			System.out.println("CLOSEDOOR + "+ ((TileBaseDoor) tile).isOpen()); | 
				
			||||
			visuallyOpen = ((TileBaseDoor) tile).isOpen(); | 
				
			||||
		} | 
				
			||||
	}; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public DoorTileRenderer(TileBaseDoor doorTile, TxSheet locked, TxSheet closed, TxSheet open) | 
				
			||||
	{ | 
				
			||||
		super(doorTile); | 
				
			||||
		 | 
				
			||||
		this.locked = locked; | 
				
			||||
		this.closed = closed; | 
				
			||||
		this.open = open; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void renderTile(TileRenderContext context) | 
				
			||||
	{ | 
				
			||||
		final Rect rect = context.getRect(); | 
				
			||||
		 | 
				
			||||
		if (!visuallyOpen && ((TileBaseDoor) tile).isOpen()) visuallyOpen = true; | 
				
			||||
		 | 
				
			||||
		if (visuallyOpen && !((TileBaseDoor) tile).isOpen()) { | 
				
			||||
			if(!closeTask.isRunning()) closeTask.start(0.4); | 
				
			||||
		} | 
				
			||||
		 | 
				
			||||
		if (visuallyOpen) {			 | 
				
			||||
			Render.quadTextured(rect, open.getRandomQuad(context.getTileNoise())); | 
				
			||||
		} else { | 
				
			||||
			TxSheet sheet = (((TileBaseDoor) tile).isLocked() ? locked : closed);			 | 
				
			||||
			Render.quadTextured(rect, sheet.getRandomQuad(context.getTileNoise())); | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void update(double delta) | 
				
			||||
	{ | 
				
			||||
		closeTask.update(delta); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -1,38 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.renderers; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.render.Render; | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.gamecore.util.math.constraints.rect.Rect; | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.level.render.TileRenderContext; | 
				
			||||
import mightypork.rogue.world.tile.Tile; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class LockedDoorRenderer extends DoorRenderer { | 
				
			||||
	 | 
				
			||||
	private final TxSheet locked; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public LockedDoorRenderer(String sheetLocked, String sheetClosed, String sheetOpen) | 
				
			||||
	{ | 
				
			||||
		super(sheetClosed, sheetOpen); | 
				
			||||
		this.locked = Res.getTxSheet(sheetLocked); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void renderTile(TileRenderContext context) | 
				
			||||
	{ | 
				
			||||
		final Tile t = context.getTile(); | 
				
			||||
		 | 
				
			||||
		if (!t.isWalkable()) { | 
				
			||||
			final Rect rect = context.getRect(); | 
				
			||||
			Render.quadTextured(rect, locked.getRandomQuad(context.getTileNoise())); | 
				
			||||
		} else { | 
				
			||||
			super.renderTile(context); | 
				
			||||
		} | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -1,29 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class DoorTile extends SolidTile { | 
				
			||||
	 | 
				
			||||
	public DoorTile(TileModel model, TileRenderer renderer) | 
				
			||||
	{ | 
				
			||||
		super(model, renderer); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public boolean isWalkable() | 
				
			||||
	{ | 
				
			||||
		return true; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.DOOR; | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -1,22 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class FloorTile extends GroundTile { | 
				
			||||
	 | 
				
			||||
	public FloorTile(TileModel model, TileRenderer renderer) | 
				
			||||
	{ | 
				
			||||
		super(model, renderer); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.FLOOR; | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -1,44 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import java.io.IOException; | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.util.ion.IonInput; | 
				
			||||
import mightypork.gamecore.util.ion.IonOutput; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class LockedDoorTile extends DoorTile { | 
				
			||||
	 | 
				
			||||
	public boolean locked = true; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public LockedDoorTile(TileModel model, TileRenderer renderer) | 
				
			||||
	{ | 
				
			||||
		super(model, renderer); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public boolean isWalkable() | 
				
			||||
	{ | 
				
			||||
		return !locked; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void load(IonInput in) throws IOException | 
				
			||||
	{ | 
				
			||||
		super.load(in); | 
				
			||||
		locked = in.readBoolean(); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void save(IonOutput out) throws IOException | 
				
			||||
	{ | 
				
			||||
		super.save(out); | 
				
			||||
		out.writeBoolean(locked); | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,82 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import java.io.IOException; | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.gamecore.util.ion.IonInput; | 
				
			||||
import mightypork.gamecore.util.ion.IonOutput; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
import mightypork.rogue.world.tile.renderers.DoorTileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public abstract class TileBaseDoor extends TileSolid { | 
				
			||||
	 | 
				
			||||
	private final DoorTileRenderer renderer; | 
				
			||||
	protected boolean locked = false; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public TileBaseDoor(TileModel model, TxSheet locked, TxSheet closed, TxSheet open) | 
				
			||||
	{ | 
				
			||||
		super(model); | 
				
			||||
		 | 
				
			||||
		this.renderer = new DoorTileRenderer(this, locked, closed, open); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected TileRenderer getRenderer() | 
				
			||||
	{ | 
				
			||||
		return renderer; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public boolean isWalkable() | 
				
			||||
	{ | 
				
			||||
		return !locked; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.DOOR; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void load(IonInput in) throws IOException | 
				
			||||
	{ | 
				
			||||
		super.load(in); | 
				
			||||
		locked = in.readBoolean(); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public void save(IonOutput out) throws IOException | 
				
			||||
	{ | 
				
			||||
		super.save(out); | 
				
			||||
		out.writeBoolean(locked); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	/** | 
				
			||||
	 * @return true if the door appears open | 
				
			||||
	 */ | 
				
			||||
	public boolean isOpen() | 
				
			||||
	{ | 
				
			||||
		return isOccupied(); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	/** | 
				
			||||
	 * @return true if the door is locked | 
				
			||||
	 */ | 
				
			||||
	public boolean isLocked() | 
				
			||||
	{ | 
				
			||||
		return locked; | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,34 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
import mightypork.rogue.world.tile.renderers.BasicTileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public abstract class TileBaseFloor extends TileWalkable { | 
				
			||||
	 | 
				
			||||
	private BasicTileRenderer renderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
	public TileBaseFloor(TileModel model, TxSheet sheet) | 
				
			||||
	{ | 
				
			||||
		super(model); | 
				
			||||
		this.renderer = new BasicTileRenderer(this, sheet); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected TileRenderer getRenderer() | 
				
			||||
	{ | 
				
			||||
		return renderer; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.FLOOR; | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
import mightypork.rogue.world.tile.renderers.BasicTileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * Collapsed wall that's walk-through | 
				
			||||
 *  | 
				
			||||
 * @author MightyPork | 
				
			||||
 */ | 
				
			||||
public abstract class TileBasePassage extends TileSolid { | 
				
			||||
	 | 
				
			||||
	private BasicTileRenderer renderer; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public TileBasePassage(TileModel model, TxSheet sheet) | 
				
			||||
	{ | 
				
			||||
		super(model); | 
				
			||||
		 | 
				
			||||
		this.renderer = new BasicTileRenderer(this, sheet); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	protected TileRenderer getRenderer() | 
				
			||||
	{ | 
				
			||||
		return renderer; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.PASSAGE; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public boolean isWalkable() | 
				
			||||
	{ | 
				
			||||
		return true; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,35 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.rogue.world.level.render.TileRenderContext; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
import mightypork.rogue.world.tile.renderers.BasicTileRenderer; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public abstract class TileBaseWall extends TileSolid { | 
				
			||||
	 | 
				
			||||
	private BasicTileRenderer renderer; | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public TileBaseWall(TileModel model, TxSheet sheet) | 
				
			||||
	{ | 
				
			||||
		super(model); | 
				
			||||
		this.renderer = new BasicTileRenderer(this, sheet); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	public BasicTileRenderer getRenderer() | 
				
			||||
	{ | 
				
			||||
		return renderer; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.WALL; | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -1,35 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * Collapsed wall that's walk-through | 
				
			||||
 *  | 
				
			||||
 * @author MightyPork | 
				
			||||
 */ | 
				
			||||
public class WallPassageTile extends SolidTile { | 
				
			||||
	 | 
				
			||||
	public WallPassageTile(TileModel model, TileRenderer renderer) | 
				
			||||
	{ | 
				
			||||
		super(model, renderer); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.PASSAGE; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public boolean isWalkable() | 
				
			||||
	{ | 
				
			||||
		return true; | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -1,22 +0,0 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.TileRenderer; | 
				
			||||
import mightypork.rogue.world.tile.TileType; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class WallTile extends SolidTile { | 
				
			||||
	 | 
				
			||||
	public WallTile(TileModel model, TileRenderer renderer) | 
				
			||||
	{ | 
				
			||||
		super(model, renderer); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
	 | 
				
			||||
	@Override | 
				
			||||
	public TileType getType() | 
				
			||||
	{ | 
				
			||||
		return TileType.WALL; | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles.brick; | 
				
			||||
 | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseDoor; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class TileBrickDoor extends TileBaseDoor { | 
				
			||||
 | 
				
			||||
	public TileBrickDoor(TileModel model) | 
				
			||||
	{ | 
				
			||||
		//@formatter:off
 | 
				
			||||
		super( | 
				
			||||
			model, | 
				
			||||
			Res.sheet("tile.brick.door.locked"), | 
				
			||||
			Res.sheet("tile.brick.door.closed"), | 
				
			||||
			Res.sheet("tile.brick.door.open") | 
				
			||||
		); | 
				
			||||
		//@formatter:on
 | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,16 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles.brick; | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseFloor; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class TileBrickFloor extends TileBaseFloor { | 
				
			||||
 | 
				
			||||
	public TileBrickFloor(TileModel model) | 
				
			||||
	{ | 
				
			||||
		super(model, Res.sheet("tile.brick.floor")); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,17 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles.brick; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseDoor; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBasePassage; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class TileBrickPassage extends TileBasePassage { | 
				
			||||
	 | 
				
			||||
	public TileBrickPassage(TileModel model) | 
				
			||||
	{ | 
				
			||||
		super(model, Res.sheet("tile.brick.passage")); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles.brick; | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.util.math.color.Color; | 
				
			||||
import mightypork.gamecore.util.math.color.pal.RGB; | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseDoor; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseSecretDoor; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class TileBrickSecretDoor extends TileBaseSecretDoor { | 
				
			||||
 | 
				
			||||
	public TileBrickSecretDoor(TileModel model) | 
				
			||||
	{ | 
				
			||||
		//@formatter:off
 | 
				
			||||
		super( | 
				
			||||
			model, | 
				
			||||
			Res.sheet("tile.brick.door.secret"), | 
				
			||||
			Res.sheet("tile.brick.door.closed"), | 
				
			||||
			Res.sheet("tile.brick.door.open") | 
				
			||||
		); | 
				
			||||
		//@formatter:on
 | 
				
			||||
		 | 
				
			||||
		locked = true; // hide it
 | 
				
			||||
	} | 
				
			||||
} | 
				
			||||
@ -0,0 +1,16 @@ | 
				
			||||
package mightypork.rogue.world.tile.tiles.brick; | 
				
			||||
 | 
				
			||||
import mightypork.gamecore.resources.textures.TxSheet; | 
				
			||||
import mightypork.rogue.Res; | 
				
			||||
import mightypork.rogue.world.tile.TileModel; | 
				
			||||
import mightypork.rogue.world.tile.tiles.TileBaseWall; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
public class TileBrickWall extends TileBaseWall { | 
				
			||||
 | 
				
			||||
	public TileBrickWall(TileModel model) | 
				
			||||
	{ | 
				
			||||
		super(model, Res.sheet("tile.brick.wall")); | 
				
			||||
	} | 
				
			||||
	 | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue