export class GlobalState {
    constructor() {
        this.playerData = {
            hearts: 3,
            maxHearts: 3,
            score: 0,
            inventory: [],
            upgrades: []
        };
    }

    get hearts() {
        return this.playerData.hearts;
    }

    set hearts(value) {
        if (value < 0) {
            throw new Error("Hearts cannot be less than 0");
        }
        this.playerData.hearts = value;
    }

    get maxHearts() {
        return this.playerData.maxHearts;
    }

    set maxHearts(value) {
        if (value < 0) {
            throw new Error("Max hearts cannot be less than 0");
        }
        this.playerData.maxHearts = value;
    }

    get score() {
        return this.playerData.score;
    }

    set score(value) {
        if (value < 0) {
            throw new Error("Score cannot be less than 0");
        }
        this.playerData.score = value;
    }

    get inventory() {
        return [...this.playerData.inventory]; // Return a copy to prevent external modification
    }

    set inventory(value) {
        if (!Array.isArray(value)) {
            throw new Error("Inventory must be an array");
        }
        this.playerData.inventory = value;
    }

    get upgrades() {
        return [...this.playerData.upgrades]; // Return a copy to prevent external modification
    }

    set upgrades(value) {
        if (!Array.isArray(value)) {
            throw new Error("Upgrades must be an array");
        }
        this.playerData.upgrades = value;
    }
}