package sink.json;
import sink.core.Asset;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.ui.Button;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonValue;
public class ButtonJson extends Button implements Json.Serializer<ButtonJson> {
private String upTexName = null;
private String downTexName = null;
private boolean useSkin = false;
public ButtonJson(){
}
public ButtonJson(boolean useSkin){
super(Asset.skin);
this.useSkin = useSkin;
setWidth(100);
setHeight(70);
}
public ButtonJson(String upTexName, String downTexName){
super(new TextureRegionDrawable(Asset.tex(upTexName)), new TextureRegionDrawable(Asset.tex(downTexName)));
this.upTexName = upTexName;
this.downTexName = downTexName;
setWidth(100);
setHeight(70);
}
@Override
public ButtonJson read(Json json, JsonValue jv, Class arg2) {
ButtonJson btn = new ButtonJson(true);
btn.setName(jv.getString("name"));
btn.setX(jv.getFloat("x"));
btn.setY(jv.getFloat("y"));
btn.setWidth(jv.getFloat("width"));
btn.setHeight(jv.getFloat("height"));
btn.setColor(Color.valueOf(jv.getString("color")));
return btn;
}
@Override
public void write(Json json, ButtonJson btn, Class arg2) {
json.writeObjectStart();
json.writeValue("class", btn.getClass().getName());
json.writeValue("name", btn.getName());
json.writeValue("x", btn.getX());
json.writeValue("y", btn.getY());
json.writeValue("width", btn.getWidth());
json.writeValue("height", btn.getHeight());
if(upTexName != null && !useSkin)
json.writeValue("upTexName", upTexName);
if(downTexName != null && !useSkin)
json.writeValue("downTexName", downTexName);
if(useSkin)
json.writeValue("skin", true);
json.writeValue("color", btn.getColor().toString());
json.writeObjectEnd();
}
}