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();
     }
 }