/************************************************************ * * * menu_mod.h * * * * * LPGE 1997 * * * * Copyright (C) 1996 Sony Computer Entertainment Inc. * * All Rights Reserved * * * ***********************************************************/ #ifndef MENU_MOD_H_INCLUDED /*************************************************************************** includes ***************************************************************************/ #include "sys_libs.h" /*************************************************************************** constants and structures ***************************************************************************/ #define CHOOSE_INTEGER 1 #define TAKE_ACTION 2 typedef void(*VOID_FROM_INT)(int arg); #define MAX_MENU_STRING_LENGTH 32 #define MAX_STRINGS_PER_MENU_OPTION 64 typedef struct { int type; char string[MAX_MENU_STRING_LENGTH]; int lowest, highest; // integer variable bounds int *variable; // refer int stringsFlag; // bool char *strings[MAX_STRINGS_PER_MENU_OPTION]; // names for values int actionLabel; int instantResponseFlag; VOID_FROM_INT functionPointer; } MenuOption; #define MAX_OPTIONS_PER_SCREEN 8 // hard-wired: start and select #define QUIT_BACK_TO_LEVEL_ABOVE -999 #define TIMEOUT_QUIT_CODE -888 typedef struct { int numberOptions; MenuOption *options[MAX_OPTIONS_PER_SCREEN]; int selectedOption; // 0 to (numberOptions-1) int actionPause; // in frames int integerChoicePause; int framesSinceLastChoice; int framesSinceCreation; int timeoutTime; // in frames int active; // boolean int quitCode; // -1 is dummy value int backgroundDrawEffectFlag; } MenuScreen; #define SHIP_CIRCLING_VIEW 1001 #define SHIP_CUBOID_VIEW 1002 #define SHIP_SPHERICAL_VIEW 1003 #define SHIP_HELICAL_VIEW 1004 #define SHIP_LAZY_ROTATION_VIEW 1005 #define SHIP_ROTATES_SLOWLY 1006 #define FIRST_EFFECT_SWITCHER 1007 #define SECOND_EFFECT_SWITCHER 1008 #define TWO_SHIPS_ROTATE_SLOWLY 1009 #define NUMBER_BASE_MENU_SUB_MODES 6 #define BASE_MENU_SUB_MODE (SHIP_CIRCLING_VIEW) #define EXPLODING_LINES 2001 #define NEEDLETHREAD_LINES 2002 #define SPRITE_WALL_FADE_IN_AND_OUT 2003 #define SPIRAL_EFFECT 2004 #define SPRITE_WALL_MERGE_THROUGH_SPRITES 2005 #define NUMBER_DEEP_BACKGROUND_SUB_MODES 3 #define BASE_DEEP_BACKGROUND_SUB_MODE (EXPLODING_LINES) /*************************************************************************** prototypes ***************************************************************************/ void CreateMenuOption (MenuOption *option, int type, char *string, int lowest, int highest, int actionLabel, int *variable); void SetMenuOptionString (MenuOption *option, int whichString, char *string); void SetMenuOptionInstantResponse (MenuOption *option, VOID_FROM_INT functionPointer); void SetMenuScreenTimeoutTime (MenuScreen *screen, int time); void SetMenuScreenPauseTimes (MenuScreen *screen, int actionPause, int integerChoicePause); void SetMenuScreenBackgroundEffect (MenuScreen *screen, int effectID); void CreateMenuScreen (MenuScreen *screen, int numberOptions, MenuOption *orderedOptionList); void DrawMenuScreen (MenuScreen *screen); void HandleMenuScreenControls (MenuScreen *screen); void HandleMenuScreen (MenuScreen *screen); void InitialiseMenuScreenBackgroundGraphics (void); void SetUpMenuScreenBackgroundGraphics (int effectID); void CleanUpMenuScreenBackgroundGraphics (int effectID); void HandleMenuScreenBackgroundGraphics (int backgroundGraphicsEffectID, GsOT *ot); #define MENU_MOD_H_INCLUDED 1 #endif