aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2026-01-24 17:44:30 -0800
committerElizabeth Hunt <me@liz.coffee>2026-01-24 17:44:30 -0800
commitbc75e32e046808250647f7838325d6deda27e5f1 (patch)
tree1405308eb88d59d11140c3f20fddab06d6ab1f17 /core
parent40f482227da73a27e707b28549a8c13796f593a0 (diff)
downloadthe-abstraction-engine-v2-bc75e32e046808250647f7838325d6deda27e5f1.tar.gz
the-abstraction-engine-v2-bc75e32e046808250647f7838325d6deda27e5f1.zip
Remove pressed button state and fix alpha transparency
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/coffee/liz/abstractionengine/app/AbstractionEngineGame.java5
-rw-r--r--core/src/main/java/coffee/liz/abstractionengine/app/actor/BlockyButton.java13
-rw-r--r--core/src/main/java/coffee/liz/abstractionengine/app/actor/LifeGridActor.java2
-rw-r--r--core/src/main/java/coffee/liz/abstractionengine/app/screen/GameScreen.java44
-rw-r--r--core/src/main/java/coffee/liz/abstractionengine/app/screen/MainMenu.java27
-rw-r--r--core/src/main/java/coffee/liz/abstractionengine/app/screen/ScrollLogo.java6
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<Vec2<Integer>> 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<Vec2<Integer>> 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;