public void SaveGame(string savefile)
    {
        SaveGameStructure save = new SaveGameStructure();

        initializeGameDataDirectory();
        if (!fm.checkFile("GameData/saves", savefile, "sav"))
        {
            fm.createFile("GameData/saves", savefile, "sav");
        }
        fm.WriteBinaryFile("GameData/saves", savefile, "sav", save);
    }
    public bool LoadGame(string savefile)
    {
        if (fm.checkFile("GameData/saves", savefile, "sav"))
        {
            SaveGameStructure save = (SaveGameStructure)fm.ReadBinaryFile("GameData/saves", savefile, "sav");
            inventorio = new Inventorio();
            gerEstados.reset();
            backlog.reset();

            //Debug.Log("itempegos: "+save.itempegos.GetLength(0));
            for (int i = 0; i < save.itempegos.GetLength(0); i++)
            {
                Debug.Log("item: " + save.itempegos[i, 0] + ", sprite: " + save.itempegos[i, 1]);
                inventorio.addItem(save.itempegos[i, 0], save.itempegos[i, 1]);
            }
            item_grid = inventorio.getItemGrid();

            for (int i = 0; i < save.events.Length; i++)
            {
                if (save.events[i])
                {
                    gerEstados.setEventActive(i);
                }
                else
                {
                    gerEstados.setEventDeactive(i);
                }
            }

            string[] nomes = save.nomes;
            for (int i = 0; i < nomes.Length; i++)
            {
                gerEstados.alterarEstado(nomes[i], save.states[i], null);
                PositionGlobal p = save.getPositionGlobal(i);
                if (nomes[i] != "Player")
                {
                    if (p.initialized)
                    {
                        gerEstados.setGlobalPosition(nomes[i], p.position, p.scene_index);
                    }
                }
                else
                {
                    init_spot.transform.position = p.position;
                    init_scene = p.scene_index;
                }
            }

            int n = save.profiles.GetLength(0);
            perfis = new Profile[n];
            for (int i = 0; i < n; i++)
            {
                perfis[i] = new Profile(save.profiles[i, 0], save.profiles[i, 1], save.profiles[i, 2], save.profiles[i, 3]);
            }

            string[] rotulos = save.getRotulosBacklog();
            for (int i = 0; i < rotulos.Length; i++)
            {
                backlog.addToBacklog(rotulos[i]);
            }

            _GI.PlayerNotes = save.getPlayerNotes();

            init_music   = save.music;
            init_anbient = save.anbient;

            pendingshowmenuGUI = save.show_menu;

            return(true);
        }
        return(false);
    }