summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Howard2014-04-26 21:15:08 -0400
committerSimon Howard2014-04-26 21:15:08 -0400
commit3aefe2f23c84f19044ed12264dba4f917d302f80 (patch)
tree686be173c2d33adea26cb2aacde7fb04a1164748
parent81b5839ab1ee28a5acd1e903ae83064bd5c80283 (diff)
downloadchocolate-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.m13
-rw-r--r--pkg/osx/IWADController.h1
-rw-r--r--pkg/osx/IWADController.m52
-rw-r--r--pkg/osx/Info.plist.in26
-rw-r--r--pkg/osx/LauncherManager.h1
-rw-r--r--pkg/osx/LauncherManager.m5
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