Use per-theme cell texture
This commit is contained in:
parent
02c8290c29
commit
4706cb221e
7 changed files with 29 additions and 37 deletions
|
@ -3,6 +3,8 @@ package io.github.lonamiwebs.klooni;
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.files.FileHandle;
|
import com.badlogic.gdx.files.FileHandle;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.NinePatch;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
|
import com.badlogic.gdx.scenes.scene2d.ui.ImageButton;
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
|
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
|
||||||
import com.badlogic.gdx.utils.JsonReader;
|
import com.badlogic.gdx.utils.JsonReader;
|
||||||
|
@ -19,6 +21,8 @@ public class Theme {
|
||||||
|
|
||||||
public static Skin skin;
|
public static Skin skin;
|
||||||
|
|
||||||
|
public NinePatch cellPatch;
|
||||||
|
|
||||||
private ImageButton.ImageButtonStyle[] buttonStyles;
|
private ImageButton.ImageButtonStyle[] buttonStyles;
|
||||||
|
|
||||||
private Theme() {
|
private Theme() {
|
||||||
|
@ -82,6 +86,9 @@ public class Theme {
|
||||||
}
|
}
|
||||||
|
|
||||||
String cellTextureFile = json.getString("cell_texture");
|
String cellTextureFile = json.getString("cell_texture");
|
||||||
|
cellPatch = new NinePatch(new Texture(
|
||||||
|
Gdx.files.internal("ui/cells/"+cellTextureFile)), 4, 4, 4, 4);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,7 @@ package io.github.lonamiwebs.klooni.actors;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
import com.badlogic.gdx.graphics.g2d.NinePatch;
|
|
||||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
|
@ -19,15 +17,9 @@ public class ThemeCard extends Actor {
|
||||||
|
|
||||||
public final Theme theme;
|
public final Theme theme;
|
||||||
|
|
||||||
// TODO Use the cell patch given the theme, not basic
|
|
||||||
private final NinePatch cellPatch;
|
|
||||||
|
|
||||||
public ThemeCard(final GameLayout layout, final Theme theme) {
|
public ThemeCard(final GameLayout layout, final Theme theme) {
|
||||||
shapeRenderer = new ShapeRenderer(20);
|
shapeRenderer = new ShapeRenderer(20);
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
cellPatch = new NinePatch(
|
|
||||||
new Texture(Gdx.files.internal("ui/cells/basic.png")), 4, 4, 4, 4);
|
|
||||||
|
|
||||||
layout.update(this);
|
layout.update(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,16 +47,16 @@ public class ThemeCard extends Actor {
|
||||||
// 8 7 3
|
// 8 7 3
|
||||||
// 8 8 3
|
// 8 8 3
|
||||||
float cellSize = getHeight() * 0.2f;
|
float cellSize = getHeight() * 0.2f;
|
||||||
Cell.draw(theme.getCellColor(0), batch, cellPatch, x + cellSize, y + cellSize, cellSize);
|
Cell.draw(theme.getCellColor(0), batch, x + cellSize, y + cellSize, cellSize);
|
||||||
Cell.draw(theme.getCellColor(7), batch, cellPatch, x + cellSize * 2, y + cellSize, cellSize);
|
Cell.draw(theme.getCellColor(7), batch, x + cellSize * 2, y + cellSize, cellSize);
|
||||||
Cell.draw(theme.getCellColor(7), batch, cellPatch, x + cellSize * 3, y + cellSize, cellSize);
|
Cell.draw(theme.getCellColor(7), batch, x + cellSize * 3, y + cellSize, cellSize);
|
||||||
|
|
||||||
Cell.draw(theme.getCellColor(8), batch, cellPatch, x + cellSize, y + cellSize * 2, cellSize);
|
Cell.draw(theme.getCellColor(8), batch, x + cellSize, y + cellSize * 2, cellSize);
|
||||||
Cell.draw(theme.getCellColor(7), batch, cellPatch, x + cellSize * 2, y + cellSize * 2, cellSize);
|
Cell.draw(theme.getCellColor(7), batch, x + cellSize * 2, y + cellSize * 2, cellSize);
|
||||||
Cell.draw(theme.getCellColor(8), batch, cellPatch, x + cellSize * 3, y + cellSize * 2, cellSize);
|
Cell.draw(theme.getCellColor(8), batch, x + cellSize * 3, y + cellSize * 2, cellSize);
|
||||||
|
|
||||||
Cell.draw(theme.getCellColor(8), batch, cellPatch, x + cellSize, y + cellSize * 3, cellSize);
|
Cell.draw(theme.getCellColor(8), batch, x + cellSize, y + cellSize * 3, cellSize);
|
||||||
Cell.draw(theme.getCellColor(8), batch, cellPatch, x + cellSize * 2, y + cellSize * 3, cellSize);
|
Cell.draw(theme.getCellColor(8), batch, x + cellSize * 2, y + cellSize * 3, cellSize);
|
||||||
Cell.draw(theme.getCellColor(3), batch, cellPatch, x + cellSize * 3, y + cellSize * 3, cellSize);
|
Cell.draw(theme.getCellColor(3), batch, x + cellSize * 3, y + cellSize * 3, cellSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@ package io.github.lonamiwebs.klooni.game;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.audio.Sound;
|
import com.badlogic.gdx.audio.Sound;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.NinePatch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import com.badlogic.gdx.math.MathUtils;
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
@ -20,15 +18,11 @@ public class Board {
|
||||||
|
|
||||||
final Vector2 pos;
|
final Vector2 pos;
|
||||||
|
|
||||||
public NinePatch cellPatch;
|
|
||||||
private final Sound stripClearSound;
|
private final Sound stripClearSound;
|
||||||
|
|
||||||
public Board(final GameLayout layout, int cellCount) {
|
public Board(final GameLayout layout, int cellCount) {
|
||||||
this.cellCount = cellCount;
|
this.cellCount = cellCount;
|
||||||
|
|
||||||
cellPatch = new NinePatch(
|
|
||||||
new Texture(Gdx.files.internal("ui/cells/basic.png")), 4, 4, 4, 4);
|
|
||||||
|
|
||||||
stripClearSound = Gdx.audio.newSound(Gdx.files.internal("sound/strip_clear.mp3"));
|
stripClearSound = Gdx.audio.newSound(Gdx.files.internal("sound/strip_clear.mp3"));
|
||||||
|
|
||||||
lastPutPiecePos = new Vector2();
|
lastPutPiecePos = new Vector2();
|
||||||
|
@ -175,7 +169,7 @@ public class Board {
|
||||||
public void draw(SpriteBatch batch) {
|
public void draw(SpriteBatch batch) {
|
||||||
for (int i = 0; i < cellCount; i++) {
|
for (int i = 0; i < cellCount; i++) {
|
||||||
for (int j = 0; j < cellCount; j++) {
|
for (int j = 0; j < cellCount; j++) {
|
||||||
cells[i][j].draw(batch, cellPatch);
|
cells[i][j].draw(batch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,11 +3,12 @@ package io.github.lonamiwebs.klooni.game;
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.g2d.Batch;
|
import com.badlogic.gdx.graphics.g2d.Batch;
|
||||||
import com.badlogic.gdx.graphics.g2d.NinePatch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import com.badlogic.gdx.math.Interpolation;
|
import com.badlogic.gdx.math.Interpolation;
|
||||||
import com.badlogic.gdx.math.Vector2;
|
import com.badlogic.gdx.math.Vector2;
|
||||||
|
|
||||||
|
import io.github.lonamiwebs.klooni.Klooni;
|
||||||
|
|
||||||
public class Cell {
|
public class Cell {
|
||||||
|
|
||||||
private boolean empty;
|
private boolean empty;
|
||||||
|
@ -35,8 +36,8 @@ public class Cell {
|
||||||
color = c;
|
color = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw(SpriteBatch batch, NinePatch patch) {
|
void draw(SpriteBatch batch) {
|
||||||
draw(color, batch, patch, pos.x, pos.y, size);
|
draw(color, batch, pos.x, pos.y, size);
|
||||||
|
|
||||||
// Draw the previous vanishing cell
|
// Draw the previous vanishing cell
|
||||||
if (vanishElapsed <= vanishLifetime) {
|
if (vanishElapsed <= vanishLifetime) {
|
||||||
|
@ -49,15 +50,15 @@ public class Cell {
|
||||||
vanishSize = Interpolation.elasticIn.apply(size, 0, progress);
|
vanishSize = Interpolation.elasticIn.apply(size, 0, progress);
|
||||||
|
|
||||||
float centerOffset = size * 0.5f - vanishSize * 0.5f;
|
float centerOffset = size * 0.5f - vanishSize * 0.5f;
|
||||||
draw(vanishColor, batch, patch, pos.x + centerOffset, pos.y + centerOffset, vanishSize);
|
draw(vanishColor, batch, pos.x + centerOffset, pos.y + centerOffset, vanishSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Use skin atlas
|
// TODO Use skin atlas
|
||||||
public static void draw(Color color, Batch batch, NinePatch patch,
|
public static void draw(Color color, Batch batch,
|
||||||
float x, float y, float size) {
|
float x, float y, float size) {
|
||||||
batch.setColor(color);
|
batch.setColor(color);
|
||||||
patch.draw(batch, x, y, size, size);
|
Klooni.theme.cellPatch.draw(batch, x, y, size, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isEmpty() {
|
boolean isEmpty() {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package io.github.lonamiwebs.klooni.game;
|
package io.github.lonamiwebs.klooni.game;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color;
|
import com.badlogic.gdx.graphics.Color;
|
||||||
import com.badlogic.gdx.graphics.g2d.NinePatch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import com.badlogic.gdx.math.MathUtils;
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
import com.badlogic.gdx.math.Rectangle;
|
import com.badlogic.gdx.math.Rectangle;
|
||||||
|
@ -126,11 +125,11 @@ public class Piece {
|
||||||
return result.scl(1f / filledCount);
|
return result.scl(1f / filledCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw(SpriteBatch batch, NinePatch patch) {
|
void draw(SpriteBatch batch) {
|
||||||
for (int i = 0; i < cellRows; i++) {
|
for (int i = 0; i < cellRows; i++) {
|
||||||
for (int j = 0; j < cellCols; j++) {
|
for (int j = 0; j < cellCols; j++) {
|
||||||
if (shape[i][j]) {
|
if (shape[i][j]) {
|
||||||
Cell.draw(color, batch, patch,
|
Cell.draw(color, batch,
|
||||||
pos.x + j * cellSize, pos.y + i * cellSize, cellSize);
|
pos.x + j * cellSize, pos.y + i * cellSize, cellSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package io.github.lonamiwebs.klooni.game;
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.audio.Sound;
|
import com.badlogic.gdx.audio.Sound;
|
||||||
import com.badlogic.gdx.graphics.g2d.NinePatch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import com.badlogic.gdx.math.Interpolation;
|
import com.badlogic.gdx.math.Interpolation;
|
||||||
import com.badlogic.gdx.math.MathUtils;
|
import com.badlogic.gdx.math.MathUtils;
|
||||||
|
@ -188,10 +187,10 @@ public class PieceHolder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void draw(SpriteBatch batch, NinePatch patch) {
|
public void draw(SpriteBatch batch) {
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
if (pieces[i] != null) {
|
if (pieces[i] != null) {
|
||||||
pieces[i].draw(batch, patch);
|
pieces[i].draw(batch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class GameScreen implements Screen, InputProcessor {
|
||||||
scorer.draw(batch);
|
scorer.draw(batch);
|
||||||
board.draw(batch);
|
board.draw(batch);
|
||||||
holder.update();
|
holder.update();
|
||||||
holder.draw(batch, board.cellPatch);
|
holder.draw(batch);
|
||||||
|
|
||||||
batch.end();
|
batch.end();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue