This is EKApplication.m in view mode; [Download] [Up]
/* * EKApplication * description: a generic object for managing app resources * history: * 5/13/93 [Erik Kay] - created * 5/15/93 [Erik Kay] - added sound and image preloading w/progress bar */ #import "EKApplication.h" #import "EKSoundManager.h" #import "EKProgressView.h" @implementation EKApplication + new { self = [super new]; imageResources = [[List alloc] init]; soundResources = [[List alloc] init]; return self; } // all of these instance variables should be connected up in the nib file - defaultsManager { return defaultsManager; } - infoManager { return infoManager; } - soundManager { return soundManager; } // add an image filename to the image resource list - addImageResource:(const char *)r { //! we cheat here a bit and take advantage of the fact that a list just //! takes id's which are pointers, and therefore, character pointers work //! just fine too. Probably not the best thing to do... [imageResources addObject:(id)NXCopyStringBuffer(r)]; return self; } // add an sound filename to the sound resource list - addSoundResource:(const char *)r { //! we cheat here a bit and take advantage of the fact that a list just //! takes id's which are pointers, and therefore, character pointers work //! just fine too. Probably not the best thing to do... [soundResources addObject:(id)NXCopyStringBuffer(r)]; return self; } // preload resources for the app - loadResources { int i, count, total, progress; const char *str; id img; // set up the progress bar window //! this should be optional too I suppose, considering that this is //! supposed to be a generic object total = [imageResources count] + [soundResources count]; [[progressView setMin:0] setMax:total]; progress = 0; [progressWindow makeKeyAndOrderFront:self]; NXPing(); // actually load the images [progressWindow setTitle:"Loading Images..."]; count = [imageResources count]; for (i = 0; i < count; i++) { str = (const char *)[imageResources objectAt:i]; img = [NXImage findImageNamed:str]; // doing a lock/unlock caches the image [img lockFocus]; [img unlockFocus]; // update the progress bar progress++; [progressView setProgress:progress]; NXPing(); } // actually load/cache the sounds. // we don't actually cache them here like we do for images, but the // current sound manager does a convert as it loads, effectively doing // the cache for us. count = [soundResources count]; [progressWindow setTitle:"Loading Sounds..."]; for (i = 0; i < count; i++) { str = (const char *)[soundResources objectAt:i]; [soundManager addSound:str]; // update the progress bar progress++; [progressView setProgress:progress]; NXPing(); } // all done [progressWindow close]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.