/*
 *   This file is a part of the SteamWar software.
 *
 *   Copyright (C) 2025 SteamWar.de-Serverteam
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU Affero General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *   GNU Affero General Public License for more details.
 *
 *   You should have received a copy of the GNU Affero General Public License
 *   along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

package de.steamwar.lobby;

import de.steamwar.lobby.display.Hologram;
import de.steamwar.lobby.jumpandrun.JumpAndRun;
import de.steamwar.lobby.portal.Portal;
import org.bukkit.Location;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.util.Vector;

import java.util.ArrayList;
import java.util.List;

public class Config {
    static {
        ConfigurationSerialization.registerClass(Portal.class);
        ConfigurationSerialization.registerClass(Hologram.class);
    }

    private final FileConfiguration yml;
    private Location waitingHallSpawn;

    public Config(FileConfiguration yml) {
        this.yml = yml;

        yml.getList("portals", Portal.getPortals());
        yml.getList("holograms", Hologram.getHolograms());
        JumpAndRun.actualPoints = (List<Vector>) yml.getList("jumpPoints", new ArrayList<>());
        JumpAndRun.points.addAll(JumpAndRun.actualPoints);
        // Remove 2 Blocks in Tree
        JumpAndRun.points.remove(141);
        JumpAndRun.points.remove(140);
        waitingHallSpawn = yml.getLocation("waitingHallSpawn");
    }

    public Location getWaitingHallSpawn() {
        return waitingHallSpawn;
    }

    public void setWaitingHallSpawn(Location waitingHallSpawn) {
        this.waitingHallSpawn = waitingHallSpawn;
        save();
    }

    public void save() {
        yml.set("portals", Portal.getPortals());
        yml.set("holograms", Hologram.getHolograms());
        yml.set("waitingHallSpawn", waitingHallSpawn);
        yml.set("jumpPoints", JumpAndRun.actualPoints);

        LobbySystem.getInstance().saveConfig();
    }
}
