mirror of
https://github.com/J-D-K/JKSV.git
synced 2026-03-21 17:24:37 -05:00
Fix blacklisting, make menus scroll(may be buggy)
This commit is contained in:
parent
a50a43870d
commit
e445181e0c
2
Makefile
2
Makefile
|
|
@ -38,7 +38,7 @@ INCLUDES := inc inc/ui
|
|||
EXEFS_SRC := exefs_src
|
||||
APP_TITLE := JKSV
|
||||
APP_AUTHOR := JK
|
||||
APP_VERSION := 07.24.2021
|
||||
APP_VERSION := 07.27.2021
|
||||
ROMFS := romfs
|
||||
ICON := icon.jpg
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
#define curData users[data::selUser].titleInfo[data::selData]
|
||||
|
||||
#define BLD_MON 7
|
||||
#define BLD_DAY 24
|
||||
#define BLD_DAY 27
|
||||
#define BLD_YEAR 2021
|
||||
|
||||
namespace data
|
||||
|
|
@ -89,7 +89,7 @@ namespace data
|
|||
};
|
||||
|
||||
//Adds title to blacklist
|
||||
void blacklistAdd(const uint64_t& tid);
|
||||
void blacklistAdd(void *a);
|
||||
//Adds title to favorite list
|
||||
void favoriteTitle(const uint64_t& tid);
|
||||
//Adds path definition for title
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ namespace ui
|
|||
void reset();
|
||||
|
||||
//Resets selected + start
|
||||
void resetSel() { selected = 0; start = 0; }
|
||||
void resetSel() { selected = 0; }
|
||||
|
||||
//Enables control/disables drawing select box
|
||||
void setActive(bool _set);
|
||||
|
|
@ -100,11 +100,11 @@ namespace ui
|
|||
|
||||
private:
|
||||
//drawing x and y + rectangle width/height. Height is calc'd with font size
|
||||
int x = 0, y = 0, rW = 0, rY = 0, fSize = 0, rH = 0, mL = 0;
|
||||
int x = 0, mY = 0, tY = 0, y = 0, rW = 0, rY = 0, fSize = 0, rH = 0, mL = 0;
|
||||
//Options vector
|
||||
std::vector<ui::menuOpt> opt;
|
||||
//Selected + frame counting for auto-scroll
|
||||
int selected = 0, fc = 0, start = 0;
|
||||
int selected = 0, fc = 0;
|
||||
//How much we shift the color of the rectangle
|
||||
uint8_t clrSh = 0;
|
||||
bool clrAdd = true, isActive = true;
|
||||
|
|
|
|||
13
src/data.cpp
13
src/data.cpp
|
|
@ -10,6 +10,7 @@
|
|||
#include "data.h"
|
||||
#include "file.h"
|
||||
#include "util.h"
|
||||
#include "type.h"
|
||||
|
||||
//FsSaveDataSpaceId_All doesn't work for SD
|
||||
static const unsigned saveOrder [] = { 0, 1, 2, 3, 4, 100, 101 };
|
||||
|
|
@ -464,14 +465,20 @@ void data::saveBlackList()
|
|||
}
|
||||
}
|
||||
|
||||
void data::blacklistAdd(const uint64_t& tid)
|
||||
void data::blacklistAdd(void *a)
|
||||
{
|
||||
blacklist.push_back(tid);
|
||||
threadInfo *t = (threadInfo *)a;
|
||||
t->status->setStatus("Adding title to blacklist...");
|
||||
uint64_t *tid = (uint64_t *)t->argPtr;
|
||||
blacklist.push_back(*tid);
|
||||
for(data::user& _u : data::users)
|
||||
{
|
||||
for(unsigned i = 0; i < _u.titleInfo.size(); i++)
|
||||
if(_u.titleInfo[i].saveID == tid) _u.titleInfo.erase(_u.titleInfo.begin() + i);
|
||||
if(_u.titleInfo[i].saveID == *tid) _u.titleInfo.erase(_u.titleInfo.begin() + i);
|
||||
}
|
||||
ui::refreshAllViews();
|
||||
delete tid;
|
||||
t->finished = true;
|
||||
}
|
||||
|
||||
void data::favoriteTitle(const uint64_t& tid)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,9 @@ static const SDL_Color menuColorDark = {0x00, 0xFF, 0xC5, 0xFF};
|
|||
void ui::menu::setParams(const unsigned& _x, const unsigned& _y, const unsigned& _rW, const unsigned& _fS, const unsigned& _mL)
|
||||
{
|
||||
x = _x;
|
||||
mY = _y;
|
||||
y = _y;
|
||||
tY = _y;
|
||||
rW = _rW;
|
||||
rY = _y;
|
||||
fSize = _fS;
|
||||
|
|
@ -133,44 +135,33 @@ void ui::menu::update()
|
|||
int mSize = opt.size() - 1, scrL = mL - 1;
|
||||
if( (down & HidNpadButton_AnyUp) || ((held & HidNpadButton_AnyUp) && fc == 10) )
|
||||
{
|
||||
--selected;
|
||||
if(selected < 0)
|
||||
selected = mSize;
|
||||
|
||||
if(mSize > (int)mL)
|
||||
if(selected > 0)
|
||||
{
|
||||
if(start > selected)
|
||||
--start;
|
||||
else if(selected - scrL > start)
|
||||
start = selected - scrL;
|
||||
--selected;
|
||||
if(selected - mL >= 0 && selected <= mSize - mL)
|
||||
tY += rH;
|
||||
}
|
||||
}
|
||||
else if( (down & HidNpadButton_AnyDown) || ((held & HidNpadButton_AnyDown) && fc == 10))
|
||||
{
|
||||
++selected;
|
||||
if(selected > mSize)
|
||||
selected = 0;
|
||||
|
||||
if(selected > (start + scrL) && (start + scrL) < mSize)
|
||||
++start;
|
||||
if(selected == 0)
|
||||
start = 0;
|
||||
if(selected < mSize)
|
||||
{
|
||||
++selected;
|
||||
if(selected - mL > 0 && selected + mL <= mSize + 1)
|
||||
tY -= rH;
|
||||
}
|
||||
}
|
||||
else if(down & HidNpadButton_AnyLeft)
|
||||
{
|
||||
selected -= scrL / 2;
|
||||
if(selected < 0)
|
||||
selected = 0;
|
||||
if(selected < start)
|
||||
start = selected;
|
||||
}
|
||||
else if(down & HidNpadButton_AnyRight)
|
||||
{
|
||||
selected += scrL / 2;
|
||||
if(selected > mSize)
|
||||
selected = mSize;
|
||||
if(selected - scrL > start)
|
||||
start = selected - scrL;
|
||||
}
|
||||
|
||||
if(down)
|
||||
|
|
@ -194,6 +185,12 @@ void ui::menu::draw(SDL_Texture *target, const SDL_Color *textClr, bool drawText
|
|||
if(opt.size() < 1)
|
||||
return;
|
||||
|
||||
if(y != tY)
|
||||
{
|
||||
float add = (float)((float)tY - (float)y) / ui::animScale;
|
||||
y += ceil(add);
|
||||
}
|
||||
|
||||
if(clrAdd)
|
||||
{
|
||||
clrSh += 6;
|
||||
|
|
@ -207,21 +204,21 @@ void ui::menu::draw(SDL_Texture *target, const SDL_Color *textClr, bool drawText
|
|||
clrAdd = true;
|
||||
}
|
||||
|
||||
for(int i = start; i < (int)opt.size(); i++)
|
||||
for(int i = 0; i < (int)opt.size(); i++)
|
||||
{
|
||||
if(i == selected)
|
||||
{
|
||||
if(isActive)
|
||||
ui::drawBoundBox(target, x, y + ((i - start) * rH), rW, rH, clrSh);
|
||||
ui::drawBoundBox(target, x, y + (i * rH), rW, rH, clrSh);
|
||||
|
||||
gfx::drawRect(target, ui::thmID == ColorSetId_Light ? &menuColorLight : &menuColorDark, x + 10, ((y + (rH / 2 - fSize / 2)) + ((i - start) * rH)) - 2, 4, fSize + 4);
|
||||
gfx::drawRect(target, ui::thmID == ColorSetId_Light ? &menuColorLight : &menuColorDark, x + 10, ((y + (rH / 2 - fSize / 2)) + (i * rH)) - 2, 4, fSize + 4);
|
||||
if(drawText)
|
||||
gfx::drawTextf(target, fSize, x + 20, (y + (rH / 2 - fSize / 2)) + ((i - start) * rH), ui::thmID == ColorSetId_Light ? &menuColorLight : &menuColorDark, opt[i].txt.c_str());
|
||||
gfx::drawTextf(target, fSize, x + 20, (y + (rH / 2 - fSize / 2)) + (i * rH), ui::thmID == ColorSetId_Light ? &menuColorLight : &menuColorDark, opt[i].txt.c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
if(drawText)
|
||||
gfx::drawTextf(target, fSize, x + 20, (y + (rH / 2 - fSize / 2)) + ((i - start) * rH), textClr, opt[i].txt.c_str());
|
||||
gfx::drawTextf(target, fSize, x + 20, (y + (rH / 2 - fSize / 2)) + (i * rH), textClr, opt[i].txt.c_str());
|
||||
}
|
||||
|
||||
int w, h;
|
||||
|
|
@ -231,7 +228,7 @@ void ui::menu::draw(SDL_Texture *target, const SDL_Color *textClr, bool drawText
|
|||
int dW = scale * w;
|
||||
int dH = scale * h;
|
||||
|
||||
gfx::texDrawStretch(target, opt[i].icn, x + 20, (y + (rH / 2 - fSize / 2)) + ((i - start) * rH), dW, dH);
|
||||
gfx::texDrawStretch(target, opt[i].icn, x + 20, (y + (rH / 2 - fSize / 2)) + (i * rH), dW, dH);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -240,9 +237,9 @@ void ui::menu::draw(SDL_Texture *target, const SDL_Color *textClr, bool drawText
|
|||
void ui::menu::reset()
|
||||
{
|
||||
opt.clear();
|
||||
start = 0;
|
||||
selected = 0;
|
||||
|
||||
y = mY;
|
||||
tY = mY;
|
||||
fc = 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ static void updateMenuText()
|
|||
void ui::settInit()
|
||||
{
|
||||
ui::settMenu = new ui::menu;
|
||||
ui::settMenu->setParams(32, 32, 1016, 20, 8);
|
||||
ui::settMenu->setParams(32, 32, 1016, 24, 5);
|
||||
ui::settMenu->setCallback(settMenuCallback, NULL);
|
||||
ui::settMenu->setActive(false);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ static ui::slideOutPanel *ttlOptsPanel, *infoPanel, *fldPanel;//There's no reaso
|
|||
static fs::dirList *fldList;
|
||||
static fs::backupArgs *backargs;
|
||||
static std::string infoPanelString;
|
||||
static SDL_Texture *fldBuffer;//This is so folder menu doesn't draw over guide
|
||||
|
||||
void ui::refreshAllViews()
|
||||
{
|
||||
|
|
@ -58,8 +59,6 @@ static void fldFuncRestore(void *a)
|
|||
ui::confirm(conf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ui::populateFldMenu()
|
||||
{
|
||||
fldMenu->reset();
|
||||
|
|
@ -155,8 +154,10 @@ static void ttlOptsShowInfoPanel(void *a)
|
|||
|
||||
static void ttlOptsBlacklistTitle(void *a)
|
||||
{
|
||||
uint64_t *sendTid = new uint64_t;
|
||||
*sendTid = data::curData.saveID;
|
||||
std::string title = data::getTitleNameByTID(data::curData.saveID);
|
||||
ui::confirmArgs *conf = ui::confirmArgsCreate(false, NULL, NULL, true, ui::confBlacklist.c_str(), title.c_str());
|
||||
ui::confirmArgs *conf = ui::confirmArgsCreate(false, data::blacklistAdd, sendTid, true, ui::confBlacklist.c_str(), title.c_str());
|
||||
ui::confirm(conf);
|
||||
}
|
||||
|
||||
|
|
@ -322,7 +323,9 @@ static void fldMenuCallback(void *a)
|
|||
static void fldPanelDraw(void *a)
|
||||
{
|
||||
SDL_Texture *target = (SDL_Texture *)a;
|
||||
fldMenu->draw(target, &ui::txtCont, true);
|
||||
gfx::clearTarget(fldBuffer, &ui::slidePanelColor);
|
||||
fldMenu->draw(fldBuffer, &ui::txtCont, true);
|
||||
gfx::texDraw(target, fldBuffer, 0, 0);
|
||||
gfx::drawLine(target, &ui::divClr, 10, 648, fldHelpWidth + 54, 648);
|
||||
gfx::drawTextf(target, 18, 32, 673, &ui::txtCont, ui::folderHelp.c_str());
|
||||
}
|
||||
|
|
@ -336,12 +339,12 @@ void ui::ttlInit()
|
|||
ttlViews.emplace_back(new ui::titleview(u, 128, 128, 16, 16, 7, ttlViewCallback));
|
||||
|
||||
ttlOpts = new ui::menu;
|
||||
ttlOpts->setParams(10, 32, 390, 18, 8);
|
||||
ttlOpts->setParams(10, 32, 390, 20, 7);
|
||||
ttlOpts->setCallback(ttlOptsCallback, NULL);
|
||||
ttlOpts->setActive(false);
|
||||
|
||||
fldMenu = new ui::menu;
|
||||
fldMenu->setParams(10, 32, fldHelpWidth + 44, 18, 8);
|
||||
fldMenu->setParams(10, 32, fldHelpWidth + 44, 20, 6);
|
||||
fldMenu->setCallback(fldMenuCallback, NULL);
|
||||
fldMenu->setActive(false);
|
||||
|
||||
|
|
@ -353,6 +356,7 @@ void ui::ttlInit()
|
|||
infoPanel->setCallback(infoPanelCallback, NULL);
|
||||
|
||||
fldPanel = new ui::slideOutPanel(fldHelpWidth + 64, 720, 0, fldPanelDraw);
|
||||
fldBuffer = SDL_CreateTexture(gfx::render, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STATIC | SDL_TEXTUREACCESS_TARGET, fldHelpWidth + 64, 647);
|
||||
ui::registerPanel(fldPanel);
|
||||
|
||||
fldList = new fs::dirList;
|
||||
|
|
@ -379,6 +383,7 @@ void ui::ttlExit()
|
|||
for(ui::titleview *t : ttlViews)
|
||||
delete t;
|
||||
|
||||
SDL_DestroyTexture(fldBuffer);
|
||||
delete ttlOptsPanel;
|
||||
delete ttlOpts;
|
||||
delete infoPanel;
|
||||
|
|
|
|||
|
|
@ -299,23 +299,23 @@ void ui::usrInit()
|
|||
bcatSaveMenu = new ui::menu;
|
||||
cacheSaveMenu = new ui::menu;
|
||||
|
||||
usrMenu->setParams(64, 16, 0, 96, 4);
|
||||
usrOptMenu->setParams(8, 32, 390, 18, 8);
|
||||
usrMenu->setParams(64, 16, 0, 96, 2);
|
||||
usrOptMenu->setParams(8, 32, 390, 20, 7);
|
||||
usrOptMenu->setCallback(usrOptCallback, NULL);
|
||||
|
||||
saveCreateMenu->setParams(8, 32, 390, 18, 8);
|
||||
saveCreateMenu->setParams(8, 32, 492, 20, 7);
|
||||
saveCreateMenu->setActive(false);
|
||||
saveCreateMenu->setCallback(saveCreateCallback, NULL);
|
||||
|
||||
deviceSaveMenu->setParams(8, 32, 390, 18, 8);
|
||||
deviceSaveMenu->setParams(8, 32, 492, 20, 7);
|
||||
deviceSaveMenu->setActive(false);
|
||||
deviceSaveMenu->setCallback(saveCreateCallback, NULL);
|
||||
|
||||
bcatSaveMenu->setParams(8, 32, 390, 18, 8);
|
||||
bcatSaveMenu->setParams(8, 32, 492, 20, 7);
|
||||
bcatSaveMenu->setActive(false);
|
||||
bcatSaveMenu->setCallback(saveCreateCallback, NULL);
|
||||
|
||||
cacheSaveMenu->setParams(8, 32, 390, 18, 8);
|
||||
cacheSaveMenu->setParams(8, 32, 492, 20, 7);
|
||||
cacheSaveMenu->setActive(false);
|
||||
cacheSaveMenu->setCallback(saveCreateCallback, NULL);
|
||||
|
||||
|
|
@ -345,16 +345,16 @@ void ui::usrInit()
|
|||
usrOptMenu->optAddButtonEvent(1, HidNpadButton_A, usrOptDeleteAllUserSaves, NULL);
|
||||
usrOptMenu->setActive(false);
|
||||
|
||||
saveCreatePanel = new ui::slideOutPanel(410, 720, 0, saveCreatePanelDraw);
|
||||
saveCreatePanel = new ui::slideOutPanel(512, 720, 0, saveCreatePanelDraw);
|
||||
ui::registerPanel(saveCreatePanel);
|
||||
|
||||
deviceSavePanel = new ui::slideOutPanel(410, 720, 0, deviceSavePanelDraw);
|
||||
deviceSavePanel = new ui::slideOutPanel(512, 720, 0, deviceSavePanelDraw);
|
||||
ui::registerPanel(deviceSavePanel);
|
||||
|
||||
bcatSavePanel = new ui::slideOutPanel(410, 720, 0, bcatSavePanelDraw);
|
||||
bcatSavePanel = new ui::slideOutPanel(512, 720, 0, bcatSavePanelDraw);
|
||||
ui::registerPanel(bcatSavePanel);
|
||||
|
||||
cacheSavePanel = new ui::slideOutPanel(410, 720, 0, cacheSavePanelDraw);
|
||||
cacheSavePanel = new ui::slideOutPanel(512, 720, 0, cacheSavePanelDraw);
|
||||
ui::registerPanel(cacheSavePanel);
|
||||
|
||||
accCreate = {FsSaveDataType_Account, saveCreateMenu};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user