batebates/sudoku

View on GitHub
src/controller/ProfilManager.rb

Summary

Maintainability
A
1 hr
Test Coverage
# encoding: UTF-8

##
# Version 0.1 : Date : 23/03/2017
#

class ProfilManager

    # la Classe Profile permet de gerer les  profils

    @@listeProfil = [];
    @@dernierPseudo = nil;

    #=== Methode de classe permetant la creation d'un profile
    #
    #=== Paramètres:
    #<b>pseudo</b>      : pseudo du joueur
    #
    #=== Return :
    #<b>return vrai si l'ajout est fait, faux sinon</b>
    def ProfilManager.ajouter(pseudo)
        if(!ProfilManager.existe(pseudo))
            @@listeProfil.push(pseudo)
            ProfilManager.save()
            return true
        else
            return false
        end
        return false
    end

    #=== Methode de classe permettant la suppression d'un profile
    #
    #=== Paramètres:
    #<b>pseudo</b>      : pseudo du joueur
    #
    #=== Return :
    #<b>return vrai si la suppression est faite, faux sinon</b>
    def ProfilManager.supprimer(pseudo)
        if(ProfilManager.existe(pseudo) && pseudo != @@dernierPseudo)
            @@listeProfil.delete_at(@@listeProfil.index(pseudo))
            ProfilManager.save()

            if (File.file?("save_files/" + pseudo + ".yml"))
                File.delete("save_files/" + pseudo + ".yml");
            end

            if (File.file?("save_files/" + pseudo))
                File.delete("save_files/" + pseudo);
            end

            return true
        else
            return false
        end
        return false
    end

    #=== Methode de classe permettant de renommer un profil
    #
    #=== Paramètres:
    #<b>oldName</b>      : pseudo actuel du profil
    #<b>newName</b>        : nouveau pseudo du profil
    #
    #=== Return :
    #<b>return vrai si le pseudo a été renommer, faux sinon</b>
    def ProfilManager.rename(oldName, newName)
        if(ProfilManager.existe(oldName) && !ProfilManager.existe(newName))
            @@listeProfil[@@listeProfil.index(oldName)] = newName;
            if(@@dernierPseudo == oldName)
                @@dernierPseudo = newName
            end
            ProfilManager.save();

            if (File.file?("save_files/" + oldName + ".yml"))
                File.rename("save_files/" + oldName + ".yml", "save_files/" + newName + ".yml");
            end

            if (File.file?("save_files/" + oldName))
                File.rename("save_files/" + oldName, "save_files/" + newName);
            end

            return true
        end
        return false
    end

    #=== Methode de classe permettant de connecter un joueur
    #
    #=== Paramètres:
    #<b>nom</b>      : nom du joueur qui se connecte
    def ProfilManager.connecter(nom)
        if(ProfilManager.existe(nom))
            @@dernierPseudo = nom;
            ProfilManager.save();
            SudokuAPI.API.username = nom;
            return true
        else
            return false
        end
    end

    #=== Methode de classe permettant de recuperer le pseudo du dernier joueur
    #
    def ProfilManager.dernierJoueur()
        return @@dernierPseudo
    end

    #=== Methode de classe permettant de recuperer la liste des pseudo
    #
    def ProfilManager.listeProfile()
        return @@listeProfil
    end

    #=== Methode permettant de tester l'existence d'un profil
    #
    #=== Paramètres :
    #<b>listProfils</b> : tableau de profile dans lesquels vérifier
    #
    #=== Return :
    #<b>return vrai si le pseudo est présent, faux sinon</b>
    def ProfilManager.existe(nom)
        @@listeProfil.index(nom) != nil;
    end

    #=== Methode Sauvegardant les profils dans un fichier txt
    #
    def ProfilManager.save()
        userFile = File.new("save_files/users.yml","w")

        if(!userFile.closed?)
            puts "Ouverture liste utilisateur\n"
        end

        dumpArray = [];
        dumpArray.push(@@dernierPseudo);
        dumpArray.push(@@listeProfil);

        userFile.puts YAML::dump(dumpArray)
        userFile.close

        if(!userFile.closed?)
            puts "Fermeture liste utilisateur\n"
        end
    end

    #=== Methode de classes permettant de charger un tableau de profil a partir d'un fichier
    #
    def ProfilManager.loadFile()
        if(!File.file?("save_files/users.yml"))
            return;
        end

        userFile = YAML.load_file("save_files/users.yml")
        if(userFile)
            @@dernierPseudo = userFile[0];
            @@listeProfil = userFile[1];
        end
    end

    #===Affiche le tableau des profils
    #
    def ProfilManager.toAff()
        print "\n Affichage des profils :\n"
        @@listeProfil.each { |profil|
            puts "   - " + profil
        }
    end
end