Fix bugs with manifest screen display when HUD is off

Also fix signedness issue which somehow none of our compilers spotted
for years.
master
cim 2015-04-19 10:53:37 +01:00
parent 2f96aff016
commit edfc01e272
4 changed files with 26 additions and 13 deletions

View File

@ -1153,8 +1153,13 @@ for (unsigned i=0;i<amount;i++)
OOGUIRow cargoRow = 2;
OOGUIRow missionsRow = 2;
OOGUIRow nextPageRow = MANIFEST_SCREEN_ROW_NEXT;
// show extra lines if no HUD is displayed.
if ([[self hud] isHidden]) max_rows += 7;
if ([[self hud] isHidden] || [[self hud] allowBigGui])
{
max_rows += 7;
nextPageRow += 7;
}
NSUInteger mmRows = 0;
id mmEntry = nil;
@ -1286,7 +1291,7 @@ for (unsigned i=0;i<amount;i++)
if (multi_page)
{
OOGUIRow r_start = MANIFEST_SCREEN_ROW_BACK;
OOGUIRow r_end = MANIFEST_SCREEN_ROW_NEXT;
OOGUIRow r_end = nextPageRow;
if (page_offset > 0)
{
[gui setColor:scrollColor forRow:MANIFEST_SCREEN_ROW_BACK];
@ -1295,21 +1300,21 @@ for (unsigned i=0;i<amount;i++)
else
{
[gui setColor:noScrollColor forRow:MANIFEST_SCREEN_ROW_BACK];
r_start = MANIFEST_SCREEN_ROW_NEXT;
r_start = nextPageRow;
}
[gui setArray:[NSArray arrayWithObjects:DESC(@"gui-back"), @" <-- ",nil] forRow:MANIFEST_SCREEN_ROW_BACK];
if (total_rows > max_rows + page_offset)
{
[gui setColor:scrollColor forRow:MANIFEST_SCREEN_ROW_NEXT];
[gui setKey:GUI_KEY_OK forRow:MANIFEST_SCREEN_ROW_NEXT];
[gui setColor:scrollColor forRow:nextPageRow];
[gui setKey:GUI_KEY_OK forRow:nextPageRow];
}
else
{
[gui setColor:noScrollColor forRow:MANIFEST_SCREEN_ROW_NEXT];
[gui setColor:noScrollColor forRow:nextPageRow];
r_end = MANIFEST_SCREEN_ROW_BACK;
}
[gui setArray:[NSArray arrayWithObjects:DESC(@"gui-more"), @" --> ",nil] forRow:MANIFEST_SCREEN_ROW_NEXT];
[gui setArray:[NSArray arrayWithObjects:DESC(@"gui-more"), @" --> ",nil] forRow:nextPageRow];
[gui setSelectableRange:NSMakeRange(r_start,r_end+1-r_start)];
[gui setSelectedRow:r_start];

View File

@ -2477,12 +2477,16 @@ static NSTimeInterval time_last_frame;
}
if ([gameView isDown:key_gui_arrow_right])
{
OOGUIRow nextRow = MANIFEST_SCREEN_ROW_NEXT;
if ([[self hud] isHidden] || [[self hud] allowBigGui])
{
nextRow += 7;
}
if ((!leftRightKeyPressed)||(script_time > timeLastKeyPress + KEY_REPEAT_INTERVAL))
{
if ([[gui keyForRow:MANIFEST_SCREEN_ROW_NEXT] isEqual:GUI_KEY_OK])
if ([[gui keyForRow:nextRow] isEqual:GUI_KEY_OK])
{
[gui setSelectedRow:MANIFEST_SCREEN_ROW_NEXT];
[gui setSelectedRow:nextRow];
[self playMenuPageNext];
[gui setStatusPage:+1];
[self setGuiToManifestScreen];

View File

@ -356,7 +356,7 @@ typedef OOGUITabStop OOGUITabSettings[GUI_MAX_COLUMNS];
- (int) drawGUI:(GLfloat) alpha drawCursor:(BOOL) drawCursor;
- (void) drawGUIBackground;
- (void) setStatusPage:(NSUInteger) pageNum;
- (void) setStatusPage:(NSInteger) pageNum;
- (NSUInteger) statusPage;
- (void) refreshStarChart;
- (void) setStarChartTitle;

View File

@ -1138,12 +1138,16 @@ static OOTextureSprite *NewTextureSpriteWithDescriptor(NSDictionary *descriptor)
}
- (void) setStatusPage:(NSUInteger)pageNum
- (void) setStatusPage:(NSInteger)pageNum
{
if (pageNum==0)
if (pageNum==0 || (pageNum < 0 && -pageNum >= statusPage))
{
statusPage=1;
}
else
{
statusPage += pageNum;
}
}