1
2 package org.molwind.chemical.view;
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.awt.Color;
22 import java.awt.Graphics;
23 import java.awt.image.BufferedImage;
24 import java.util.Iterator;
25
26 import org.molwind.chemical.model.ChemicalWorld;
27 import org.molwind.model.LayeredPosition;
28 import org.molwind.view.Tile;
29 import org.molwind.view.TileException;
30 import org.molwind.view.TileGenerator;
31 import org.molwind.view.TopologyManager;
32
33
34
35
36
37
38
39 public class ChemicalTileGenerator implements TileGenerator {
40
41 private ChemicalWorld world;
42
43 private static BufferedImage emptyImage;
44
45
46
47
48
49
50
51 public ChemicalTileGenerator(final ChemicalWorld chemicalWorld) {
52 this.world = chemicalWorld;
53 }
54
55 private BufferedImage getEmptyImage() {
56 if (emptyImage == null) {
57 emptyImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
58 Graphics graphic = emptyImage.getGraphics();
59 graphic.setColor(Color.white);
60 graphic.fillRect(0, 0, 1, 1);
61 }
62 return emptyImage;
63 }
64
65 private Iterator getVisibleEntities(final LayeredPosition position) {
66 TopologyManager topologyManager = world.getTopologyManager();
67 topologyManager.setEntityIterator( world.getEntityIterator() );
68 topologyManager.setRelationshipResolver( world.getRelationshipResolver() );
69 return topologyManager.getVisibleEntities(position);
70 }
71
72
73
74
75
76
77
78
79
80
81
82
83 public Tile generateTile(final LayeredPosition position)
84 throws TileException {
85
86 ChemicalTile chemicalTile = new ChemicalTile(position);
87 chemicalTile.setWorldName(world.getName());
88 chemicalTile.addEntities(getVisibleEntities(position));
89 return chemicalTile;
90 }
91
92 }