mirror of
				https://github.com/hedge-dev/UnleashedRecomp.git
				synced 2025-10-30 07:11:05 +00:00 
			
		
		
		
	Implemented fast scrolling on up/down hold for options menu (#275)
This commit is contained in:
		
							parent
							
								
									ee97736d58
								
							
						
					
					
						commit
						c40ffbc70d
					
				
					 1 changed files with 50 additions and 4 deletions
				
			
		|  | @ -1239,22 +1239,62 @@ static void DrawConfigOptions() | |||
| 
 | ||||
|     int32_t prevSelectedRowIndex = g_selectedRowIndex; | ||||
| 
 | ||||
|     auto time = ImGui::GetTime(); | ||||
|     auto fastScroll = (time - g_lastTappedTime) > 0.6; | ||||
|     auto fastScrollSpeed = 1.0 / 3.5; | ||||
|     auto fastScrollEncounteredEdge = false; | ||||
|     static auto fastScrollSpeedUp = false; | ||||
| 
 | ||||
|     if (scrollUp || scrollDown) | ||||
|         g_lastTappedTime = time; | ||||
| 
 | ||||
|     if (!upIsHeld && !downIsHeld) | ||||
|         fastScrollSpeedUp = false; | ||||
| 
 | ||||
|     if (fastScrollSpeedUp) | ||||
|         fastScrollSpeed /= 2; | ||||
| 
 | ||||
|     if (fastScroll) | ||||
|     { | ||||
|         if ((time - g_lastIncrementTime) < fastScrollSpeed) | ||||
|         { | ||||
|             fastScroll = false; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             g_lastIncrementTime = time; | ||||
| 
 | ||||
|             scrollUp = upIsHeld; | ||||
|             scrollDown = downIsHeld; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if (scrollUp) | ||||
|     { | ||||
|         --g_selectedRowIndex; | ||||
| 
 | ||||
|         if (g_selectedRowIndex < 0) | ||||
|             g_selectedRowIndex = rowCount - 1; | ||||
|         { | ||||
|             g_selectedRowIndex = fastScroll ? 0 : rowCount - 1; | ||||
|             fastScrollEncounteredEdge = fastScroll; | ||||
|             fastScrollSpeedUp = false; | ||||
|         } | ||||
|     } | ||||
|     else if (scrollDown) | ||||
|     { | ||||
|         ++g_selectedRowIndex; | ||||
| 
 | ||||
|         if (g_selectedRowIndex >= rowCount) | ||||
|             g_selectedRowIndex = 0; | ||||
|         { | ||||
|             g_selectedRowIndex = fastScroll ? rowCount - 1 : 0; | ||||
|             fastScrollEncounteredEdge = fastScroll; | ||||
|             fastScrollSpeedUp = false; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if (scrollUp || scrollDown) | ||||
|     if ((scrollUp || scrollDown) && !fastScrollEncounteredEdge) | ||||
|     { | ||||
|         g_rowSelectionTime = ImGui::GetTime(); | ||||
|         g_rowSelectionTime = time; | ||||
|         g_prevSelectedRowIndex = prevSelectedRowIndex; | ||||
|         Game_PlaySound("sys_worldmap_cursor"); | ||||
|     } | ||||
|  | @ -1270,12 +1310,18 @@ static void DrawConfigOptions() | |||
|     { | ||||
|         g_firstVisibleRowIndex = g_selectedRowIndex; | ||||
|         disableMoveAnimation = true; | ||||
| 
 | ||||
|         if (g_selectedRowIndex > 0) | ||||
|             fastScrollSpeedUp = true; | ||||
|     } | ||||
| 
 | ||||
|     if (g_firstVisibleRowIndex + visibleRowCount - 1 < g_selectedRowIndex) | ||||
|     { | ||||
|         g_firstVisibleRowIndex = std::max(0, g_selectedRowIndex - visibleRowCount + 1); | ||||
|         disableMoveAnimation = true; | ||||
| 
 | ||||
|         if (g_selectedRowIndex < rowCount - 1) | ||||
|             fastScrollSpeedUp = true; | ||||
|     } | ||||
| 
 | ||||
|     if (disableMoveAnimation) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Hyper
						Hyper