Some changes to scroll algorithm
This commit is contained in:
@@ -264,7 +264,7 @@ int install_badge_dir(FS_DirectoryEntry set_dir, int *badge_count, int set_id)
|
|||||||
u32 total_count = 0xFFFF * badges_in_set;
|
u32 total_count = 0xFFFF * badges_in_set;
|
||||||
for (int i = 0; i < 16; ++i)
|
for (int i = 0; i < 16; ++i)
|
||||||
{
|
{
|
||||||
FSFILE_Write(badgeDataHandle, NULL, set_index * 0x8A0 + i * 0x8A, set_dir.name, strulen(set_dir.name, 0x8A) * 2, 0);
|
FSFILE_Write(badgeDataHandle, NULL, set_index * 0x8A0 + i * 0x8A, set_dir.name, strulen(set_dir.name, 0x45) * 2, 0);
|
||||||
}
|
}
|
||||||
badgeMngBuffer[0x3D8 + set_index/8] |= 0 << (set_index % 8);
|
badgeMngBuffer[0x3D8 + set_index/8] |= 0 << (set_index % 8);
|
||||||
|
|
||||||
@@ -523,7 +523,7 @@ Result install_badges(void)
|
|||||||
{
|
{
|
||||||
u16 name[0x8A/2] = {0};
|
u16 name[0x8A/2] = {0};
|
||||||
utf8_to_utf16(name, (u8 *) "Other Badges", 0x8A);
|
utf8_to_utf16(name, (u8 *) "Other Badges", 0x8A);
|
||||||
FSFILE_Write(badgeDataHandle, NULL, default_index * 0x8A0 + i * 0x8A, &name, strulen(name, 0x8A) * 2, 0);
|
FSFILE_Write(badgeDataHandle, NULL, default_index * 0x8A0 + i * 0x8A, &name, strulen(name, 0x45) * 2, 0);
|
||||||
}
|
}
|
||||||
badgeMngBuffer[0x3D8 + default_index/8] |= 1 << (default_index % 8);
|
badgeMngBuffer[0x3D8 + default_index/8] |= 1 << (default_index % 8);
|
||||||
|
|
||||||
|
|||||||
@@ -148,47 +148,48 @@ void handle_scrolling(Entry_List_s * list)
|
|||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
if(list->entries_count > list->entries_loaded)
|
if(list->entries_count > list->entries_loaded)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < list->entries_count; i++)
|
int change = 0;
|
||||||
|
|
||||||
|
if(list->entries_count > list->entries_loaded * 2 && list->previous_scroll < list->entries_loaded && list->selected_entry >= list->entries_count - list->entries_loaded)
|
||||||
{
|
{
|
||||||
int change = 0;
|
list->scroll = list->entries_count - list->entries_loaded;
|
||||||
|
|
||||||
if(list->entries_count > list->entries_loaded * 2 && list->previous_scroll < list->entries_loaded && list->selected_entry >= list->entries_count - list->entries_loaded)
|
|
||||||
{
|
|
||||||
list->scroll = list->entries_count - list->entries_loaded;
|
|
||||||
}
|
|
||||||
else if(list->entries_count > list->entries_loaded * 2 && list->selected_entry < list->entries_loaded && list->previous_selected >= list->entries_count - list->entries_loaded)
|
|
||||||
{
|
|
||||||
list->scroll = 0;
|
|
||||||
}
|
|
||||||
else if(list->selected_entry == list->previous_selected+1 && list->selected_entry == list->scroll+list->entries_loaded)
|
|
||||||
{
|
|
||||||
change = 1;
|
|
||||||
}
|
|
||||||
else if(list->selected_entry == list->previous_selected-1 && list->selected_entry == list->scroll-1)
|
|
||||||
{
|
|
||||||
change = -1;
|
|
||||||
}
|
|
||||||
else if(list->selected_entry == list->previous_selected+list->entries_loaded || list->selected_entry >= list->scroll + list->entries_loaded)
|
|
||||||
{
|
|
||||||
change = list->entries_loaded;
|
|
||||||
}
|
|
||||||
else if(list->selected_entry == list->previous_selected-list->entries_loaded || list->selected_entry < list->scroll)
|
|
||||||
{
|
|
||||||
change = -list->entries_loaded;
|
|
||||||
}
|
|
||||||
|
|
||||||
list->scroll += change;
|
|
||||||
|
|
||||||
if(list->scroll < 0)
|
|
||||||
list->scroll = 0;
|
|
||||||
else if(list->scroll > list->entries_count - list->entries_loaded)
|
|
||||||
list->scroll = list->entries_count - list->entries_loaded;
|
|
||||||
|
|
||||||
if(!change)
|
|
||||||
list->previous_selected = list->selected_entry;
|
|
||||||
else
|
|
||||||
list->previous_selected += change;
|
|
||||||
}
|
}
|
||||||
|
else if(list->entries_count > list->entries_loaded * 2 && list->selected_entry < list->entries_loaded && list->previous_selected >= list->entries_count - list->entries_loaded)
|
||||||
|
{
|
||||||
|
list->scroll = 0;
|
||||||
|
}
|
||||||
|
else if(list->selected_entry == list->previous_selected+1 && list->selected_entry == list->scroll+list->entries_loaded)
|
||||||
|
{
|
||||||
|
change = 1;
|
||||||
|
}
|
||||||
|
else if(list->selected_entry == list->previous_selected-1 && list->selected_entry == list->scroll-1)
|
||||||
|
{
|
||||||
|
change = -1;
|
||||||
|
}
|
||||||
|
else if(list->selected_entry == list->previous_selected+list->entries_loaded)
|
||||||
|
{
|
||||||
|
change = list->entries_loaded;
|
||||||
|
}
|
||||||
|
else if(list->selected_entry == list->previous_selected-list->entries_loaded)
|
||||||
|
{
|
||||||
|
change = -list->entries_loaded;
|
||||||
|
}
|
||||||
|
else if(list->selected_entry >= list->scroll + list->entries_loaded || list->selected_entry < list->scroll)
|
||||||
|
{
|
||||||
|
change = list->selected_entry - list->scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
list->scroll += change;
|
||||||
|
|
||||||
|
if(list->scroll < 0)
|
||||||
|
list->scroll = 0;
|
||||||
|
else if(list->scroll > list->entries_count - list->entries_loaded)
|
||||||
|
list->scroll = list->entries_count - list->entries_loaded;
|
||||||
|
|
||||||
|
if(!change)
|
||||||
|
list->previous_selected = list->selected_entry;
|
||||||
|
else
|
||||||
|
list->previous_selected += change;
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,13 @@ static void stop_install_check(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void wait_scroll(void)
|
||||||
|
{
|
||||||
|
released = true;
|
||||||
|
svcReleaseMutex(update_icons_mutex);
|
||||||
|
svcSleepThread(FASTSCROLL_WAIT);
|
||||||
|
}
|
||||||
|
|
||||||
static void exit_thread(void)
|
static void exit_thread(void)
|
||||||
{
|
{
|
||||||
if(iconLoadingThread_arg.run_thread)
|
if(iconLoadingThread_arg.run_thread)
|
||||||
@@ -327,11 +334,7 @@ static void jump_menu(Entry_List_s * list)
|
|||||||
if(button == SWKBD_BUTTON_CONFIRM)
|
if(button == SWKBD_BUTTON_CONFIRM)
|
||||||
{
|
{
|
||||||
list->selected_entry = atoi(numbuf) - 1;
|
list->selected_entry = atoi(numbuf) - 1;
|
||||||
list->scroll = list->selected_entry;
|
wait_scroll();
|
||||||
if(list->scroll >= list->entries_count - list->entries_loaded)
|
|
||||||
list->scroll = list->entries_count - list->entries_loaded - 1;
|
|
||||||
if (list->scroll < 0)
|
|
||||||
list->scroll = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -371,13 +374,6 @@ static void toggle_shuffle(Entry_List_s * list)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void wait_scroll(void)
|
|
||||||
{
|
|
||||||
released = true;
|
|
||||||
svcReleaseMutex(update_icons_mutex);
|
|
||||||
svcSleepThread(FASTSCROLL_WAIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
|
|||||||
Reference in New Issue
Block a user