Created
March 3, 2012 16:07
-
-
Save flexd/1966821 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
*/ | |
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