// Path: core/src/com/ychstudio/gamesys/GameManager.java
// public class GameManager implements Disposable {
// 
//     public static final GameManager instance = new GameManager();
// 
//     public static final float PPM = 16f;
// 
//     public static final short NOTHING_BIT = 0;
//     public static final short WALL_BIT = 1;
//     public static final short PLAYER_BIT = 1 << 1;
//     public static final short PILL_BIT = 1 << 2;
//     public static final short GHOST_BIT = 1 << 3;
//     public static final short GATE_BIT = 1 << 4;
//     public static final short LIGHT_BIT = 1 << 5;
// 
//     public AssetManager assetManager;
// 
//     public Vector2 playerSpawnPos;
//     public Vector2 ghostSpawnPos;
// 
//     public int totalPills = 0;
// 
//     public int highScore = 0;
//     public int score = 0;
// 
//     public int displayScore = 0;
//     public int displayHighScore = 0;
// 
//     public int playerLives = 4;
//     public boolean playerIsInvincible = true;
// 
//     public boolean bigPillEaten = false;
//     public boolean playerIsAlive = true;
//     private boolean gameOver = false;
// 
//     public AStartPathFinding pathfinder;
// 
//     public Location<Vector2> playerLocation;
// 
//     private GameManager() {
//         assetManager = new AssetManager();
//         assetManager.load("images/actors.pack", TextureAtlas.class);
//         assetManager.load("sounds/pill.ogg", Sound.class);
//         assetManager.load("sounds/big_pill.ogg", Sound.class);
//         assetManager.load("sounds/ghost_die.ogg", Sound.class);
//         assetManager.load("sounds/pacman_die.ogg", Sound.class);
//         assetManager.load("sounds/clear.ogg", Sound.class);
// 
//         assetManager.finishLoading();
// 
//         playerSpawnPos = new Vector2();
//         ghostSpawnPos = new Vector2();
//     }
// 
//     public void decreasePlayerLives() {
//         playerLives--;
//     }
// 
//     public void resetPlayerLives() {
//         playerLives = 3;
//     }
// 
//     public void makeGameOver() {
//         gameOver = true;
//     }
// 
//     public boolean isGameOver() {
//         return gameOver;
//     }
// 
//     public void resetGame(boolean restart) {
//         if (restart) {
//             score = 0;
//             displayScore = 0;
//             resetPlayerLives();
//         }
//         totalPills = 0;
//         playerIsAlive = true;
//         bigPillEaten = false;
//         gameOver = false;
//     }
// 
//     public void addScore(int score) {
//         this.score += score;
//         if (this.score > highScore) {
//             highScore = this.score;
//         }
//     }
// 
//     @Override
//     public void dispose() {
//         assetManager.dispose();
//     }
// }
// 
// Path: core/src/com/ychstudio/utils/Box2dLocation.java
// public class Box2dLocation implements Location<Vector2>{
//     
//     Vector2 position;
//     float orientation;
//     
//     public Box2dLocation() {
//         position = new Vector2();
//         orientation = 0;
//     }
// 
//     @Override
//     public Vector2 getPosition() {
//         return position;
//     }
// 
//     @Override
//     public float getOrientation() {
//         return orientation;
//     }
// 
//     @Override
//     public void setOrientation(float orientation) {
//         this.orientation = orientation;
//     }
// 
//     @Override
//     public float vectorToAngle(Vector2 vector) {
//         return Box2dSteeringUtils.vectorToAngle(vector);
//     }
// 
//     @Override
//     public Vector2 angleToVector(Vector2 outVector, float angle) {
//         return Box2dSteeringUtils.angleToVector(outVector, angle);
//     }
// 
//     @Override
//     public Location<Vector2> newLocation() {
//         return new Box2dLocation();
//     }
//     
// }
// 
// Path: core/src/com/ychstudio/utils/Box2dSteeringUtils.java
// public final class Box2dSteeringUtils {
//     
//     private Box2dSteeringUtils() {
//         
//     }
//     
//     public static float vectorToAngle(Vector2 vector) {
//         return (float) Math.atan2(-vector.x, vector.y);
//     }
//     
//     public static Vector2 angleToVector(Vector2 outVector, float angle) {
//         outVector.x = -(float) Math.sin(angle);
//         outVector.y = (float) Math.cos(angle);
//         
//         return outVector;
//     }
// }


import com.badlogic.gdx.ai.steer.Steerable;
import com.badlogic.gdx.ai.steer.SteeringAcceleration;
import com.badlogic.gdx.ai.steer.SteeringBehavior;
import com.badlogic.gdx.ai.steer.behaviors.Arrive;
import com.badlogic.gdx.ai.steer.behaviors.Wander;
import com.badlogic.gdx.ai.utils.Location;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.ychstudio.gamesys.GameManager;
import com.ychstudio.utils.Box2dLocation;
import com.ychstudio.utils.Box2dSteeringUtils;
        return boundingRadius;
    }

    @Override
    public boolean isTagged() {
        return tagged;
    }

    @Override
    public void setTagged(boolean tagged) {
        this.tagged = tagged;
    }

    @Override
    public Vector2 getPosition() {
        return body.getPosition();
    }

    @Override
    public float getOrientation() {
        return body.getAngle();
    }

    @Override
    public void setOrientation(float orientation) {
        body.setTransform(getPosition(), orientation);
    }

    @Override
    public float vectorToAngle(Vector2 vector) {
// Path: core/src/com/ychstudio/gamesys/GameManager.java
// public class GameManager implements Disposable {
// 
//     public static final GameManager instance = new GameManager();
// 
//     public static final float PPM = 16f;
// 
//     public static final short NOTHING_BIT = 0;
//     public static final short WALL_BIT = 1;
//     public static final short PLAYER_BIT = 1 << 1;
//     public static final short PILL_BIT = 1 << 2;
//     public static final short GHOST_BIT = 1 << 3;
//     public static final short GATE_BIT = 1 << 4;
//     public static final short LIGHT_BIT = 1 << 5;
// 
//     public AssetManager assetManager;
// 
//     public Vector2 playerSpawnPos;
//     public Vector2 ghostSpawnPos;
// 
//     public int totalPills = 0;
// 
//     public int highScore = 0;
//     public int score = 0;
// 
//     public int displayScore = 0;
//     public int displayHighScore = 0;
// 
//     public int playerLives = 4;
//     public boolean playerIsInvincible = true;
// 
//     public boolean bigPillEaten = false;
//     public boolean playerIsAlive = true;
//     private boolean gameOver = false;
// 
//     public AStartPathFinding pathfinder;
// 
//     public Location<Vector2> playerLocation;
// 
//     private GameManager() {
//         assetManager = new AssetManager();
//         assetManager.load("images/actors.pack", TextureAtlas.class);
//         assetManager.load("sounds/pill.ogg", Sound.class);
//         assetManager.load("sounds/big_pill.ogg", Sound.class);
//         assetManager.load("sounds/ghost_die.ogg", Sound.class);
//         assetManager.load("sounds/pacman_die.ogg", Sound.class);
//         assetManager.load("sounds/clear.ogg", Sound.class);
// 
//         assetManager.finishLoading();
// 
//         playerSpawnPos = new Vector2();
//         ghostSpawnPos = new Vector2();
//     }
// 
//     public void decreasePlayerLives() {
//         playerLives--;
//     }
// 
//     public void resetPlayerLives() {
//         playerLives = 3;
//     }
// 
//     public void makeGameOver() {
//         gameOver = true;
//     }
// 
//     public boolean isGameOver() {
//         return gameOver;
//     }
// 
//     public void resetGame(boolean restart) {
//         if (restart) {
//             score = 0;
//             displayScore = 0;
//             resetPlayerLives();
//         }
//         totalPills = 0;
//         playerIsAlive = true;
//         bigPillEaten = false;
//         gameOver = false;
//     }
// 
//     public void addScore(int score) {
//         this.score += score;
//         if (this.score > highScore) {
//             highScore = this.score;
//         }
//     }
// 
//     @Override
//     public void dispose() {
//         assetManager.dispose();
//     }
// }
// 
// Path: core/src/com/ychstudio/utils/Box2dLocation.java
// public class Box2dLocation implements Location<Vector2>{
//     
//     Vector2 position;
//     float orientation;
//     
//     public Box2dLocation() {
//         position = new Vector2();
//         orientation = 0;
//     }
// 
//     @Override
//     public Vector2 getPosition() {
//         return position;
//     }
// 
//     @Override
//     public float getOrientation() {
//         return orientation;
//     }
// 
//     @Override
//     public void setOrientation(float orientation) {
//         this.orientation = orientation;
//     }
// 
//     @Override
//     public float vectorToAngle(Vector2 vector) {
//         return Box2dSteeringUtils.vectorToAngle(vector);
//     }
// 
//     @Override
//     public Vector2 angleToVector(Vector2 outVector, float angle) {
//         return Box2dSteeringUtils.angleToVector(outVector, angle);
//     }
// 
//     @Override
//     public Location<Vector2> newLocation() {
//         return new Box2dLocation();
//     }
//     
// }
// 
// Path: core/src/com/ychstudio/utils/Box2dSteeringUtils.java
// public final class Box2dSteeringUtils {
//     
//     private Box2dSteeringUtils() {
//         
//     }
//     
//     public static float vectorToAngle(Vector2 vector) {
//         return (float) Math.atan2(-vector.x, vector.y);
//     }
//     
//     public static Vector2 angleToVector(Vector2 outVector, float angle) {
//         outVector.x = -(float) Math.sin(angle);
//         outVector.y = (float) Math.cos(angle);
//         
//         return outVector;
//     }
// }


// Path: core/src/com/ychstudio/ai/GhostAI.java
import com.badlogic.gdx.ai.steer.Steerable;
import com.badlogic.gdx.ai.steer.SteeringAcceleration;
import com.badlogic.gdx.ai.steer.SteeringBehavior;
import com.badlogic.gdx.ai.steer.behaviors.Arrive;
import com.badlogic.gdx.ai.steer.behaviors.Wander;
import com.badlogic.gdx.ai.utils.Location;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.ychstudio.gamesys.GameManager;
import com.ychstudio.utils.Box2dLocation;
import com.ychstudio.utils.Box2dSteeringUtils;

        return boundingRadius;
    }

    @Override
    public boolean isTagged() {
        return tagged;
    }

    @Override
    public void setTagged(boolean tagged) {
        this.tagged = tagged;
    }

    @Override
    public Vector2 getPosition() {
        return body.getPosition();
    }

    @Override
    public float getOrientation() {
        return body.getAngle();
    }

    @Override
    public void setOrientation(float orientation) {
        body.setTransform(getPosition(), orientation);
    }

    @Override
    public float vectorToAngle(Vector2 vector) {
        return Box2dSteeringUtils.vectorToAngle(vector);