diff options
Diffstat (limited to 'pkg/osx/IWADController.m')
-rw-r--r-- | pkg/osx/IWADController.m | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/pkg/osx/IWADController.m b/pkg/osx/IWADController.m index fb9223c8..c2e6bf45 100644 --- a/pkg/osx/IWADController.m +++ b/pkg/osx/IWADController.m @@ -114,15 +114,9 @@ static NSString *IWADFilenames[NUM_IWAD_TYPES + 1] = } } -// Get the name used for the executable for the selected IWAD. - -- (const char *) getGameName +static const char *NameForIWAD(IWAD iwad) { - IWAD selectedIWAD; - - selectedIWAD = [self getSelectedIWAD]; - - switch (selectedIWAD) + switch (iwad) { case IWAD_HERETIC: return "heretic"; @@ -138,6 +132,13 @@ static NSString *IWADFilenames[NUM_IWAD_TYPES + 1] = } } +// Get the name used for the executable for the selected IWAD. + +- (const char *) getGameName +{ + return NameForIWAD([self getSelectedIWAD]); +} + - (void) setIWADConfig { IWADLocation *iwadList[NUM_IWAD_TYPES]; @@ -416,5 +417,40 @@ static NSString *IWADFilenames[NUM_IWAD_TYPES + 1] = return NO; } +- (BOOL) selectGameByName: (const char *) name +{ + IWADLocation *iwadList[NUM_IWAD_TYPES]; + NSString *location; + const char *name2; + int i; + + // Already selected an IWAD of the desired type? Just return + // success. + if (!strcmp(name, [self getGameName])) + { + return YES; + } + + // Search through the configured IWADs and try to select the + // desired game. + [self getIWADList: iwadList]; + + for (i = 0; i < NUM_IWAD_TYPES; ++i) + { + location = [iwadList[i] getLocation]; + name2 = NameForIWAD(i); + + if (!strcmp(name, name2) + && location != nil && [location length] > 0) + { + [self->iwadSelector selectItemWithTitle:IWADLabels[i]]; + return YES; + } + } + + // User hasn't configured any WAD(s) for the desired game type. + return NO; +} + @end |