import java.awt.AlphaComposite; import java.awt.Composite; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.util.ArrayList; public class WorldScene extends Scene { private ArrayList actors = new ArrayList(); private Map map; private int tileSize; public WorldScene(Dimension gridSize, int tileSize) { this.tileSize = tileSize; map = new Map(gridSize); // TODO remove hardcoded stuff Player player = new Player("pipo", gridSize); this.actors.add(player); } @Override public void render(Graphics g) { Graphics2D g2d = (Graphics2D) g; // draw tiles for (Tile tile : this.map.grid) { switch (tile.type) { case GRASS: g2d.setColor(Palette.GREEN); break; case WATER: g2d.setColor(Palette.BLUE); break; } g2d.fillRect( this.tileSize * tile.x, this.tileSize * tile.y, this.tileSize, this.tileSize ); // draw grid // composite (enable alpha) Composite originalComposite = g2d.getComposite(); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f)); g2d.setPaint(Color.BLACK); g2d.drawRect( this.tileSize * tile.x, this.tileSize * tile.y, this.tileSize, this.tileSize ); g2d.setComposite(originalComposite); } // draw actors for (Actor actor : this.actors) { switch (actor.type) { case PLAYER: g2d.setColor(Palette.ORANGE); break; case ENEMY: g2d.setColor(Palette.RED); break; } int gap = this.tileSize/10; g2d.fillRect( (this.tileSize * actor.x) + gap, (this.tileSize * actor.y) + gap, this.tileSize - gap*2, this.tileSize - gap*2 ); } } }