summaryrefslogtreecommitdiff
path: root/pkg/osx/IWADController.m
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/osx/IWADController.m')
-rw-r--r--pkg/osx/IWADController.m52
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