11 changed files with 79 additions and 44 deletions
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
import java.util.Vector; |
||||
|
||||
import de.srsoftware.web4rail.BaseClass; |
||||
|
||||
public class TileWithShadow extends Tile { |
||||
private Vector<Id> shadows = new Vector<Id>(); |
||||
|
||||
public void add(Shadow shadow) { |
||||
shadows.add(shadow.id()); |
||||
} |
||||
|
||||
@Override |
||||
public boolean move(int dx, int dy) { |
||||
boolean moved = super.move(dx, dy); |
||||
if (moved) placeShadows(); |
||||
return moved; |
||||
} |
||||
|
||||
public void placeShadows() { |
||||
removeShadows(); |
||||
for (int dx=1; dx<width(); dx++) plan.place(new Shadow(this, x+dx, y)); |
||||
for (int dy=1; dy<height(); dy++) plan.place(new Shadow(this, x, y+dy)); |
||||
} |
||||
|
||||
protected void removeShadows() { |
||||
while (!shadows.isEmpty()) { |
||||
Tile tile = BaseClass.get(shadows.remove(0)); |
||||
if (tile instanceof Shadow) tile.remove(); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue