home *** CD-ROM | disk | FTP | other *** search
- // GKHSLocalServer.m
- // under development; anything with ***** is yet to be completed
-
- // This class is the actual high score server for any given game.
- // This subclass handles local high score files.
-
- // I need to do exception handling in here to catch any DO problems,
- // but haven't got around to it yet, so exceptions will currently crash
- // the server. :-< *****
-
- #import <appkit/appkit.h>
- #import <daymisckit/daymisckit.h>
- #import <gamekit/gamekit.h>
- #import <remote/NXProxy.h>
- #import <objc/objc-runtime.h>
- #import <objc/objc-load.h>
-
-
- @implementation GKHSLocalServer
-
- - initForGame:(const char *)name // designated initializer
- {
- if (![super initForGame:name]) return nil;
- if (!gameInfo) { // these are available locally, so set them up now.
- [self setTemplate:[[[NXApp delegate]
- highScoreController] tableProtoType]];
- [self setGameInfo:[[NXApp delegate] gameInfo]];
- }
- return self;
- }
-
- - (const char *)pathToTables
- { // High score files are stored inside the app wrapper.
- // any unloaded slots will be expected to be in the wrapper, too.
- return [NXApp appDirectory];
- }
-
- - (oneway)setGameInfo:(bycopy in id)info
- {
- [super setGameInfo:info];
- // Really need to set up for which table this is ***** right now assume 0
- // This sets up the max # high scores for a local server
- [table setMaxScoresPerPlayer:[gameInfo maxScoresPerPlayerTable:0 net:NO]];
- #ifdef NOISYDEBUG
- fprintf(stderr, "GKHSLocalServer: maxScorePerPlayer is %d.\n",
- [gameInfo maxScoresPerPlayerTable:0 net:NO]);
- #endif
- [self save];
- return self;
- }
-
- - save
- { // make sure that the high score file is world read/write so everyone
- // can alter it (and save their scores)
- char *cmd = malloc(1024);
- [super save];
- sprintf(cmd, "chmod 666 %s", [scoreFile stringValue]);
- system(cmd);
- free(cmd);
- return self;
- }
-
- @end