DZMenu.c

/*
 *  File:       DZMenu.c
 *
 *  Copyright © 1996 Apple Computer, Inc.
 */
 
#include <Dialogs.h>
#include <Menus.h>
 
#include "DZDisplay.h"
#include "DZInput.h"
#include "DZMain.h"
#include "DZMenu.h"
#include "DZGame.h"
#include "DZResource.h"
#include "DZSound.h"
 
 
static void SelectAppleMenu(
    short           inItem);
 
static void SelectFileMenu(
    short           inItem);
 
 
/* =============================================================================
 *      Menu_Init (external)
 *
 *  Initializes our menus.
 * ========================================================================== */
void Menu_Init(
    void)
{
    SetMenuBar(GetNewMBar(kMBarID_Main));
    AppendResMenu(GetMenuHandle(kMenuID_Apple), 'DRVR');
    DrawMenuBar();
}
 
 
/* =============================================================================
 *      Menu_Exit (external)
 *
 *  Cleans up.
 * ========================================================================== */
void Menu_Exit(
    void)
{
}
 
 
/* =============================================================================
 *      Menu_Select (external)
 *
 *  Takes action on the given menu item.
 * ========================================================================== */
void Menu_Select(
    short           inMenuID,
    short           inItem)
{
    switch (inMenuID)
    {
        case kMenuID_Apple:
            SelectAppleMenu(inItem);
        break;
        
        case kMenuID_File:
            SelectFileMenu(inItem);
        break;
    }
 
    HiliteMenu(0);
}
 
 
/* =============================================================================
 *      SelectAppleMenu (internal)
 *
 *  Takes action on the given Apple menu item.
 * ========================================================================== */
void SelectAppleMenu(
    short           inItem)
{
    switch (inItem)
    {
        case kAppleItem_About:
            Display_Activate(false);
            Alert(kAlrtID_About, NULL);
            Display_Activate(true);
        break;
    }
}
 
 
/* =============================================================================
 *      SelectFileMenu (internal)
 *
 *  Takes action on the given File menu item.
 * ========================================================================== */
void SelectFileMenu(
    short           inItem)
{
    switch (inItem)
    {
        case kFileItem_StartGame:
            switch (Game_GetState())
            {
                case kGameState_Playing:
                    // do nothing -- should be disabled
                break;
                
                case kGameState_Paused:
                    Game_SetState(kGameState_Stopped);
                    Game_SetState(kGameState_Playing);
                break;
                
                case kGameState_Stopped:
                    Game_SetState(kGameState_Playing);
                break;
            }
        break;
        
        case kFileItem_EndGame:
            switch (Game_GetState())
            {
                case kGameState_Playing:
                case kGameState_Paused:
                    Game_SetState(kGameState_Stopped);
                break;
                
                case kGameState_Stopped:
                    // do nothing -- should be disabled
                break;
            }
        break;
        
        case kFileItem_PauseGame:
            switch (Game_GetState())
            {
                case kGameState_Playing:
                    Game_SetState(kGameState_Paused);
                break;
                
                case kGameState_Paused:
                    Game_SetState(kGameState_Playing);
                break;
                
                case kGameState_Stopped:
                    // do nothing -- should be disabled
                break;
            }
        break;
        
        case kFileItem_ConfigInput:
            Display_Activate(false);
            Input_Configure();
            Display_Activate(true);
        break;
        
        case kFileItem_Config3DSound:
            Display_Activate(false);
            Sound_Configure();
            Display_Activate(true);
        break;
        
        case kFileItem_Quit:
            Main_LastRoundup();
        break;
    }
}