package com.rpsg.rpg.ui.widget;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.scenes.scene2d.utils.Drawable;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.rpsg.gdxQuery.TypedGdxQuery;
import com.rpsg.rpg.core.Game;
/**
* GDX-RPG 图片类
*/
public class Image extends com.badlogic.gdx.scenes.scene2d.ui.Image{
public TypedGdxQuery<Image> query(){
return new TypedGdxQuery<>(this);
}
public Image (Texture texture){
super(texture);
if(Game.setting.filter)
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
}
public void setDrawable(Drawable drawable) {
super.setDrawable(drawable);
if(Game.setting.filter && drawable instanceof TextureRegionDrawable)
((TextureRegionDrawable)drawable).getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
}
public Image (Drawable drawable){
super(drawable);
}
public Image(){
super((Drawable)null);
}
/**使用整数坐标,以免导致纹理失真*/
public void setWidth(float width) {
super.setWidth((int)width);
}
public void setHeight(float height) {
super.setHeight((int)height);
}
public void setX(float x) {
super.setX((int)x);
}
public void setY(float y) {
super.setY((int)y);
}
public void setPosition(float x, float y) {
super.setPosition((int)x, (int)y);
}
public boolean isTransparent() {
return getColor().a <= 0;
}
public Texture getTexture() {
if(getDrawable() instanceof TextureRegionDrawable)
return ((TextureRegionDrawable) getDrawable()).getRegion().getTexture();
return null;
}
public Image disableTouch(){
setTouchable(null);
return this;
}
}