parent
a24d6c37a4
commit
307d8d2b10
After Width: | Height: | Size: 875 B |
Binary file not shown.
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.8 KiB |
Binary file not shown.
@ -0,0 +1,45 @@ |
||||
package mightypork.rogue.world; |
||||
|
||||
|
||||
public class Sides { |
||||
|
||||
//@formatter:off
|
||||
public static final byte NW = (byte) 0b10000000; |
||||
public static final byte N = 0b01000000; |
||||
public static final byte NE = 0b00100000; |
||||
public static final byte E = 0b00010000; |
||||
public static final byte SE = 0b00001000; |
||||
public static final byte S = 0b00000100; |
||||
public static final byte SW = 0b00000010; |
||||
public static final byte W = 0b00000001; |
||||
|
||||
public static final byte CARDINAL = N|S|E|W; |
||||
public static final byte DIAGONAL = NE|NW|SE|SW; |
||||
|
||||
public static final byte NW_CORNER = W|NW|N; |
||||
public static final byte NE_CORNER = E|NE|N; |
||||
public static final byte SW_CORNER = W|SW|S; |
||||
public static final byte SE_CORNER = E|SE|S; |
||||
|
||||
private final static Coord[] side = { |
||||
Coord.make(-1, -1), |
||||
Coord.make(0, -1), |
||||
Coord.make(1, -1), |
||||
Coord.make(1, 0), |
||||
Coord.make(1, 1), |
||||
Coord.make(0, 1), |
||||
Coord.make(-1, 1), |
||||
Coord.make(-1, 0) |
||||
}; |
||||
//@formatter:on
|
||||
|
||||
public static Coord get(int i) |
||||
{ |
||||
return side[i]; // FIXME Coord is mutable
|
||||
} |
||||
|
||||
public static byte bit(int i) |
||||
{ |
||||
return (byte) (1 << (7 - i)); |
||||
} |
||||
} |
@ -1,81 +0,0 @@ |
||||
package mightypork.rogue.world.tile.renderers; |
||||
|
||||
|
||||
import mightypork.gamecore.render.Render; |
||||
import mightypork.gamecore.render.textures.TxQuad; |
||||
import mightypork.rogue.Res; |
||||
import mightypork.rogue.world.level.render.TileRenderContext; |
||||
import mightypork.rogue.world.tile.Tile; |
||||
import mightypork.rogue.world.tile.TileRenderData; |
||||
import mightypork.util.math.constraints.rect.Rect; |
||||
|
||||
|
||||
public class FloorRenderer extends BasicTileRenderer { |
||||
|
||||
private static boolean inited; |
||||
private static TxQuad SH_N, SH_S, SH_E, SH_W, SH_NW, SH_NE, SH_SW, SH_SE; |
||||
|
||||
|
||||
public FloorRenderer(String sheetKey) |
||||
{ |
||||
super(sheetKey); |
||||
|
||||
if (!inited) { |
||||
SH_N = Res.getTxQuad("tile.shadow.n"); |
||||
SH_S = Res.getTxQuad("tile.shadow.s"); |
||||
SH_E = Res.getTxQuad("tile.shadow.e"); |
||||
SH_W = Res.getTxQuad("tile.shadow.w"); |
||||
SH_NW = Res.getTxQuad("tile.shadow.nw"); |
||||
SH_NE = Res.getTxQuad("tile.shadow.ne"); |
||||
SH_SW = Res.getTxQuad("tile.shadow.sw"); |
||||
SH_SE = Res.getTxQuad("tile.shadow.se"); |
||||
} |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void render(TileRenderContext context) |
||||
{ |
||||
super.render(context); |
||||
|
||||
final Rect rect = context.getRect(); |
||||
|
||||
final TileRenderData trd = context.getTile().renderData; |
||||
|
||||
if (!trd.shadowsComputed) { |
||||
// no shadows computed yet
|
||||
|
||||
trd.shadows = 0; // reset the mask
|
||||
|
||||
int move = 0; |
||||
for (int y = -1; y <= 1; y++) { |
||||
for (int x = -1; x <= 1; x++) { |
||||
if (x == 0 && y == 0) continue; |
||||
|
||||
final Tile t2 = context.getAdjacentTile(x, y); |
||||
|
||||
if (t2.doesCastShadow()) { |
||||
trd.shadows |= 1 << move; |
||||
} |
||||
|
||||
move++; |
||||
} |
||||
} |
||||
|
||||
trd.shadowsComputed = true; |
||||
} |
||||
|
||||
if (trd.shadows == 0) return; |
||||
|
||||
if ((trd.shadows & (1 << 0)) != 0) Render.quadTextured(rect, SH_NW); |
||||
if ((trd.shadows & (1 << 1)) != 0) Render.quadTextured(rect, SH_N); |
||||
if ((trd.shadows & (1 << 2)) != 0) Render.quadTextured(rect, SH_NE); |
||||
|
||||
if ((trd.shadows & (1 << 3)) != 0) Render.quadTextured(rect, SH_W); |
||||
if ((trd.shadows & (1 << 4)) != 0) Render.quadTextured(rect, SH_E); |
||||
|
||||
if ((trd.shadows & (1 << 5)) != 0) Render.quadTextured(rect, SH_SW); |
||||
if ((trd.shadows & (1 << 6)) != 0) Render.quadTextured(rect, SH_S); |
||||
if ((trd.shadows & (1 << 7)) != 0) Render.quadTextured(rect, SH_SE); |
||||
} |
||||
} |
@ -1,11 +0,0 @@ |
||||
package mightypork.rogue.world.tile.renderers; |
||||
|
||||
|
||||
public class WallRenderer extends BasicTileRenderer { |
||||
|
||||
public WallRenderer(String sheetKey) |
||||
{ |
||||
super(sheetKey); |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue