Skip to content

Instantly share code, notes, and snippets.

@flexd
Created March 3, 2012 16:07
Show Gist options
  • Save flexd/1966821 to your computer and use it in GitHub Desktop.
Save flexd/1966821 to your computer and use it in GitHub Desktop.
/*
*/
package org.cognitive;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
/**
*
* @author Kristoffer Berdal <[email protected]>
* @studnr 180212
* @date Mar 3, 2012
*/
public class TextureManager {
private List<SpriteSheet> sheets = new ArrayList<SpriteSheet>();
private List<Sprite> sprites = new ArrayList<Sprite>();
public TextureManager() {
}
public int load(int dimension_x, int dimension_y, String filename) {
SpriteSheet sheet = new SpriteSheet(dimension_x, dimension_y, filename);
sheets.add(sheet);
return sheets.size(); // Returns the spritesheets ID (or some other genious plan).
}
public void define(String name, int x, int y) {
Sprite sprite = new Sprite(sprites.size()+1, name, x, y); //
sprites.add(sprite);
}
public Texture getByName(String name) {
for (Sprite sprite : sprites) {
if (sprite.getName().equals(name)) return sheets.get(sprite.getSheetID()).getSprite(sprite.getX(), sprite.getY());
}
return null;
}
private class SpriteSheet {
private Texture sheet;
public SpriteSheet(int dimension_x, int dimension_y, String filename) {
sheet = load(filename);
}
public final Texture load(String textureName) {
try {
Texture texture = TextureLoader.getTexture("PNG", getClass().getResourceAsStream("/res/" + textureName + ".png"));
return texture;
} catch (IOException ex) {
Logger.getLogger(ScrollGame.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public Texture get() {
return this.sheet;
}
private Texture getSprite(int x, int y) {
return null; // TODO: INSERT SENSE HERE?
}
}
private static class Sprite {
private String name;
private int offset_x;
private int offset_y;
private int sheetID;
public Sprite(int sheetID, String name, int x, int y) {
this.sheetID = sheetID;
this.name = name;
this.offset_x = x;
this.offset_y = y;
}
public String getName() {
return name;
}
public int getX() {
return offset_x;
}
public int getY() {
return offset_y;
}
private int getSheetID() {
return sheetID;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment