#include "Methodes.h"

std::string niveauSuivant(std::string index, std::string niveauPrecedant)
{
    std::ifstream flux(index.c_str());
    std::string _niveauSuivant;
    if(flux)
    {
        if(niveauPrecedant == "")
        {
            if(getline(flux, _niveauSuivant))
                return _niveauSuivant.erase(0, 5);
            else
                return "";
        }

        bool trouver = false;
        while(getline(flux, _niveauSuivant))
        {
            if(trouver)
                return _niveauSuivant;
            if(_niveauSuivant == niveauPrecedant)
                trouver = true;
        }
        if(trouver)
            save("Niveaux/0index.txt", niveauPrecedant);
    }
    return "";
}
bool chargerNiveau(char terrain[24*18], std::string chemin)
{
    std::ifstream flux(chemin.c_str());
    if(flux)
    {
        for(int y = 0;y<18;y++)
        {
            std::string ligne = "";
            if(!getline(flux, ligne))
                std::cout << "ligne " << y+1 << ": rat�" << std::endl;
            for(unsigned int x = 0;x<24;x++)
            {
                if(x<ligne.size())
                    terrain[x+y*24] = ligne[x];
                else
                    terrain[x+y*24] = '#';
            }
        }
        return true;
    }
    return false;
}
void save(std::string index, std::string niveauActuel)
{
    std::ifstream iflux(index.c_str());
    if(!iflux)
        return;
    std::string tmp, firstline, ligne;
    //enlever ligne save:
    getline(iflux, ligne);

    //recuperer premiere ligne tout en la mettant dans tmp
    getline(iflux, firstline);
    tmp+=firstline+"\n";

    while(getline(iflux, ligne))tmp+=ligne+"\n";
    if(niveauActuel == ligne)
        niveauActuel = firstline;
    iflux.close();

    std::ofstream oflux(index.c_str());
    if(!oflux)
        return;
    oflux << "save:"+niveauActuel+"\n" << tmp;
}