Coverage Summary for Class: AchievementScreen (io.github.unisim.ui)
| Class |
Method, %
|
Branch, %
|
Line, %
|
| AchievementScreen |
0%
(0/8)
|
0%
(0/4)
|
0%
(0/43)
|
| AchievementScreen$1 |
0%
(0/2)
|
0%
(0/2)
|
| Total |
0%
(0/10)
|
0%
(0/4)
|
0%
(0/45)
|
package io.github.unisim.ui;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import io.github.unisim.Achievements;
import io.github.unisim.GameState;
import io.github.unisim.AchievementManager;
import java.util.List;
public class AchievementScreen implements Screen {
private Stage stage;
private Table table;
private Skin altskin = GameState.altSkin;
private TextButton backButton;
private InputMultiplexer inputMultiplexer = new InputMultiplexer();
private AchievementManager achievementManager;
public AchievementScreen() {
achievementManager = AchievementManager.getInstance(); // Singleton instance
stage = new Stage();
table = new Table();
// Create an Image for the background
Image backgroundImage = new Image(new Texture(Gdx.files.internal("ui/achievementscreen.png")));
backgroundImage.setFillParent(true); // Fill the screen with image
stage.addActor(backgroundImage); // Add the background to the stage
// Display achievement title
Label title = new Label("Achievements", altskin);
title.setFontScale(1.3f);
title.setPosition(Gdx.graphics.getWidth() / 2 - 170,
Gdx.graphics.getHeight() - 80);
stage.addActor(title);
// Back button
backButton = new TextButton("Back", altskin);
backButton.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
// Go back to the start menu
GameState.popScreen();
}
});
// Fetch the list of achievements
List<Achievements> achievements = achievementManager.getAchievements();
int yPosition = 550;
// Render each achievement on the screen
for (Achievements achievement : achievements) {
String status = achievement.isUnlocked() ? "Unlocked" : "Locked";
Label achievementLabel = new Label(achievement.getName() + ": " + status, altskin);
achievementLabel.setFontScale(0.8f);
achievementLabel.setPosition(Gdx.graphics.getWidth() / 2 - 200, yPosition);
stage.addActor(achievementLabel);
yPosition -= 50; // Move down for the next entry
}
// Add UI elements to stage
table.setFillParent(true);
table.center();
table.pad(700, 100, 100, 100);
table.add(backButton).center().width(150).height(40);
stage.addActor(table);
inputMultiplexer.addProcessor(GameState.fullscreenInputProcessor);
inputMultiplexer.addProcessor(stage);
}
@Override
public void show() {
Gdx.input.setInputProcessor(inputMultiplexer);
}
@Override
public void render(float delta) {
// Clear the screen
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act(delta);
stage.draw();
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void pause() {
}
@Override
public void resume() {
Gdx.input.setInputProcessor(inputMultiplexer);
}
@Override
public void hide() {
}
@Override
public void dispose() {
stage.dispose();
altskin.dispose();
}
}