diff options
author | Simon Howard | 2014-04-26 21:15:08 -0400 |
---|---|---|
committer | Simon Howard | 2014-04-26 21:15:08 -0400 |
commit | 3aefe2f23c84f19044ed12264dba4f917d302f80 (patch) | |
tree | 686be173c2d33adea26cb2aacde7fb04a1164748 | |
parent | 81b5839ab1ee28a5acd1e903ae83064bd5c80283 (diff) | |
download | chocolate-doom-3aefe2f23c84f19044ed12264dba4f917d302f80.tar.gz chocolate-doom-3aefe2f23c84f19044ed12264dba4f917d302f80.tar.bz2 chocolate-doom-3aefe2f23c84f19044ed12264dba4f917d302f80.zip |
osx: Handle .hhe, .seh file extensions.
These are the equivalents of .deh for Heretic and Strife. Add these as
file associations and auto-switch to the appropriate game type when
opened.
-rw-r--r-- | pkg/osx/AppController.m | 13 | ||||
-rw-r--r-- | pkg/osx/IWADController.h | 1 | ||||
-rw-r--r-- | pkg/osx/IWADController.m | 52 | ||||
-rw-r--r-- | pkg/osx/Info.plist.in | 26 | ||||
-rw-r--r-- | pkg/osx/LauncherManager.h | 1 | ||||
-rw-r--r-- | pkg/osx/LauncherManager.m | 5 |
6 files changed, 89 insertions, 9 deletions
diff --git a/pkg/osx/AppController.m b/pkg/osx/AppController.m index ba8dae9b..23e5ad57 100644 --- a/pkg/osx/AppController.m +++ b/pkg/osx/AppController.m @@ -113,6 +113,19 @@ { [self->launcherManager addFileToCommandLine: fileName forArgument: @"-deh"]; + [self->launcherManager selectGameByName: "doom"]; + } + else if (![extension caseInsensitiveCompare: @"hhe"]) + { + [self->launcherManager addFileToCommandLine: fileName + forArgument: @"-deh"]; + [self->launcherManager selectGameByName: "heretic"]; + } + else if (![extension caseInsensitiveCompare: @"seh"]) + { + [self->launcherManager addFileToCommandLine: fileName + forArgument: @"-deh"]; + [self->launcherManager selectGameByName: "strife"]; } else { diff --git a/pkg/osx/IWADController.h b/pkg/osx/IWADController.h index 0e3c3ae5..68e1f1d5 100644 --- a/pkg/osx/IWADController.h +++ b/pkg/osx/IWADController.h @@ -53,6 +53,7 @@ - (void) setEnvironment; - (const char *) getGameName; - (BOOL) addIWADPath: (NSString *) path; +- (BOOL) selectGameByName: (const char *) name; @end 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 diff --git a/pkg/osx/Info.plist.in b/pkg/osx/Info.plist.in index 8b8436f7..5ea4f323 100644 --- a/pkg/osx/Info.plist.in +++ b/pkg/osx/Info.plist.in @@ -45,7 +45,7 @@ </dict> <dict> <key>CFBundleTypeName</key> - <string>Dehacked patch</string> + <string>Doom Dehacked patch</string> <key>CFBundleTypeIconFile</key> <string>wadfile.icns</string> <key>CFBundleTypeRole</key> @@ -55,6 +55,30 @@ <string>deh</string> </array> </dict> + <dict> + <key>CFBundleTypeName</key> + <string>Heretic HHE patch</string> + <key>CFBundleTypeIconFile</key> + <string>wadfile.icns</string> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>CFBundleTypeExtensions</key> + <array> + <string>hhe</string> + </array> + </dict> + <dict> + <key>CFBundleTypeName</key> + <string>Strife Sehacked patch</string> + <key>CFBundleTypeIconFile</key> + <string>wadfile.icns</string> + <key>CFBundleTypeRole</key> + <string>Viewer</string> + <key>CFBundleTypeExtensions</key> + <array> + <string>seh</string> + </array> + </dict> </array> </dict> </plist> diff --git a/pkg/osx/LauncherManager.h b/pkg/osx/LauncherManager.h index 1c8a5187..72964f3d 100644 --- a/pkg/osx/LauncherManager.h +++ b/pkg/osx/LauncherManager.h @@ -44,6 +44,7 @@ - (BOOL) addIWADPath: (NSString *) path; - (void) addFileToCommandLine: (NSString *) fileName forArgument: (NSString *) args; +- (BOOL) selectGameByName: (const char *) name; - (void) openTerminal: (id) sender; - (void) openREADME: (id) sender; diff --git a/pkg/osx/LauncherManager.m b/pkg/osx/LauncherManager.m index b041c99f..704003c6 100644 --- a/pkg/osx/LauncherManager.m +++ b/pkg/osx/LauncherManager.m @@ -388,5 +388,10 @@ static NSString *AppendQuotedFilename(NSString *str, NSString *fileName) return [self->iwadController addIWADPath: path]; } +- (BOOL) selectGameByName: (const char *) name +{ + return [self->iwadController selectGameByName: name]; +} + @end |