Fix favorites, try to not make copies of users in memory

This commit is contained in:
J-D-K 2020-05-24 22:52:19 -04:00
parent 7cde0a12ba
commit 41da3c8a92
9 changed files with 117 additions and 132 deletions

View File

@ -74,7 +74,7 @@ namespace data
//returns save_data_id string. only used for helping identify nand files
std::string getTIDStr() { return tidStr; }
std::string getSaveIDStr(){ return saveIDStr; }
std::string getSaveIDStr() { return saveIDStr; }
uint64_t getID() { return id; }
uint64_t getSaveID() { return saveID; }
@ -111,7 +111,7 @@ namespace data
//Returns user ID
AccountUid getUID() { return userID; }
u128 getUID128(){ return uID128; }
u128 getUID128() { return uID128; }
//Returns username
std::string getUsername() { return username; }
@ -133,21 +133,24 @@ namespace data
};
//Adds title to blacklist
void blacklistAdd(data::user& u, data::titledata& t);
void blacklistAdd(data::titledata& t);
//Adds title to favorite list
void favoriteAdd(data::user& u, data::titledata& t);
void favoriteRemove(data::user& u, data::titledata& t);
void favoriteAdd(data::titledata& t);
void favoriteRemove(data::titledata& t);
//User vector
extern std::vector<icn> icons;
extern std::vector<user> users;
//Stores current data we're using so I don't have to type so much. + Options and info
extern data::titledata curData;
extern data::user curUser;
//Options and info
extern int selUser, selData;
extern SetLanguage sysLang;
extern bool incDev, autoBack, ovrClk, holdDel, holdRest, holdOver, forceMount, accSysSave, sysSaveWrite, directFsCmd, skipUser;
//Inline shortcuts to current user and current title. I might need to think of another way.
//Previous versions made full copies of vectors in memory, which i didn't like
inline data::user& curUser(){ return data::users[data::selUser]; }
inline data::titledata& curData(){ return curUser().titles[data::selData]; }
}
#endif // DATA_H

View File

@ -13,7 +13,7 @@ namespace ui
//needed here since it uses static menu
void folderMenuPrepare(data::user& usr, data::titledata& dat);
void advCopyMenuPrep();
void advModePrep(const std::string& svDev, bool commitOnWrite);
void advModePrep(const std::string& svDev, const FsSaveDataType& _type, bool commitOnWrite);
}
#endif

View File

@ -10,9 +10,6 @@
#include "file.h"
#include "util.h"
//Current data
data::titledata data::curData;
data::user data::curUser;
int data::selUser = 0, data::selData = 0;
//Icon/User vectors
@ -71,7 +68,7 @@ static int findIcnIndex(const uint64_t& titleID)
static bool blacklisted(const uint64_t& tid)
{
for(uint64_t bid : blacklist)
for(uint64_t& bid : blacklist)
if(tid == bid) return true;
return false;
@ -79,7 +76,7 @@ static bool blacklisted(const uint64_t& tid)
static bool isFavorite(const uint64_t& tid)
{
for(uint64_t fid : favorites)
for(uint64_t& fid : favorites)
if(tid == fid) return true;
return false;
@ -202,8 +199,6 @@ void data::init()
setMakeLanguage(lang, &sysLang);
data::loadUsersTitles(false);
curUser = users[0];
}
void data::exit()
@ -378,56 +373,48 @@ void data::loadBlacklist()
void data::saveBlackList()
{
FILE *bl = fopen(std::string(fs::getWorkDir() + "blacklist.txt").c_str(), "w");
for(uint64_t id : blacklist)
for(uint64_t& id : blacklist)
fprintf(bl, "0x%016lX\n", id);
fclose(bl);
}
void data::blacklistAdd(user& u, titledata& t)
void data::blacklistAdd(titledata& t)
{
uint64_t tid = t.getID();
for(data::user& _u : data::users)
{
for(unsigned i = 0; i < _u.titles.size(); i++)
if(_u.titles[i].getID() == t.getID()) _u.titles.erase(_u.titles.begin() + i);
if(_u.titles[i].getID() == tid) _u.titles.erase(_u.titles.begin() + i);
}
blacklist.push_back(t.getID());
int uInd = getUserIndex(u.getUID());
u = users[uInd];
blacklist.push_back(tid);
}
void data::favoriteAdd(data::user& u, titledata& t)
void data::favoriteAdd(titledata& t)
{
uint64_t tid = t.getID();
for(data::user& _u : data::users)
{
for(unsigned i = 0; i < _u.titles.size(); i++)
if(_u.titles[i].getID() == t.getID()) _u.titles[i].setFav(true);
if(_u.titles[i].getID() == tid) _u.titles[i].setFav(true);
std::sort(_u.titles.begin(), _u.titles.end(), sortTitles);
}
favorites.push_back(t.getID());
int uInd = getUserIndex(u.getUID());
u = users[uInd];
favorites.push_back(tid);
}
void data::favoriteRemove(data::user& u, data::titledata& t)
void data::favoriteRemove(data::titledata& t)
{
auto ind = std::find(favorites.begin(), favorites.end(), t.getID());
if(ind == favorites.end())
return;
uint64_t tid = t.getID();
auto ind = std::find(favorites.begin(), favorites.end(), tid);
favorites.erase(ind);
for(data::user& _u : data::users)
{
for(unsigned i = 0; i < _u.titles.size(); i++)
if(_u.titles[i].getID() == t.getID()) _u.titles[i].setFav(false);
if(_u.titles[i].getID() == tid) _u.titles[i].setFav(false);
std::sort(_u.titles.begin(), _u.titles.end(), sortTitles);
}
int uInd = getUserIndex(u.getUID());
u = users[uInd];
}
void data::loadCfg()
@ -491,7 +478,7 @@ void data::loadFav()
void data::saveFav()
{
FILE *fav = fopen(std::string(fs::getWorkDir() + "favorites.txt").c_str(), "w");
for(uint64_t fid : favorites)
for(uint64_t& fid : favorites)
fprintf(fav, "0x%016lX\n", fid);
fclose(fav);

View File

@ -223,7 +223,7 @@ void ui::init()
if(ui::textMode && data::skipUser)
{
ui::textTitlePrep(data::curUser);
ui::textTitlePrep(data::curUser());
mstate = TXT_TTL;
}
else if(ui::textMode)

View File

@ -22,9 +22,11 @@ fs::dirList saveList(""), sdList("sdmc:/");
static bool commit = false;
static FsSaveDataType type = FsSaveDataType_System;
static inline bool sysSaveCheck()
{
return data::sysSaveWrite || data::curData.getType() != FsSaveDataType_System;
return data::sysSaveWrite || type != FsSaveDataType_System;
}
//Performs copy menu operations. To big to stuff into case IMO.
@ -348,9 +350,10 @@ void ui::advCopyMenuPrep()
copyMenu.addOpt(ui::advMenuStr[i]);
}
void ui::advModePrep(const std::string& svDev, bool commitOnWrite)
void ui::advModePrep(const std::string& svDev, const FsSaveDataType& _type, bool commitOnWrite)
{
commit = commitOnWrite;
type = _type;
saveMenu.setParams(30, 98, 602);
sdMenu.setParams(648, 98, 602);
copyMenu.setParams(472, 278, 304);

View File

@ -28,11 +28,11 @@ void ui::createNewBackup(const uint64_t& held)
std::string folder;
if(held & KEY_R)
folder = data::curUser.getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_YMD);
folder = data::curUser().getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_YMD);
else if(held & KEY_L)
folder = data::curUser.getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_YDM);
folder = data::curUser().getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_YDM);
else if(held & KEY_ZL)
folder = data::curUser.getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_HOYSTE);
folder = data::curUser().getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_HOYSTE);
else
{
const std::string dict[] =
@ -42,31 +42,31 @@ void ui::createNewBackup(const uint64_t& held)
util::getDateTime(util::DATE_FMT_HOYSTE),
util::getDateTime(util::DATE_FMT_JHK),
util::getDateTime(util::DATE_FMT_ASC),
data::curUser.getUsernameSafe().c_str(),
data::curData.getTitle().length() < 24 ? data::curData.getTitleSafe() : util::generateAbbrev(data::curData)
data::curUser().getUsernameSafe(),
data::curData().getTitleSafe().length() < 24 ? data::curData().getTitleSafe() : util::generateAbbrev(data::curData())
};
folder = util::getStringInput("", "Enter a folder name", 64, 7, dict);
}
if(!folder.empty())
{
std::string path = data::curData.getPath() + "/" + folder;
std::string path = data::curData().getPath() + "/" + folder;
mkdir(path.c_str(), 777);
path += "/";
fs::copyDirToDir("sv:/", path);
folderMenuPrepare(data::curUser, data::curData);
folderMenuPrepare(data::curUser(), data::curData());
}
}
void ui::overwriteBackup(unsigned ind)
{
fs::dirList list(data::curData.getPath());
fs::dirList list(data::curData().getPath());
std::string folderName = list.getItem(ind);
if(confirm(data::holdOver, ui::confOverwrite.c_str(), folderName.c_str()))
{
std::string toPath = data::curData.getPath() + folderName + "/";
std::string toPath = data::curData().getPath() + folderName + "/";
//Delete and recreate
fs::delDir(toPath);
mkdir(toPath.c_str(), 777);
@ -79,16 +79,16 @@ void ui::overwriteBackup(unsigned ind)
void ui::restoreBackup(unsigned ind)
{
if((data::curData.getType() != FsSaveDataType_System || data::sysSaveWrite) && folderMenu.getSelected() > 0)
if((data::curData().getType() != FsSaveDataType_System || data::sysSaveWrite) && folderMenu.getSelected() > 0)
{
fs::dirList list(data::curData.getPath());
fs::dirList list(data::curData().getPath());
std::string folderName = list.getItem(ind);
if(confirm(data::holdRest, ui::confRestore.c_str(), folderName.c_str()))
{
if(data::autoBack)
{
std::string autoFolder = data::curData.getPath() + "/AUTO - " + data::curUser.getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_ASC);
std::string autoFolder = data::curData().getPath() + "/AUTO - " + data::curUser().getUsernameSafe() + " - " + util::getDateTime(util::DATE_FMT_ASC);
mkdir(autoFolder.c_str(), 777);
autoFolder += "/";
@ -96,7 +96,7 @@ void ui::restoreBackup(unsigned ind)
fs::copyDirToDir(root, autoFolder);
}
std::string fromPath = data::curData.getPath() + folderName + "/";
std::string fromPath = data::curData().getPath() + folderName + "/";
std::string root = "sv:/";
fs::delDir(root);
@ -106,23 +106,23 @@ void ui::restoreBackup(unsigned ind)
//Rescan init folder menu if autobak to show changes
if(data::autoBack)
folderMenuPrepare(data::curUser, data::curData);
folderMenuPrepare(data::curUser(), data::curData());
}
}
}
void ui::deleteBackup(unsigned ind)
{
fs::dirList list(data::curData.getPath());
fs::dirList list(data::curData().getPath());
std::string folderName = list.getItem(folderMenu.getSelected() - 1);
if(ui::confirmDelete(folderName))
{
std::string delPath = data::curData.getPath() + folderName + "/";
std::string delPath = data::curData().getPath() + folderName + "/";
fs::delDir(delPath);
}
folderMenuPrepare(data::curUser, data::curData);
folderMenuPrepare(data::curUser(), data::curData());
}
void ui::updateFolderMenu(const uint64_t& down, const uint64_t& held)
@ -132,7 +132,7 @@ void ui::updateFolderMenu(const uint64_t& down, const uint64_t& held)
//Draw folder menu
folderMenu.draw(ui::txtCont);
data::curData.icon.draw(96, 98);
data::curData().icon.draw(96, 98);
drawTextWrap(folderMenuInfo.c_str(), frameBuffer, ui::shared, 60, 370, 16, ui::txtCont, 360);
@ -149,10 +149,10 @@ void ui::updateFolderMenu(const uint64_t& down, const uint64_t& held)
ui::deleteBackup(folderMenu.getSelected() - 1);
else if(down & KEY_MINUS)
{
advModePrep("sv:/", true);
advModePrep("sv:/", data::curData().getType(), true);
mstate = ADV_MDE;
}
else if(down & KEY_ZR && data::curData.getType() != FsSaveDataType_System && confirm(true, ui::confEraseFolder.c_str(), data::curData.getTitle().c_str()))
else if(down & KEY_ZR && data::curData().getType() != FsSaveDataType_System && confirm(true, ui::confEraseFolder.c_str(), data::curData().getTitle().c_str()))
{
fs::delDir("sv:/");
fsdevCommitDevice("sv");

View File

@ -1,6 +1,7 @@
#include <string>
#include <vector>
#include "data.h"
#include "ui.h"
#include "uiupdate.h"
#include "file.h"
@ -36,8 +37,8 @@ void ui::updateTitleMenu(const uint64_t& down, const uint64_t& held)
unsigned x = 70, y = 98;
unsigned endTitle = start + 32;
if(start + 32 > (int)data::curUser.titles.size())
endTitle = data::curUser.titles.size();
if(start + 32 > (int)data::curUser().titles.size())
endTitle = data::curUser().titles.size();
//draw Rect so it's always behind icons
drawBoundBox(selRectX, selRectY, 140, 140, clrShft);
@ -55,7 +56,7 @@ void ui::updateTitleMenu(const uint64_t& down, const uint64_t& held)
selRectX = tX - 6;
selRectY = y - 6;
std::string title = data::curUser.titles[data::selData].getTitle();
std::string title = data::curData().getTitle();
unsigned titleWidth = textGetWidth(title.c_str(), ui::shared, 18);
int rectWidth = titleWidth + 32, rectX = (tX + 64) - (rectWidth / 2);
if(rectX < 16)
@ -67,16 +68,16 @@ void ui::updateTitleMenu(const uint64_t& down, const uint64_t& held)
drawText(title.c_str(), frameBuffer, ui::shared, rectX + 16, y - 40, 18, ui::txtDiag);
}
if(data::curUser.titles[i].getFav())
data::curUser.titles[i].icon.drawFavHalf(tX, y);
if(data::curUser().titles[i].getFav())
data::curUser().titles[i].icon.drawFavHalf(tX, y);
else
data::curUser.titles[i].icon.drawHalf(tX, y);
data::curUser().titles[i].icon.drawHalf(tX, y);
}
}
if(down & KEY_RIGHT)
{
if(data::selData < (int)data::curUser.titles.size() - 1)
if(data::selData < (int)data::curUser().titles.size() - 1)
data::selData++;
if(data::selData >= (int)start + 32)
@ -102,30 +103,26 @@ void ui::updateTitleMenu(const uint64_t& down, const uint64_t& held)
else if(down & KEY_DOWN)
{
data::selData += 8;
if(data::selData > (int)data::curUser.titles.size() - 1)
data::selData = data::curUser.titles.size() - 1;
if(data::selData > (int)data::curUser().titles.size() - 1)
data::selData = data::curUser().titles.size() - 1;
if(data::selData - start >= 32)
start += 8;
}
else if(down & KEY_A)
else if(down & KEY_A && fs::mountSave(data::curUser(), data::curData()))
{
data::curData = data::curUser.titles[data::selData];
if(fs::mountSave(data::curUser, data::curData))
{
folderMenuPrepare(data::curUser, data::curData);
//Wanna change this sometime
ui::folderMenuInfo = util::getInfoString(data::curUser, data::curData);
folderMenuPrepare(data::curUser(), data::curData());
//Wanna change this sometime
ui::folderMenuInfo = util::getInfoString(data::curUser(), data::curData());
mstate = FLD_SEL;
}
mstate = FLD_SEL;
}
else if(down & KEY_Y)
fs::dumpAllUserSaves(data::curUser);
fs::dumpAllUserSaves(data::curUser());
else if(down & KEY_MINUS)
{
if(ui::confirm(false, ui::confBlacklist.c_str(), data::curUser.titles[data::selData].getTitle().c_str()))
data::blacklistAdd(data::curUser, data::curUser.titles[data::selData]);
if(ui::confirm(false, ui::confBlacklist.c_str(), data::curUser().titles[data::selData].getTitle().c_str()))
data::blacklistAdd(data::curData());
}
else if(down & KEY_B)
{
@ -144,9 +141,9 @@ void ui::updateTitleMenu(const uint64_t& down, const uint64_t& held)
start = 0;
data::selData = 0;
selRectX = 64, selRectY = 90;
data::curUser = data::users[data::selUser];
data::curUser() = data::users[data::selUser];
ui::showPopup(data::curUser.getUsername(), POP_FRAME_DEFAULT);
ui::showPopup(data::curUser().getUsername(), POP_FRAME_DEFAULT);
}
else if(down & KEY_R)
{
@ -156,29 +153,28 @@ void ui::updateTitleMenu(const uint64_t& down, const uint64_t& held)
start = 0;
data::selData = 0;
selRectX = 64, selRectY = 90;
data::curUser = data::users[data::selUser];
data::curUser() = data::users[data::selUser];
ui::showPopup(data::curUser.getUsername(), POP_FRAME_DEFAULT);
ui::showPopup(data::curUser().getUsername(), POP_FRAME_DEFAULT);
}
else if(down & KEY_ZR)
{
data::titledata tempData = data::curUser.titles[data::selData];
data::titledata tempData = data::curUser().titles[data::selData];
if(tempData.getType() == FsSaveDataType_System)
ui::showMessage("*NO*", "Deleting system save archives is disabled.");
else if(confirm(true, ui::confEraseNand.c_str(), tempData.getTitle().c_str()))
{
fsDeleteSaveDataFileSystemBySaveDataSpaceId(FsSaveDataSpaceId_User, tempData.getSaveID());
data::loadUsersTitles(false);
data::curUser = data::users[data::selUser];
data::selData = 0;
}
}
else if(down & KEY_X)
{
if(!data::curUser.titles[data::selData].getFav())
data::favoriteAdd(data::curUser, data::curUser.titles[data::selData]);
if(!data::curData().getFav())
data::favoriteAdd(data::curData());
else
data::favoriteRemove(data::curUser, data::curUser.titles[data::selData]);
data::favoriteRemove(data::curData());
}
}

View File

@ -87,8 +87,8 @@ void ui::textUserMenuUpdate(const uint64_t& down, const uint64_t& held)
{
if(data::users[userMenu.getSelected()].titles.size() > 0)
{
data::curUser = data::users[userMenu.getSelected()];
textTitlePrep(data::curUser);
data::selUser = folderMenu.getSelected();
textTitlePrep(data::curUser());
mstate = TXT_TTL;
}
else
@ -121,58 +121,58 @@ void ui::textTitleMenuUpdate(const uint64_t& down, const uint64_t& held)
if(down & KEY_A)
{
data::curData = data::curUser.titles[titleMenu.getSelected()];
if(fs::mountSave(data::curUser, data::curData))
data::selData = titleMenu.getSelected();
if(fs::mountSave(data::curUser(), data::curData()))
{
textFolderPrep(data::curUser, data::curData);
textFolderPrep(data::curUser(), data::curData());
mstate = TXT_FLD;
}
}
else if(down & KEY_Y)
{
fs::dumpAllUserSaves(data::curUser);
fs::dumpAllUserSaves(data::curUser());
}
else if(down & KEY_MINUS)
{
if(ui::confirm(false, ui::confBlacklist.c_str(), data::curUser.titles[titleMenu.getSelected()].getTitle().c_str()))
data::blacklistAdd(data::curUser, data::curUser.titles[titleMenu.getSelected()]);
data::selData = titleMenu.getSelected();
if(ui::confirm(false, ui::confBlacklist.c_str(), data::curData().getTitle().c_str()))
data::blacklistAdd(data::curData());
textTitlePrep(data::curUser);
textTitlePrep(data::curUser());
}
else if(down & KEY_L)
{
if(--data::selUser < 0)
data::selUser = data::users.size() - 1;
data::curUser = data::users[data::selUser];
textTitlePrep(data::curUser);
data::curUser() = data::users[data::selUser];
textTitlePrep(data::curUser());
ui::showPopup(data::curUser.getUsername(), POP_FRAME_DEFAULT);
ui::showPopup(data::curUser().getUsername(), POP_FRAME_DEFAULT);
}
else if(down & KEY_R)
{
if(++data::selUser > (int)data::users.size() - 1)
data::selUser = 0;
data::curUser = data::users[data::selUser];
textTitlePrep(data::curUser);
data::curUser() = data::users[data::selUser];
textTitlePrep(data::curUser());
ui::showPopup(data::curUser.getUsername(), POP_FRAME_DEFAULT);
ui::showPopup(data::curUser().getUsername(), POP_FRAME_DEFAULT);
}
else if(down & KEY_X)
{
unsigned sel = titleMenu.getSelected();
if(!data::curUser.titles[sel].getFav())
data::favoriteAdd(data::curUser, data::curUser.titles[sel]);
data::selData = titleMenu.getSelected();
if(!data::curData().getFav())
data::favoriteAdd(data::curData());
else
data::favoriteRemove(data::curUser, data::curUser.titles[sel]);
data::favoriteRemove(data::curData());
textTitlePrep(data::curUser);
textTitlePrep(data::curUser());
}
else if(down & KEY_ZR)
{
data::titledata tempData = data::curUser.titles[titleMenu.getSelected()];
data::titledata tempData = data::curUser().titles[titleMenu.getSelected()];
if(tempData.getType() == FsSaveDataType_System)
ui::showMessage("*NO*", "Deleting system save archives is disabled.");
else if(confirm(true, ui::confEraseNand.c_str(), tempData.getTitle().c_str()))
@ -180,8 +180,8 @@ void ui::textTitleMenuUpdate(const uint64_t& down, const uint64_t& held)
fsDeleteSaveDataFileSystemBySaveDataSpaceId(FsSaveDataSpaceId_User, tempData.getSaveID());
data::loadUsersTitles(false);
data::curUser = data::users[data::selUser];
ui::textTitlePrep(data::curUser);
data::curUser() = data::users[data::selUser];
ui::textTitlePrep(data::curUser());
}
}
else if(down & KEY_B)
@ -207,10 +207,10 @@ void ui::textFolderMenuUpdate(const uint64_t& down, const uint64_t& held)
deleteBackup(folderMenu.getSelected() - 1);
else if(down & KEY_MINUS)
{
advModePrep("sv:/", true);
advModePrep("sv:/", data::curData().getType(), true);
mstate = ADV_MDE;
}
else if(down & KEY_ZR && data::curData.getType() != FsSaveDataType_System && confirm(true, ui::confEraseFolder.c_str(), data::curData.getTitle().c_str()))
else if(down & KEY_ZR && data::curData().getType() != FsSaveDataType_System && confirm(true, ui::confEraseFolder.c_str(), data::curData().getTitle().c_str()))
{
fs::delDir("sv:/");
fsdevCommitDevice("sv");
@ -238,12 +238,12 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
{
fsdevUnmountDevice("sv");
FsFileSystem sv;
data::curData.setType(FsSaveDataType_System);
data::curData().setType(FsSaveDataType_System);
switch(exMenu.getSelected())
{
case 0:
data::curData.setType(FsSaveDataType_Bcat);
advModePrep("sdmc:/", false);
data::curData().setType(FsSaveDataType_Bcat);
advModePrep("sdmc:/", data::curData().getType(), false);
mstate = ADV_MDE;
prevState = EX_MNU;
break;
@ -253,7 +253,7 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
fsOpenBisFileSystem(&sv, FsBisPartitionId_CalibrationFile, "");
fsdevMountDevice("prodInfo-f", sv);
advModePrep("profInfo-f:/", false);
advModePrep("profInfo-f:/", FsSaveDataType_System, false);
mstate = ADV_MDE;
prevState = EX_MNU;
break;
@ -262,7 +262,7 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
fsOpenBisFileSystem(&sv, FsBisPartitionId_SafeMode, "");
fsdevMountDevice("safe", sv);
advModePrep("safe:/", false);
advModePrep("safe:/", FsSaveDataType_System, false);
mstate = ADV_MDE;
prevState = EX_MNU;
break;
@ -271,7 +271,7 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
fsOpenBisFileSystem(&sv, FsBisPartitionId_System, "");
fsdevMountDevice("sys", sv);
advModePrep("sys:/", false);
advModePrep("sys:/", FsSaveDataType_System, false);
mstate = ADV_MDE;
prevState = EX_MNU;
break;
@ -280,7 +280,7 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
fsOpenBisFileSystem(&sv, FsBisPartitionId_User, "");
fsdevMountDevice("user", sv);
advModePrep("user:/", false);
advModePrep("user:/", FsSaveDataType_System, false);
mstate = ADV_MDE;
prevState = EX_MNU;
break;
@ -326,8 +326,8 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
if(R_SUCCEEDED(fsOpen_SystemSaveData(&sv, FsSaveDataSpaceId_System, mountID, (AccountUid) {0})))
{
fsdevMountDevice("sv", sv);
advModePrep("sv:/", true);
data::curData.setType(FsSaveDataType_SystemBcat);
advModePrep("sv:/", data::curData().getType(), true);
data::curData().setType(FsSaveDataType_SystemBcat);
prevState = EX_MNU;
mstate = ADV_MDE;
}
@ -345,8 +345,8 @@ void ui::updateExMenu(const uint64_t& down, const uint64_t& held)
if(R_SUCCEEDED(util::fsOpenDataFileSystemByCurrentProcess(&tromfs)))
{
fsdevMountDevice("tromfs", tromfs);
advModePrep("tromfs:/", false);
data::curData.setType(FsSaveDataType_System);
advModePrep("tromfs:/", FsSaveDataType_Account, false);
data::curData().setType(FsSaveDataType_System);
ui::mstate = ADV_MDE;
ui::prevState = EX_MNU;
}

View File

@ -7,7 +7,6 @@
#include "uiupdate.h"
#include "file.h"
void ui::updateUserMenu(const uint64_t& down, const uint64_t& held)
{
//Static so they don't get reset every loop
@ -83,10 +82,7 @@ void ui::updateUserMenu(const uint64_t& down, const uint64_t& held)
else if(down & KEY_A)
{
if(data::users[data::selUser].titles.size() > 0)
{
data::curUser = data::users[data::selUser];
mstate = TTL_SEL;
}
else
ui::showPopup("No Saves available for " + data::users[data::selUser].getUsername() + ".", POP_FRAME_DEFAULT);
}