home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-06-21 | 5.3 KB | 230 lines | [TEXT/CWIE] |
- //===================================================================
- //======================= Headers =============================
-
- #include "MenuItem.h"
- #include "GameUtilities.h"
- #include "Screen.h"
- #include "MenuBar.h"
-
- #include "string.h"
-
- //===================================================================
- //======================= Globals =============================
-
-
- rect titleBuffLoc[ kNumberOfTitles ]; // in buffer
- OffScreenBuff title;
- //===================================================================
- //======================= #define =============================
-
-
- //===================================================================
- //======================= Function Prototypes =====================
-
-
- /*----------------------------------------------------------------------------\
-
- InitMenuItems
-
- \----------------------------------------------------------------------------*/
- void InitMenuItems( void )
- {
- MySetRect( &titleBuffLoc[ kAppleMenuTitle ] , 0 , 0 , 30 , 20 );
- MySetRect( &titleBuffLoc[ kAppListMenuTitle ] , 30 , 0 , 60 , 20 );
- MySetRectWH( &titleBuffLoc[ kFileMenuTitle ] , 0 , 20 , 35 , 20 );
- MySetRectWH( &titleBuffLoc[ kEditMenuTitle ] , 35 , 20 , 40 , 20 );
- MySetRectWH( &titleBuffLoc[ kViewMenuTitle ] , 75 , 20 , 40 , 20 );
- MySetRectWH( &titleBuffLoc[ kSpecialMenuTitle ] , 120 , 20 , 56 , 20 );
- MySetRectWH( &titleBuffLoc[ kHelpMenuTitle ] , 176 , 20 , 45 , 20 );
- MySetRectWH( &titleBuffLoc[ kImageMenuTitle ] , 220 , 20 , 55 , 20 );
- MySetRectWH( &titleBuffLoc[ kLayerMenuTitle ] , 0 , 40 , 48 , 20 );
- MySetRectWH( &titleBuffLoc[ kSelectMenuTitle ] , 48 , 40 , 52 , 20 );
- MySetRectWH( &titleBuffLoc[ kFilterMenuTitle ] , 100 , 40 , 48 , 20 );
- MySetRectWH( &titleBuffLoc[ kWindowMenuTitle ] , 148 , 40 , 62 , 20 );
-
- title.LoadPicBuff( 131 );
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: Constructor
-
- \----------------------------------------------------------------------------*/
- MenuItem :: MenuItem( void )
- {
- memset( &titleLoc , 0 , sizeof( titleLoc ) );
- which = 0;
- highlight = false;
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: SetWhichMenu
-
- \----------------------------------------------------------------------------*/
- void MenuItem :: SetWhichMenu( uchar w )
- {
- which = w;
- MenuItemWindow::SetType( w );
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: SetLocation
-
- \----------------------------------------------------------------------------*/
- void MenuItem :: SetLocation( short start )
- {
- titleLoc.top = 0;
- titleLoc.bottom = 20;
- titleLoc.left = start;
-
- titleLoc.right = start;
-
- switch( which )
- {
- case kAppleMenuTitle:
- case kAppListMenuTitle:
- titleLoc.right += 30;
- break;
-
- case kFileMenuTitle:
- titleLoc.right += 35;
- break;
-
- case kEditMenuTitle:
- titleLoc.right += 40;
- break;
-
- case kViewMenuTitle:
- titleLoc.right += 40;
- break;
-
- case kSpecialMenuTitle:
- titleLoc.right += 56;
- break;
-
- case kHelpMenuTitle:
- titleLoc.right += 45;
- break;
-
- case kImageMenuTitle:
- titleLoc.right += 55;
- break;
-
- case kLayerMenuTitle:
- titleLoc.right += 48;
- break;
-
- case kSelectMenuTitle:
- titleLoc.right += 52;
- break;
-
- case kFilterMenuTitle:
- titleLoc.right += 48;
- break;
-
- case kWindowMenuTitle:
- titleLoc.right += 62;
- break;
- }
-
- MenuItemRect( &titleLoc );
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: GetLoc
-
- \----------------------------------------------------------------------------*/
- rect MenuItem :: GetLoc( void )
- {
- return titleLoc;
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: DrawMenu
-
- \----------------------------------------------------------------------------*/
- void MenuItem :: DrawMenu( rect * where )
- {
- if( where == NULL )
- {
-
- if( highlight )
- {
- menuBar.DrawGeneric( &title , &titleBuffLoc[ which ] ,
- &titleLoc , NULL , kDrawInverse ,
- 0 , 0 );
- }
- else
- {
- menuBar.DrawGeneric( &title , &titleBuffLoc[ which ] ,
- &titleLoc , NULL , 0 ,
- 0 , 0 );
- }
- }
- else
- {
- if( highlight )
- {
- menuBar.DrawGeneric( &title , &titleBuffLoc[ which ] ,
- &titleLoc , where , kDrawInverse ,
- 0 , 0 );
- }
- else
- {
- menuBar.DrawGeneric( &title , &titleBuffLoc[ which ] ,
- &titleLoc , where , 0 ,
- 0 , 0 );
- }
- }
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: SetActive
-
- \----------------------------------------------------------------------------*/
- void MenuItem :: SetActive( Boolean h )
- {
- if( h != highlight )
- {
- highlight = h;
-
- AddRectToUpdate();
-
- if( highlight )
- {
- MenuItemWindow::SetActive( true );
- }
- else
- {
- MenuItemWindow::SetActive( false );
- }
- }
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: PointInTitle
-
- \----------------------------------------------------------------------------*/
- Boolean MenuItem :: PointInTitle( point where )
- {
- return SectPtRect( where , titleLoc );
- }
-
- /*----------------------------------------------------------------------------\
-
- MenuItem :: AddRectToUpdate
-
- \----------------------------------------------------------------------------*/
- void MenuItem :: AddRectToUpdate( void )
- {
- screen.AddRectToUpdate( titleLoc );
- }
-
-
-