1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

another OS X patch from stopiccot

This commit is contained in:
Ivan Savenko 2012-12-27 09:21:30 +00:00
parent 1807a8a536
commit e023b7d6bc
17 changed files with 49 additions and 13 deletions

View File

@ -17,7 +17,7 @@ option(DISABLE_ERM "Disable compilation of ERM scripting module" ON)
if (APPLE) if (APPLE)
# Default location for thirdparty libs # Default location for thirdparty libs
set(CMAKE_INCLUDE_PATH "../include ${CMAKE_OSX_SYSROOT}/usr/include") set(CMAKE_INCLUDE_PATH "../include" "${CMAKE_OSX_SYSROOT}/usr/include")
set(CMAKE_LIBRARY_PATH "../lib") set(CMAKE_LIBRARY_PATH "../lib")
set(CMAKE_FRAMEWORK_PATH "../Frameworks") set(CMAKE_FRAMEWORK_PATH "../Frameworks")
set(BOOST_ROOT "../") set(BOOST_ROOT "../")
@ -155,6 +155,8 @@ if(WIN32)
set(CPACK_GENERATOR ZIP) # just use zip? CPack has some GUI install as well set(CPACK_GENERATOR ZIP) # just use zip? CPack has some GUI install as well
elseif(APPLE) elseif(APPLE)
set(CPACK_GENERATOR DragNDrop) set(CPACK_GENERATOR DragNDrop)
set(CPACK_DMG_BACKGROUND_IMAGE "${CMAKE_SOURCE_DIR}/osx/dmg_background.png")
set(CPACK_DMG_DS_STORE "${CMAKE_SOURCE_DIR}/osx/dmg_DS_Store")
else() else()
set(CPACK_GENERATOR TGZ) set(CPACK_GENERATOR TGZ)
endif() endif()

View File

@ -67,6 +67,7 @@ elseif(APPLE)
cp ${CMAKE_HOME_DIRECTORY}/bin/$(CONFIGURATION)/libStupidAI.dylib ${BUNDLE_PATH}/MacOS/AI/libStupidAI.dylib && cp ${CMAKE_HOME_DIRECTORY}/bin/$(CONFIGURATION)/libStupidAI.dylib ${BUNDLE_PATH}/MacOS/AI/libStupidAI.dylib &&
cp ${CMAKE_HOME_DIRECTORY}/bin/$(CONFIGURATION)/libEmptyAI.dylib ${BUNDLE_PATH}/MacOS/AI/libEmptyAI.dylib && cp ${CMAKE_HOME_DIRECTORY}/bin/$(CONFIGURATION)/libEmptyAI.dylib ${BUNDLE_PATH}/MacOS/AI/libEmptyAI.dylib &&
cp ${CMAKE_HOME_DIRECTORY}/bin/$(CONFIGURATION)/libBattleAI.dylib ${BUNDLE_PATH}/MacOS/AI/libBattleAI.dylib && cp ${CMAKE_HOME_DIRECTORY}/bin/$(CONFIGURATION)/libBattleAI.dylib ${BUNDLE_PATH}/MacOS/AI/libBattleAI.dylib &&
cp -r ${CMAKE_HOME_DIRECTORY}/osx/vcmibuilder.app ${BUNDLE_PATH}/MacOS/vcmibuilder.app &&
# Copy frameworks # Copy frameworks
cp -r ${CMAKE_HOME_DIRECTORY}/${CMAKE_FRAMEWORK_PATH} ${BUNDLE_PATH}/Frameworks && cp -r ${CMAKE_HOME_DIRECTORY}/${CMAKE_FRAMEWORK_PATH} ${BUNDLE_PATH}/Frameworks &&

Binary file not shown.

BIN
osx/dmg_DS_Store Normal file

Binary file not shown.

BIN
osx/dmg_background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

BIN
osx/dmg_background.psd Normal file

Binary file not shown.

BIN
osx/osx-vcmibuilder/innoextract Executable file

Binary file not shown.

View File

@ -5,6 +5,8 @@
NSString* outputDir; NSString* outputDir;
NSString* tempDir; NSString* tempDir;
NSString* dataDir; NSString* dataDir;
NSString* currentArchiveName;
NSString* currentArchiveFilename;
NSMutableArray* actions; NSMutableArray* actions;
@ -38,6 +40,8 @@
- (void)downloadWogArchive; - (void)downloadWogArchive;
- (void)unzipWogArchive; - (void)unzipWogArchive;
- (void)downloadVcmiArchive;
- (void)unzipVcmiArchive;
- (void)extractGameData; - (void)extractGameData;
- (void)innoexctract; - (void)innoexctract;
- (NSString*)attachDiskImage:(NSString*)path; - (NSString*)attachDiskImage:(NSString*)path;

View File

@ -23,37 +23,39 @@
- (void)download:(NSURLDownload*)download didReceiveDataOfLength:(NSUInteger)length - (void)download:(NSURLDownload*)download didReceiveDataOfLength:(NSUInteger)length
{ {
self->bytesRecieved += length; self->bytesRecieved += length;
[self showProgressText:[NSString stringWithFormat:@"Downloading WoG archive: %3.1f Mb / %3.1f Mb", [self showProgressText:[NSString stringWithFormat:@"Downloading %@ archive: %3.1f Mb / %3.1f Mb", self->currentArchiveName,
self->bytesRecieved / 1024.0f / 1024.0f, self->bytesExpected / 1024.0f / 1024.0f]]; self->bytesRecieved / 1024.0f / 1024.0f, self->bytesExpected / 1024.0f / 1024.0f]];
} }
- (void)download:(NSURLDownload*)download decideDestinationWithSuggestedFilename:(NSString*)filename - (void)download:(NSURLDownload*)download decideDestinationWithSuggestedFilename:(NSString*)filename
{ {
[download setDestination:[tempDir stringByAppendingString:@"/wog.zip"] allowOverwrite:YES]; [download setDestination:[tempDir stringByAppendingString:currentArchiveFilename] allowOverwrite:YES];
} }
- (void)downloadDidFinish:(NSURLDownload*)download - (void)downloadDidFinish:(NSURLDownload*)download
{ {
[self showProgressText:@"Downloading WoG archive: completed"]; [self showProgressText:[NSString stringWithFormat:@"Downloading %@ archive: completed", self->currentArchiveName]];
[self nextAction]; [self nextAction];
} }
- (void)download:(NSURLDownload*)download didFailWithError:(NSError*)error - (void)download:(NSURLDownload*)download didFailWithError:(NSError*)error
{ {
[self showProgressText:@"Downloading WoG archive: failed"]; [self showProgressText:[NSString stringWithFormat:@"Downloading %@ archive: failed", self->currentArchiveName]];
[self showErrorText:[error localizedDescription]]; [self showErrorText:[error localizedDescription]];
} }
- (void)nextAction - (void)nextAction
{ {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
SEL sel = NSSelectorFromString(actions[0]); if ([actions count] > 0) {
[actions removeObjectAtIndex:0]; SEL sel = NSSelectorFromString(actions[0]);
@try { [actions removeObjectAtIndex:0];
[self performSelector:sel]; @try {
} [self performSelector:sel];
@catch (NSException* e) { }
[self showErrorText:[e name]]; @catch (NSException* e) {
[self showErrorText:[e name]];
}
} }
}); });
} }
@ -100,6 +102,8 @@
// First of all we need to download WoG archive // First of all we need to download WoG archive
// Downloading should be done on main thread because of callbacks // Downloading should be done on main thread because of callbacks
dispatch_async(dispatch_get_main_queue(), ^{ dispatch_async(dispatch_get_main_queue(), ^{
self->currentArchiveName = @"WoG";
self->currentArchiveFilename = @"/wog.zip";
NSURL* url = [NSURL URLWithString:@"http://download.vcmi.eu/WoG/wog.zip"]; NSURL* url = [NSURL URLWithString:@"http://download.vcmi.eu/WoG/wog.zip"];
self.download = [[NSURLDownload alloc] initWithRequest:[NSURLRequest requestWithURL:url] delegate:self]; self.download = [[NSURLDownload alloc] initWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
}); });
@ -109,13 +113,36 @@
{ {
// Then we unzip downloaded WoG archive // Then we unzip downloaded WoG archive
[self showProgressText:@"Unzipping WoG archive"]; [self showProgressText:@"Unzipping WoG archive"];
if ([self runTask:@"/usr/bin/unzip" withArgs:@[@"-qo", [tempDir stringByAppendingString:@"/wog.zip"], @"-d", outputDir] withWorkingDir:nil withPipe:nil] != 0) { if ([self runTask:@"/usr/bin/unzip" withArgs:@[@"-qo", [tempDir stringByAppendingString:currentArchiveFilename], @"-d", outputDir] withWorkingDir:nil withPipe:nil] != 0) {
return [self showErrorText:@"Failed to unzip WoG archive"]; return [self showErrorText:@"Failed to unzip WoG archive"];
} }
[self nextAction]; [self nextAction];
} }
- (void)downloadVcmiArchive
{
// Than we need to download VCMI archive
// Downloading should be done on main thread because of callbacks
dispatch_async(dispatch_get_main_queue(), ^{
self->currentArchiveName = @"VCMI";
self->currentArchiveFilename = @"/core.zip";
NSURL* url = [NSURL URLWithString:@"http://download.vcmi.eu/core.zip"];
self.download = [[NSURLDownload alloc] initWithRequest:[NSURLRequest requestWithURL:url] delegate:self];
});
}
- (void)unzipVcmiArchive
{
// Then we unzip downloaded VCMI archive
[self showProgressText:@"Unzipping VCMI archive"];
if ([self runTask:@"/usr/bin/unzip" withArgs:@[@"-qo", [tempDir stringByAppendingString:currentArchiveFilename], @"-d", outputDir, @"-x", @"*.json", @"*.txt", @"*.PAL"] withWorkingDir:nil withPipe:nil] != 0) {
return [self showErrorText:@"Failed to unzip VCMI archive"];
}
[self nextAction];
}
- (void)extractGameData - (void)extractGameData
{ {
// Then we extract game data from provided iso files using unshield or from innosetup exe // Then we extract game data from provided iso files using unshield or from innosetup exe
@ -266,6 +293,8 @@
@"validateAction", @"validateAction",
@"downloadWogArchive", @"downloadWogArchive",
@"unzipWogArchive", @"unzipWogArchive",
@"downloadVcmiArchive",
@"unzipVcmiArchive",
@"extractGameData", @"extractGameData",
@"extractionCompleted", @"extractionCompleted",
nil nil