From bc75e32e046808250647f7838325d6deda27e5f1 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sat, 24 Jan 2026 17:44:30 -0800 Subject: Remove pressed button state and fix alpha transparency --- .../app/AbstractionEngineGame.java | 5 ++- .../abstractionengine/app/actor/BlockyButton.java | 13 +++++-- .../abstractionengine/app/actor/LifeGridActor.java | 2 +- .../abstractionengine/app/screen/GameScreen.java | 44 +++++++++++----------- .../liz/abstractionengine/app/screen/MainMenu.java | 27 ++++++------- .../abstractionengine/app/screen/ScrollLogo.java | 6 +-- 6 files changed, 52 insertions(+), 45 deletions(-) diff --git a/core/src/main/java/coffee/liz/abstractionengine/app/AbstractionEngineGame.java b/core/src/main/java/coffee/liz/abstractionengine/app/AbstractionEngineGame.java index e379031..d2cf996 100644 --- a/core/src/main/java/coffee/liz/abstractionengine/app/AbstractionEngineGame.java +++ b/core/src/main/java/coffee/liz/abstractionengine/app/AbstractionEngineGame.java @@ -43,15 +43,16 @@ public class AbstractionEngineGame extends Game { } private BitmapFont initFont(final int size, final String path) { + final int scaleForHidpi = 2; final FreeTypeFontGenerator gen = new FreeTypeFontGenerator(Gdx.files.internal(path)); final FreeTypeFontGenerator.FreeTypeFontParameter params = new FreeTypeFontGenerator.FreeTypeFontParameter(); params.characters = RENDERABLE_CHARS; - params.size = size; + params.size = scaleForHidpi * size; final BitmapFont font = gen.generateFont(params); font.setFixedWidthGlyphs(RENDERABLE_CHARS); font.setUseIntegerPositions(false); - font.getData().setScale(WORLD_SIZE.getY() / Gdx.graphics.getHeight()); + font.getData().setScale((1f / scaleForHidpi) * WORLD_SIZE.getY() / Gdx.graphics.getHeight()); font.getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); gen.dispose(); diff --git a/core/src/main/java/coffee/liz/abstractionengine/app/actor/BlockyButton.java b/core/src/main/java/coffee/liz/abstractionengine/app/actor/BlockyButton.java index 7fdc9ae..df2c749 100644 --- a/core/src/main/java/coffee/liz/abstractionengine/app/actor/BlockyButton.java +++ b/core/src/main/java/coffee/liz/abstractionengine/app/actor/BlockyButton.java @@ -1,7 +1,9 @@ package coffee.liz.abstractionengine.app.actor; import coffee.liz.abstractionengine.app.Theme; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.GlyphLayout; @@ -21,6 +23,7 @@ public class BlockyButton extends Actor { private final ShapeRenderer shapeRenderer; private final BitmapFont font; private final String text; + @Setter private Runnable onClick; @@ -37,6 +40,9 @@ public class BlockyButton extends Actor { public void draw(final Batch batch, final float parentAlpha) { batch.end(); + Gdx.gl.glEnable(GL20.GL_BLEND); + Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); + shapeRenderer.setProjectionMatrix(batch.getProjectionMatrix()); shapeRenderer.setTransformMatrix(batch.getTransformMatrix()); @@ -51,6 +57,8 @@ public class BlockyButton extends Actor { getHeight() - BORDER_WIDTH * 2); shapeRenderer.end(); + Gdx.gl.glDisable(GL20.GL_BLEND); + batch.begin(); layout.setText(font, text); @@ -63,10 +71,7 @@ public class BlockyButton extends Actor { } private void computeColors(final float alpha) { - if (pressed) { - bgColor.set(Theme.SURFACE_ALT).a = alpha; - borderColor.set(Theme.PRIMARY_DARK).a = alpha; - } else if (hovered) { + if (hovered) { bgColor.set(Theme.SURFACE_ALT).a = alpha; borderColor.set(Theme.PRIMARY).a = alpha; } else { diff --git a/core/src/main/java/coffee/liz/abstractionengine/app/actor/LifeGridActor.java b/core/src/main/java/coffee/liz/abstractionengine/app/actor/LifeGridActor.java index d61ce5e..e90b522 100644 --- a/core/src/main/java/coffee/liz/abstractionengine/app/actor/LifeGridActor.java +++ b/core/src/main/java/coffee/liz/abstractionengine/app/actor/LifeGridActor.java @@ -97,6 +97,6 @@ public class LifeGridActor extends Actor { private Color interpolateColor(final float alivePercentage) { final float interpolation = alivePercentage * alivePercentage * alivePercentage; - return cellColor.set(Theme.BG).lerp(Theme.FG, interpolation); + return cellColor.set(Theme.BG_PATTERN).lerp(Theme.FG, interpolation); } } diff --git a/core/src/main/java/coffee/liz/abstractionengine/app/screen/GameScreen.java b/core/src/main/java/coffee/liz/abstractionengine/app/screen/GameScreen.java index 2a19a1a..adaad0e 100644 --- a/core/src/main/java/coffee/liz/abstractionengine/app/screen/GameScreen.java +++ b/core/src/main/java/coffee/liz/abstractionengine/app/screen/GameScreen.java @@ -6,40 +6,40 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class GameScreen implements Screen { - private final AbstractionEngineGame game; + private final AbstractionEngineGame game; - @Override - public void show() { + @Override + public void show() { - } + } - @Override - public void render(float delta) { + @Override + public void render(float delta) { - } + } - @Override - public void resize(int width, int height) { + @Override + public void resize(int width, int height) { - } + } - @Override - public void pause() { + @Override + public void pause() { - } + } - @Override - public void resume() { + @Override + public void resume() { - } + } - @Override - public void hide() { + @Override + public void hide() { - } + } - @Override - public void dispose() { + @Override + public void dispose() { - } + } } diff --git a/core/src/main/java/coffee/liz/abstractionengine/app/screen/MainMenu.java b/core/src/main/java/coffee/liz/abstractionengine/app/screen/MainMenu.java index 4f6923a..9279b45 100644 --- a/core/src/main/java/coffee/liz/abstractionengine/app/screen/MainMenu.java +++ b/core/src/main/java/coffee/liz/abstractionengine/app/screen/MainMenu.java @@ -19,6 +19,7 @@ import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.utils.ScreenUtils; import lombok.RequiredArgsConstructor; +import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -60,19 +61,12 @@ public class MainMenu implements Screen { final float startY = worldHeight / 2f + BUTTON_HEIGHT; final BlockyButton playButton = createButton("Play", centerX, startY); - playButton.setOnClick(() -> { - game.setScreen(new GameScreen(game)); - }); - - final BlockyButton optionsButton = createButton("Options", centerX, startY - BUTTON_HEIGHT - BUTTON_SPACING); - optionsButton.setOnClick(() -> { - }); + playButton.setOnClick(() -> game.setScreen(new GameScreen(game))); final BlockyButton quitButton = createButton("Quit", centerX, startY - (BUTTON_HEIGHT + BUTTON_SPACING) * 2); quitButton.setOnClick(Gdx.app::exit); stage.addActor(playButton); - stage.addActor(optionsButton); stage.addActor(quitButton); } @@ -85,13 +79,20 @@ public class MainMenu implements Screen { } private static Set> createGliderPattern() { + final int[][] glider = { + {0, 1, 0}, + {0, 1, 1}, + {1, 0, 1}, + }; final int offsetX = 5; final int offsetY = 40; - return Set.of(Vec2i.builder().x(offsetX + 1).y(offsetY + 2).build(), - Vec2i.builder().x(offsetX + 2).y(offsetY + 1).build(), - Vec2i.builder().x(offsetX + 0).y(offsetY + 0).build(), - Vec2i.builder().x(offsetX + 1).y(offsetY + 0).build(), - Vec2i.builder().x(offsetX + 2).y(offsetY + 0).build()); + final Set> gliderPattern = new HashSet<>(); + for (int y = 0; y < 3; y++) + for (int x = 0; x < 3; x++) + if (glider[y][x] == 1) + gliderPattern.add(Vec2i.builder().y(offsetY + y).x(offsetX + x).build()); + + return gliderPattern; } @Override diff --git a/core/src/main/java/coffee/liz/abstractionengine/app/screen/ScrollLogo.java b/core/src/main/java/coffee/liz/abstractionengine/app/screen/ScrollLogo.java index ba5f2b4..225457f 100644 --- a/core/src/main/java/coffee/liz/abstractionengine/app/screen/ScrollLogo.java +++ b/core/src/main/java/coffee/liz/abstractionengine/app/screen/ScrollLogo.java @@ -15,12 +15,12 @@ import java.time.Duration; @RequiredArgsConstructor public class ScrollLogo implements Screen { - private static final Duration SHOW_FOR = Duration.ofSeconds(6); + private static final Duration SHOW_FOR = Duration.ofSeconds(7); private static final float LOGO_HEIGHT = 70f; private static final float PENGUIN_SIZE = 20f; private static final float SCROLL_PERCENT = 0.4f; - private static final float EEPY_PERCENT = 0.4f; - private static final float EEP_PERCENT = 0.05f; + private static final float EEPY_PERCENT = 0.3f; + private static final float EEP_PERCENT = 0.15f; private static final float FADE_PERCENT = 0.15f; private final AbstractionEngineGame game; -- cgit v1.2.3-70-g09d2