(This doesnt fit on one post)
Oh right the intent, is to get the starting characters northern movment animation from the hashtable. Might as well post my resource manager so you can see if i packed the hashtable badly.
resource manager: it is init’d then loadFirstMap() is called the variable first carries “Cat”
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.io.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.net.*;
import java.util.*;
public class ResourceManager {
private ArrayList<BufferedImage> tiles;
private int currentMap;
private GraphicsConfiguration gc;
private ImageSequence anims[];
private BufferedImage spriteSheet;
private ImageLoader loader;
private Hashtable characterAnimations;
public ResourceManager(GraphicsConfiguration gc) {
this.gc = gc;
characterAnimations = new Hashtable();
loader = new ImageLoader();
loadTileImages();
loadImages();
}
public Hashtable getAnims() {
return characterAnimations;
}
public TileMap loadFirstMap() {
currentMap = 0;
return loadNextMap();
}
public TileMap loadNextMap() {
TileMap map = null;
while (map == null) {
currentMap++;
try {
map = loadMap("Resources/Maps/Map" + currentMap + ".txt");
}
catch (IOException ex) {
if (currentMap == 1) {
return null;
}
currentMap = 0;
map = null;
}
}
System.out.println(map);
return map;
}
public TileMap reloadMap() {
try {
return loadMap("Resources/Maps/Map" + currentMap + ".txt");
}
catch (IOException ex) {
ex.printStackTrace();
return null;
}
}
private TileMap loadMap(String filename) throws IOException {
ArrayList<String> lines = new ArrayList<String>();
int width = 0;
int height = 0;
BufferedReader reader;
try {
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource(filename);
if (url == null) {
throw new IOException("No such map:" + filename);
}
reader = new BufferedReader(new InputStreamReader(url.openStream()));
} catch (Exception e) {
throw new IOException();
}
LinkedList<String> party = new LinkedList<String>();
String first = null;
while (true) {
String line = reader.readLine();
if (line == null) {
reader.close();
break;
}
if (!line.startsWith("#")) {
lines.add(line);
width = Math.max(width, line.length());
}
else {
if (line.startsWith("# Party")) {
line = line.substring(line.indexOf(":")+2);
//parse the party line
int firstComma = line.indexOf(',');
int secondComma = line.indexOf(',', firstComma+1);
firstComma++;
secondComma++;
first = line.substring(1, firstComma-1);
String second = line.substring(firstComma+1, secondComma-1);
String third = line.substring(secondComma+1, line.length()-1);
party.add(first);
party.add(second);
party.add(third);
}
}
}
height = lines.size();
TileMap newMap = new TileMap(width, height, party);
if (first == null) {
newMap.setPlayer(new PlayerSprite("Cat", characterAnimations));
}
else {
newMap.setPlayer(new PlayerSprite(first, characterAnimations));
}
return newMap;
}
private void addSprite(TileMap map, String hostSprite, int tileX, int tileY) {
}
public void loadTileImages() {
ImageLoader loader = new ImageLoader();
tiles = new ArrayList<BufferedImage>();
char ch = 'A';
while (true) {
String name = "tile_" + ch + ".png";
ClassLoader classLoader = getClass().getClassLoader();
URL url = classLoader.getResource("Resources/Images/Background Tiles/" + name);
if (url == null) {
break;
}
tiles.add(loader.loadImage("Resources/Images/Background Tiles/" + name));
ch++;
}
}
public String numberToAnimal(int i) {
if (i == 0) {
return "cat";
}
if (i == 1) {
return "bird";
}
if (i == 2) {
return "fox";
}
if (i == 3) {
return "frog";
}
if (i == 4) {
return "liazrd";
}
if (i == 5) {
return "mouse";
}
if (i == 6) {
return "salamander";
}
if (i == 7) {
return "penguin";
}
if (i == 8) {
return "rabbit";
}
if (i == 9) {
return "snake";
}
if (i == 10) {
return "turtle";
}
return null;
}
private void loadImages() {
spriteSheet = loader.loadImage("Resources/Images/sheet.png");
for (int i = 0 ; i < 11 ; i++ ) {
Hashtable iAnims = new Hashtable();
BufferedImage savedImage = spriteSheet;
for (int x = 0 ; x < 18 ; x++) {
if (x == 0) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 1) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("north", seq);
}
if (x == 2) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 3) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("north east", seq);
}
if (x == 4) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 5) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("east", seq);
}
if (x == 6) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 7) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("south east", seq);
}
if (x == 8) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 9) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("south", seq);
}
if (x == 10) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 11) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("south west", seq);
}
if (x == 12) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 13) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("west", seq);
}
if (x == 14) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 15) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("north west", seq);
}
if (x == 16) {
savedImage = spriteSheet.getSubimage(x*36, i*36+179, 36, 36);
}
if (x == 17) {
ImageSequence seq = new ImageSequence();
seq.addFrame(savedImage, 150);
seq.addFrame(spriteSheet.getSubimage(x*36, i*36+179, 36, 36), 150);
iAnims.put("sleeping", seq);
}
}
characterAnimations.put(numberToAnimal(i), iAnims);
}
}
}