package micropolisj.engine;
import java.io.*;
import java.nio.charset.Charset;
import java.util.*;
public class Tiles
{
static final Charset UTF8 = Charset.forName("UTF-8");
static TileSpec [] tiles = new TileSpec[960];
static {
try {
readTiles();
}
catch (IOException e) {
throw new RuntimeException(e);
static void readTiles()
throws IOException
tiles = new TileSpec[960];
Properties tilesRc = new Properties();
tilesRc.load(
new InputStreamReader(
Tiles.class.getResourceAsStream("/tiles.rc"),
UTF8
)
);
for (int i = 0; i < tiles.length; i++) {
String tileName = Integer.toString(i);
String rawSpec = tilesRc.getProperty(tileName);
if (rawSpec == null) {
continue;
tiles[i] = TileSpec.parse(i, rawSpec, tilesRc);
String tmp = tiles[i].getAttribute("becomes");
if (tmp != null) {
tiles[i].animNext = get(Integer.parseInt(tmp));
tmp = tiles[i].getAttribute("onpower");
tiles[i].onPower = get(Integer.parseInt(tmp));
tmp = tiles[i].getAttribute("onshutdown");
tiles[i].onShutdown = get(Integer.parseInt(tmp));
public static TileSpec get(int tileNumber)
if (tileNumber >= 0 && tileNumber < tiles.length) {
return tiles[tileNumber];
else {
return null;