Skip to content

Commit 83bc901

Browse files
authored
Merge pull request #527 from OoliteProject/new-event-guiSelectedRow
Adding new world event guiSelectedRowChanged
2 parents cea269d + a78e2f4 commit 83bc901

File tree

5 files changed

+43
-17
lines changed

5 files changed

+43
-17
lines changed

src/Core/Entities/PlayerEntity.m

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8876,7 +8876,9 @@ - (void) setGuiToGameOptionsScreen
88768876

88778877
[[UNIVERSE gameView] clearMouse];
88788878
[[UNIVERSE gameController] setMouseInteractionModeForUIWithMouseInteraction:YES];
8879-
8879+
8880+
gui_screen = GUI_SCREEN_GAMEOPTIONS;
8881+
88808882
// GUI stuff
88818883
{
88828884
#define OO_SETACCESSCONDITIONFORROW(condition, row) \
@@ -9138,9 +9140,6 @@ - (void) setGuiToGameOptionsScreen
91389140
}
91399141
/* ends */
91409142

9141-
[self setShowDemoShips:NO];
9142-
gui_screen = GUI_SCREEN_GAMEOPTIONS;
9143-
91449143
[self setShowDemoShips:NO];
91459144
[UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
91469145
}
@@ -9155,6 +9154,8 @@ - (void) setGuiToLoadSaveScreen
91559154

91569155
[[UNIVERSE gameController] setMouseInteractionModeForUIWithMouseInteraction:YES];
91579156

9157+
gui_screen = GUI_SCREEN_OPTIONS;
9158+
91589159
if ([self status] == STATUS_DOCKED)
91599160
{
91609161
if ([self dockedStation] == nil) [self setDockedAtMainStation];
@@ -9232,7 +9233,6 @@ - (void) setGuiToLoadSaveScreen
92329233
[[UNIVERSE gameView] clearMouse];
92339234

92349235
[self setShowDemoShips:NO];
9235-
gui_screen = GUI_SCREEN_OPTIONS;
92369236

92379237
[UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
92389238

@@ -9439,6 +9439,8 @@ - (void) setGuiToEquipShipScreen:(int)skipParam selectingFacingFor:(NSString *)e
94399439
BOOL weaponMounted = NO;
94409440
BOOL guiChanged = (gui_screen != GUI_SCREEN_EQUIP_SHIP);
94419441

9442+
gui_screen = GUI_SCREEN_EQUIP_SHIP;
9443+
94429444
[gui clearAndKeepBackground:!guiChanged];
94439445
[gui setTitle:DESC(@"equip-title")];
94449446

@@ -9684,8 +9686,6 @@ - (void) setGuiToEquipShipScreen:(int)skipParam selectingFacingFor:(NSString *)e
96849686
/* ends */
96859687

96869688
chosen_weapon_facing = WEAPON_FACING_NONE;
9687-
[self setShowDemoShips:NO];
9688-
gui_screen = GUI_SCREEN_EQUIP_SHIP;
96899689

96909690
[self setShowDemoShips:NO];
96919691
[UNIVERSE enterGUIViewModeWithMouseInteraction:YES];
@@ -9752,7 +9752,9 @@ - (void) setGuiToInterfacesScreen:(int)skip
97529752
NSDictionary *interfaces = [[self dockedStation] localInterfaces];
97539753
NSArray *interfaceKeys = [interfaces keysSortedByValueUsingSelector:@selector(interfaceCompare:)]; // sorts by category, then title
97549754
int i;
9755-
9755+
9756+
OOGUIScreenID oldScreen = gui_screen;
9757+
97569758
// GUI stuff
97579759
{
97589760
GuiDisplayGen *gui = [UNIVERSE gui];
@@ -9763,6 +9765,7 @@ - (void) setGuiToInterfacesScreen:(int)skip
97639765
[gui clearAndKeepBackground:!guiChanged];
97649766
[gui setTitle:DESC(@"interfaces-title")];
97659767

9768+
gui_screen = GUI_SCREEN_INTERFACES;
97669769

97679770
OOGUITabSettings tab_stops;
97689771
tab_stops[0] = 0;
@@ -9853,11 +9856,8 @@ - (void) setGuiToInterfacesScreen:(int)skip
98539856
}
98549857
/* ends */
98559858

9856-
98579859
[self setShowDemoShips:NO];
98589860

9859-
OOGUIScreenID oldScreen = gui_screen;
9860-
gui_screen = GUI_SCREEN_INTERFACES;
98619861
[self noteGUIDidChangeFrom:oldScreen to:gui_screen];
98629862

98639863
[self setShowDemoShips:NO];

src/Core/Entities/PlayerEntityControls.m

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
static BOOL switching_status_screens;
137137
//static BOOL switching_market_screens;
138138
static BOOL switching_equipship_screens;
139+
static BOOL switching_interface_screens;
139140
static BOOL zoom_pressed;
140141
static BOOL customView_pressed;
141142
static BOOL weaponsOnlineToggle_pressed;
@@ -754,7 +755,7 @@ - (BOOL) handleGUIUpDownArrowKeys
754755
{
755756
if ([gui setLastSelectableRow]) result = YES;
756757
}
757-
758+
758759
if (result && [gui selectableRange].length > 1) [self playMenuNavigationUp];
759760
else [self playMenuNavigationNot];
760761

@@ -4673,12 +4674,14 @@ - (void) pollGuiScreenControlsWithFKeyAlias:(BOOL)fKeyAlias
46734674
if (gui_screen != GUI_SCREEN_MARKET)
46744675
{
46754676
[gameView clearKeys];
4677+
[gui setNoSelectedRow];
46764678
[self noteGUIWillChangeTo:GUI_SCREEN_MARKET];
46774679
[self setGuiToMarketScreen];
46784680
}
46794681
else
46804682
{
46814683
[gameView clearKeys];
4684+
[gui setNoSelectedRow];
46824685
[self noteGUIWillChangeTo:GUI_SCREEN_MARKETINFO];
46834686
[self setGuiToMarketInfoScreen];
46844687
}
@@ -4704,6 +4707,7 @@ - (void) pollGuiScreenControlsWithFKeyAlias:(BOOL)fKeyAlias
47044707
{
47054708
[gameView clearKeys];
47064709
[self noteGUIWillChangeTo:GUI_SCREEN_SHIPYARD];
4710+
[gui setNoSelectedRow];
47074711
[self setGuiToShipyardScreen:0];
47084712
[gui setSelectedRow:GUI_ROW_SHIPYARD_START];
47094713
[self showShipyardInfoForSelection];
@@ -4712,6 +4716,7 @@ - (void) pollGuiScreenControlsWithFKeyAlias:(BOOL)fKeyAlias
47124716
{
47134717
[gameView clearKeys];
47144718
[self noteGUIWillChangeTo:GUI_SCREEN_EQUIP_SHIP];
4719+
[gui setNoSelectedRow];
47154720
[self setGuiToEquipShipScreen:0];
47164721
[gui setSelectedRow:GUI_ROW_EQUIPMENT_START];
47174722
}
@@ -4727,8 +4732,16 @@ - (void) pollGuiScreenControlsWithFKeyAlias:(BOOL)fKeyAlias
47274732

47284733
if ([self checkKeyPress:n_key_gui_screen_interfaces fKey_only:!fKeyAlias])
47294734
{
4730-
[self setGuiToInterfacesScreen:0];
4731-
[gui setSelectedRow:GUI_ROW_INTERFACES_START];
4735+
if (!switching_interface_screens) {
4736+
[gui setNoSelectedRow];
4737+
[self setGuiToInterfacesScreen:0];
4738+
[gui setSelectedRow:GUI_ROW_INTERFACES_START];
4739+
}
4740+
switching_interface_screens = YES;
4741+
}
4742+
else
4743+
{
4744+
switching_interface_screens = NO;
47324745
}
47334746

47344747
}

src/Core/Entities/PlayerEntityLoadSave.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,11 @@ - (void) setGuiToScenarioScreen:(int)page
259259
++row;
260260
}
261261

262+
gui_screen = GUI_SCREEN_NEWGAME;
263+
262264
[gui setSelectableRange:NSMakeRange(start_row - 2,3 + row - start_row)];
263265
[gui setSelectedRow:start_row];
264266
[self showScenarioDetails];
265-
266-
gui_screen = GUI_SCREEN_NEWGAME;
267267

268268
if (guiChanged)
269269
{

src/Core/GuiDisplayGen.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ typedef OOGUITabStop OOGUITabSettings[GUI_MAX_COLUMNS];
286286
- (void) setNoSelectedRow;
287287
- (NSString *) selectedRowText;
288288
- (NSString *) selectedRowKey;
289+
- (void) reportSelectedRow:(int) row;
289290

290291
- (void) setShowTextCursor:(BOOL) yesno;
291292
- (void) setCurrentRow:(OOGUIRow) value;

src/Core/GuiDisplayGen.m

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,13 +497,16 @@ - (OOGUIRow) selectedRow
497497

498498
- (BOOL) setSelectedRow:(OOGUIRow)row
499499
{
500-
if ((row == selectedRow)&&RowInRange(row, selectableRange))
500+
if ((row == selectedRow) && RowInRange(row, selectableRange))
501+
{
501502
return YES;
503+
}
502504
if (RowInRange(row, selectableRange))
503505
{
504506
if (![[rowKey objectAtIndex:row] isEqual:GUI_KEY_SKIP])
505507
{
506508
selectedRow = row;
509+
[self reportSelectedRow:row];
507510
return YES;
508511
}
509512
}
@@ -519,6 +522,7 @@ - (BOOL) setNextRow:(int) direction
519522
if (![[rowKey objectAtIndex:row] isEqual:GUI_KEY_SKIP])
520523
{
521524
selectedRow = row;
525+
[self reportSelectedRow:row];
522526
return YES;
523527
}
524528
row += direction;
@@ -535,6 +539,7 @@ - (BOOL) setFirstSelectableRow
535539
if (![[rowKey objectAtIndex:row] isEqual:GUI_KEY_SKIP])
536540
{
537541
selectedRow = row;
542+
[self reportSelectedRow:row];
538543
return YES;
539544
}
540545
row++;
@@ -552,6 +557,7 @@ - (BOOL) setLastSelectableRow
552557
if (![[rowKey objectAtIndex:row] isEqual:GUI_KEY_SKIP])
553558
{
554559
selectedRow = row;
560+
[self reportSelectedRow:row];
555561
return YES;
556562
}
557563
row--;
@@ -561,6 +567,12 @@ - (BOOL) setLastSelectableRow
561567
}
562568

563569

570+
- (void) reportSelectedRow:(int) row
571+
{
572+
[PLAYER doScriptEvent:OOJSID("guiSelectedRowChanged") withArguments:[NSArray arrayWithObjects:[self keyForRow:row], [NSNumber numberWithInt:row], [self selectedRowText], nil]];
573+
}
574+
575+
564576
- (void) setNoSelectedRow
565577
{
566578
selectedRow = -1;

0 commit comments

Comments
 (0)