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.
140 lines
1.8 KiB
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);
|
|
}
|
|
|
|
}
|
|
|