Rogue: Savage Rats, a retro-themed dungeon crawler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
rogue-savage-rats/src/mightypork/rogue/textures/MultiTexture.java

140 lines
1.8 KiB

package mightypork.rogue.textures;
import mightypork.utils.math.coord.Rect;
import org.newdawn.slick.opengl.Texture;
public class MultiTexture implements Texture {
private Texture backingTexture;
private String resourcePath;
public MultiTexture(String resourcePath) {
this.resourcePath = resourcePath;
}
public TxQuad getQuad(Rect rect)
{
return new TxQuad(this, rect);
}
/**
* Attempt to load the texture.
*/
private void load()
{
if (backingTexture == null) {
backingTexture = Render.loadTexture(resourcePath);
}
}
@Override
public boolean hasAlpha()
{
load();
return backingTexture.hasAlpha();
}
@Override
public String getTextureRef()
{
load();
return backingTexture.getTextureRef();
}
@Override
public void bind()
{
load();
backingTexture.bind();
}
@Override
public int getImageHeight()
{
load();
return backingTexture.getImageHeight();
}
@Override
public int getImageWidth()
{
load();
return backingTexture.getImageWidth();
}
@Override
public float getHeight()
{
load();
return backingTexture.getHeight();
}
@Override
public float getWidth()
{
load();
return backingTexture.getWidth();
}
@Override
public int getTextureHeight()
{
load();
return backingTexture.getTextureHeight();
}
@Override
public int getTextureWidth()
{
load();
return backingTexture.getTextureWidth();
}
@Override
public void release()
{
if (backingTexture == null) return;
backingTexture.release();
}
@Override
public int getTextureID()
{
load();
return backingTexture.getTextureID();
}
@Override
public byte[] getTextureData()
{
load();
return backingTexture.getTextureData();
}
@Override
public void setTextureFilter(int textureFilter)
{
load();
backingTexture.setTextureFilter(textureFilter);
}
}