home *** CD-ROM | disk | FTP | other *** search
-
- /* Generated by Interface Builder */
-
- // A generic class used to handle lots of the logic found in a game like
- // pausing, misc. states, backgrounds, sound on/off flagging, etc. It has
- // rudimentary key and mouse handling methods; it's up to a subclass to
- // define them further as is appropriate.
-
- #import <appkit/View.h> // super class
-
- #define BEZELSIZE 8.0 // width of the bezel border...
-
- #define GRANULARITY 0.01 // timer granularity. Screen should be updated
- #define CYCLES 1 // every 0.05 sec., so here, 2*0.025 = 0.05
- #define SPEEDUP 20 // how often to speed up game (every x columns)
- #define SPEEDUPDELTA 2 // how how long until next speedup
- #define SPEEDUPFACTOR 0.95 // how much to speed up at a time
- #define INITCY 8 // initial colCycles = INITCY * CYCLES
-
- // directions
- #define LEFT 3
- #define RIGHT 1
- #define UP 0
- #define DOWN 2
- #define NORTHEAST 4
- #define NORTHWEST 5
- #define SOUTHEAST 6
- #define SOUTHWEST 7
-
- // states -- tells autoUpdate what to do; a subclass of this view would add
- // whatever it needs in the way of new states.
- #define NORMALSTATE 0 // player's pill dropping
- #define GAMEOVER 1 // things still blink, etc.
-
- #define WAITFORDEMO 600 // Wait x cycles before gameover to start demo
- // 600 cycles is approx. 30 sec, more or less.
-
- @interface GameView:View
- {
- id backGround;
-
- id preferences; // PreferencesBrain
- id controller; // Game controller reports level, etc.
- // of class "GameBrain"
- id animator; // Animator instance
- id listenerId; // Grabs Workspace messages for drag and drop.
-
- int state; // current state
- int cycles; // used to blink things, etc. -- counts frames
- int demoWait; // how many cycles to wait before demo
- char keys[5]; // keys to play game
- BOOL paused; // game is paused if == YES
- BOOL soundEffects; // == YES if sound effects on
- BOOL music; // == YES if music on
- BOOL grayBorder; // == YES if gray border is on
- BOOL doingBorder; // == YES if turning border on/off
- BOOL demoMode; // way to keep brain for setting
- // high scores from demo mode
- BOOL backIsColor;
- NXColor backColor;
- char *appPath; // pathname to inside of .app wrapper
- char *iconPathList; // pathnames of drag/drop files for background
- }
-
- // initialization and start up functions
- - initFrame:(const NXRect *)frm; // initialize instance
- - loadPix; // gameBrain calls this from appDidInit
- - animate:sender; // start animation-call from appDidInit
-
- // return info about game state and so on...
- - (int)gameState; // returns current state
- - (BOOL)demoMode; // if last game was demo or in demo now
- - (float)speedTime; // returns current speed
- - (BOOL)isPaused; // tell caller if we're paused
- - autoUpdate:sender; // sent by timer
- - pause:sender; // pause game
- - unpause:sender; // unpause game
- - soundOn; // turn on sound effects
- - soundOff; // turn off sound effects
- - musicOn; // turn on music
- - musicOff; // turn off music
- - getPreferences; // set up preference inst. variables
-
- // various view methods; many are overridden from the default NeXTstep
- // methods... basically, deal with various event types.
- - (BOOL)acceptsFirstResponder; // to grab keyboard events
- - updateSelf:(NXRect *)rects :(int)rectCount; //used by internals for speed
- - (BOOL)acceptsFirstMouse; // let us grab activating mousedowns
- - mouseDown:(NXEvent *)event; // handle mouseDown events.
- - keyDown:(NXEvent *)myevent; // handle keyDown events.
- - setKey:(int)keyIndex val:(char)keyVal; // change key we respond to
- - setUpScreen; // set up the game screen
- - changeBorder:(BOOL)borderOn; // move view about in the window & do sizing
- - restartGame; // reset internal variables to restart level
-
- // background handling methods. Set various files, render the background,
- // resize it, and deal with drag and drop colors. The specific background
- // stuff comes from BreakApp; the color stuff and any modifications are mine.
- - setBackgroundFile:(const char *)fileName andRemember:(BOOL)remember;
- - changeBackground:sender;
- - revertBackground:sender;
- - sizeTo:(NXCoord)width :(NXCoord)height;
- - back1:sender;
- - back2:sender;
- - back3:sender;
- - drawBackground:(NXRect *)rect;
- - acceptColor:(NXColor)color atPoint:(NXPoint *)aPoint;
- - writeColor;
-
- // Icon dragging methods
- - registerWindow;
- - unregisterWindow;
- - (int)iconEntered:(int)windowNum at:(double)x :(double)y
- iconWindow:(int)iconWindowNum iconX:(double)iconX iconY:(double)iconY
- iconWidth:(double)iconWidth iconHeight:(double)iconHeight
- pathList:(char *)pathList;
- - (int)iconReleasedAt:(double)x :(double)y ok:(int *)flag;
-
- @end
-