Update button style on theme change
This commit is contained in:
parent
382a41c06b
commit
02c8290c29
2 changed files with 23 additions and 8 deletions
|
@ -19,9 +19,6 @@ public class Klooni extends Game {
|
||||||
public void create() {
|
public void create() {
|
||||||
prefs = Gdx.app.getPreferences("io.github.lonamiwebs.klooni.game");
|
prefs = Gdx.app.getPreferences("io.github.lonamiwebs.klooni.game");
|
||||||
|
|
||||||
// Use only one instance for the theme, so anyone using it uses the most up-to-date
|
|
||||||
theme = Theme.getTheme(prefs.getString("themeName", "default"));
|
|
||||||
|
|
||||||
// TODO Better way to have this skin somewhere
|
// TODO Better way to have this skin somewhere
|
||||||
// Gotta create that darn .json…!
|
// Gotta create that darn .json…!
|
||||||
skin = new Skin(Gdx.files.internal("skin/uiskin.json"));
|
skin = new Skin(Gdx.files.internal("skin/uiskin.json"));
|
||||||
|
@ -46,6 +43,10 @@ public class Klooni extends Game {
|
||||||
skin.add("web_texture", new Texture(Gdx.files.internal("ui/web.png")));
|
skin.add("web_texture", new Texture(Gdx.files.internal("ui/web.png")));
|
||||||
skin.add("back_texture", new Texture(Gdx.files.internal("ui/back.png")));
|
skin.add("back_texture", new Texture(Gdx.files.internal("ui/back.png")));
|
||||||
|
|
||||||
|
// Use only one instance for the theme, so anyone using it uses the most up-to-date
|
||||||
|
Theme.skin = skin; // Not the best idea
|
||||||
|
theme = Theme.getTheme(prefs.getString("themeName", "default"));
|
||||||
|
|
||||||
Gdx.input.setCatchBackKey(true); // To show the pause menu
|
Gdx.input.setCatchBackKey(true); // To show the pause menu
|
||||||
setScreen(new MainMenuScreen(this));
|
setScreen(new MainMenuScreen(this));
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,13 @@ public class Theme {
|
||||||
private Color[] cells;
|
private Color[] cells;
|
||||||
private Color[] buttons;
|
private Color[] buttons;
|
||||||
|
|
||||||
private Theme() { }
|
public static Skin skin;
|
||||||
|
|
||||||
|
private ImageButton.ImageButtonStyle[] buttonStyles;
|
||||||
|
|
||||||
|
private Theme() {
|
||||||
|
buttonStyles = new ImageButton.ImageButtonStyle[4];
|
||||||
|
}
|
||||||
|
|
||||||
public static Theme[] getThemes() {
|
public static Theme[] getThemes() {
|
||||||
FileHandle[] handles = Gdx.files.internal("themes").list();
|
FileHandle[] handles = Gdx.files.internal("themes").list();
|
||||||
|
@ -43,6 +49,10 @@ public class Theme {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Theme update(final FileHandle handle) {
|
private Theme update(final FileHandle handle) {
|
||||||
|
if (skin == null) {
|
||||||
|
throw new NullPointerException("A Theme.skin must be set before updating any Theme instance");
|
||||||
|
}
|
||||||
|
|
||||||
final JsonValue json = new JsonReader().parse(handle.readString());
|
final JsonValue json = new JsonReader().parse(handle.readString());
|
||||||
|
|
||||||
name = handle.nameWithoutExtension();
|
name = handle.nameWithoutExtension();
|
||||||
|
@ -57,6 +67,12 @@ public class Theme {
|
||||||
buttons = new Color[buttonColors.size];
|
buttons = new Color[buttonColors.size];
|
||||||
for (int i = 0; i < buttons.length; i++) {
|
for (int i = 0; i < buttons.length; i++) {
|
||||||
buttons[i] = new Color((int)Long.parseLong(buttonColors.getString(i), 16));
|
buttons[i] = new Color((int)Long.parseLong(buttonColors.getString(i), 16));
|
||||||
|
if (buttonStyles[i] == null) {
|
||||||
|
buttonStyles[i] = new ImageButton.ImageButtonStyle();
|
||||||
|
}
|
||||||
|
|
||||||
|
buttonStyles[i].up = skin.newDrawable("button_up", buttons[i]);
|
||||||
|
buttonStyles[i].down = skin.newDrawable("button_down", buttons[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonValue cellColors = colors.get("cells");
|
JsonValue cellColors = colors.get("cells");
|
||||||
|
@ -71,10 +87,8 @@ public class Theme {
|
||||||
|
|
||||||
// TODO Avoid creating game.skin.newDrawable all the time without disposing…
|
// TODO Avoid creating game.skin.newDrawable all the time without disposing…
|
||||||
public ImageButton.ImageButtonStyle getStyle(final Skin skin, int button, final String imageName) {
|
public ImageButton.ImageButtonStyle getStyle(final Skin skin, int button, final String imageName) {
|
||||||
return new ImageButton.ImageButtonStyle(
|
buttonStyles[button].imageUp = skin.getDrawable(imageName);
|
||||||
skin.newDrawable("button_up", buttons[button]),
|
return buttonStyles[button];
|
||||||
skin.newDrawable("button_down", buttons[button]),
|
|
||||||
null, skin.getDrawable(imageName), null, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color getCellColor(int colorIndex) {
|
public Color getCellColor(int colorIndex) {
|
||||||
|
|
Loading…
Reference in a new issue