Main Page | Alphabetical List | Compound List | File List | Compound Members | File Members

GMENU.H File Reference

#include "Genesis.h"
#include "Menu.h"
#include "ModeList.h"

Go to the source code of this file.

Defines

#define BOT_UPDATE

Enumerations

enum  {
  GMenu_NoMenu = 0, GMenu_DoNothing, GMenu_MainMenu, GMenu_SingleMapMenu,
  GMenu_UserSinglePlayerGame, GMenu_SinglePlayerGame, GMenu_SinglePlayerGame1, GMenu_SinglePlayerGame2,
  GMenu_SinglePlayerGame3, GMenu_Bots, GMenu_BotsMenu, GMenu_CreateMultiPlayerGame,
  GMenu_CreateMenu, GMenu_IPAddress, GMenu_StartGame, GMenu_StartGame1,
  GMenu_StartGame2, GMenu_JoinMultiPlayerGame, GMenu_JoinMenu, GMenu_IPEntry,
  GMenu_Connect, GMenu_Options, GMenu_OptionsMenu, GMenu_DisplayMode,
  GMenu_Volume, GMenu_Brightness, GMenu_NameEntry, GMenu_Control,
  GMenu_ControlMenu, GMenu_KeyShoot, GMenu_KeyJump, GMenu_KeyStrafeLeft,
  GMenu_KeyStrafeRight, GMenu_KeyForward, GMenu_KeyBackward, GMenu_KeyNextWeapon,
  GMenu_MouseInvert, GMenu_BotSlider, GMenu_ShowStatistics, GMenu_Credits,
  GMenu_CreditsMenu, GMenu_DriverMenu, GMenu_QuitGame, GMenu_Driver = 1000,
  GMenu_Mode = 2000, GMenu_ModeMenu = 3000, GMenu_NoIdRequired = 4000
}

Functions

Menu_TGMenu_GetMenu (int32 Id)
geBoolean GMenu_IsAMenuActive (void)
void GMenu_SetActive (geBoolean Active)
geBoolean GMenu_Create (geEngine *Engine, ModeList *List, int ListLength, int ListSelection)
void GMenu_DestroyAllData (void)
void GMenu_Destroy (void)
geBoolean GMenu_Draw (void)
int32 GMenu_Key (int32 Key, int32 lParam)

Variables

float UserGamma


Define Documentation

#define BOT_UPDATE
 

Definition at line 23 of file GMENU.H.


Enumeration Type Documentation

anonymous enum
 

Enumeration values:
GMenu_NoMenu 
GMenu_DoNothing 
GMenu_MainMenu 
GMenu_SingleMapMenu 
GMenu_UserSinglePlayerGame 
GMenu_SinglePlayerGame 
GMenu_SinglePlayerGame1 
GMenu_SinglePlayerGame2 
GMenu_SinglePlayerGame3 
GMenu_Bots 
GMenu_BotsMenu 
GMenu_CreateMultiPlayerGame 
GMenu_CreateMenu 
GMenu_IPAddress 
GMenu_StartGame 
GMenu_StartGame1 
GMenu_StartGame2 
GMenu_JoinMultiPlayerGame 
GMenu_JoinMenu 
GMenu_IPEntry 
GMenu_Connect 
GMenu_Options 
GMenu_OptionsMenu 
GMenu_DisplayMode 
GMenu_Volume 
GMenu_Brightness 
GMenu_NameEntry 
GMenu_Control 
GMenu_ControlMenu 
GMenu_KeyShoot 
GMenu_KeyJump 
GMenu_KeyStrafeLeft 
GMenu_KeyStrafeRight 
GMenu_KeyForward 
GMenu_KeyBackward 
GMenu_KeyNextWeapon 
GMenu_MouseInvert 
GMenu_BotSlider 
GMenu_ShowStatistics 
GMenu_Credits 
GMenu_CreditsMenu 
GMenu_DriverMenu 
GMenu_QuitGame 
GMenu_Driver 
GMenu_Mode 
GMenu_ModeMenu 
GMenu_NoIdRequired 

Definition at line 34 of file GMENU.H.

00035 {
00036         GMenu_NoMenu = 0,
00037         GMenu_DoNothing,
00038         GMenu_MainMenu,
00039 
00040         GMenu_SingleMapMenu,
00041                 GMenu_UserSinglePlayerGame,
00042                 GMenu_SinglePlayerGame,
00043                 GMenu_SinglePlayerGame1,
00044                 GMenu_SinglePlayerGame2,
00045                 GMenu_SinglePlayerGame3,
00046                 #ifdef BOT_UPDATE
00047                 GMenu_Bots,
00048                         GMenu_BotsMenu,
00049                 #endif
00050 
00051         GMenu_CreateMultiPlayerGame,
00052                 GMenu_CreateMenu,
00053                         GMenu_IPAddress,
00054                         GMenu_StartGame,
00055                         GMenu_StartGame1,
00056                         GMenu_StartGame2,
00057 
00058         GMenu_JoinMultiPlayerGame,
00059                 GMenu_JoinMenu,
00060                         GMenu_IPEntry,
00061                         GMenu_Connect,
00062 
00063 
00064         GMenu_Options,
00065                 GMenu_OptionsMenu,
00066                         GMenu_DisplayMode,
00067                         GMenu_Volume,
00068                         GMenu_Brightness,
00069                         GMenu_NameEntry,
00070                         GMenu_Control,
00071                                 GMenu_ControlMenu,
00072                                         GMenu_KeyShoot,
00073                                         GMenu_KeyJump,
00074                                         GMenu_KeyStrafeLeft,
00075                                         GMenu_KeyStrafeRight,
00076                                         GMenu_KeyForward,
00077                                         GMenu_KeyBackward,
00078                                         GMenu_KeyNextWeapon,
00079                                         GMenu_MouseInvert,
00080             GMenu_BotSlider,
00081             GMenu_ShowStatistics,
00082         GMenu_Credits,
00083                 GMenu_CreditsMenu,
00084 
00085         GMenu_DriverMenu,
00086         GMenu_QuitGame,
00087 
00088         
00089         GMenu_Driver=1000,              
00090                 // id space between these identifiers reserved 
00091         GMenu_Mode=2000,
00092                 // id space between these identifiers reserved 
00093         GMenu_ModeMenu=3000,
00094                 // id space between these identifiers reserved 
00095         GMenu_NoIdRequired=4000,
00096 
00097 };


Function Documentation

geBoolean GMenu_Create geEngine Engine,
ModeList List,
int  ListLength,
int  ListSelection
 

Definition at line 356 of file GMENU.C.

References MenuItemToggle_T::ActiveItem, ActiveMenu, MenuItemGraphic_T::Art, MenuItemField_T::AwaitingChange, MenuItemString_T::AwaitingInput, MenuItemSlider_T::Bar, BotPercent, BotsMenu, ControlMenu, CreateNetMenu, CreditsArt, CreditsMenu, Engine, MenuItemField_T::FieldName, MenuItemField_T::FieldNameLength, MenuItemField_T::FieldTextData, MenuItemField_T::FieldTextDataLength, Font_Default, Font_DefaultSelect, GAMMA_MAXIMUM, GE_FALSE, GE_TRUE, geBitmap_CreateFromFileName(), geBitmap_SetColorKey(), geBoolean, geEngine_AddBitmap(), geErrorLog_AddString, GMenu_Bots, GMenu_BotSlider, GMenu_BotsMenu, GMenu_Brightness, GMenu_BuildDisplayModeMenus(), GMenu_Connect, GMenu_Control, GMenu_ControlMenu, GMenu_CreateMenu, GMenu_CreateMultiPlayerGame, GMenu_Credits, GMenu_CreditsMenu, GMenu_DestroyAllData(), GMenu_DisplayMode, GMenu_GetKeyLParam(), GMenu_IPAddress, GMenu_IPEntry, GMenu_JoinMenu, GMenu_JoinMultiPlayerGame, GMenu_KeyBackward, GMenu_KeyForward, GMenu_KeyJump, GMenu_KeyNextWeapon, GMenu_KeyShoot, GMenu_KeyStrafeLeft, GMenu_KeyStrafeRight, GMenu_MainMenu, GMenu_MouseInvert, GMenu_NameEntry, GMenu_NoIdRequired, GMenu_Options, GMenu_OptionsMenu, GMenu_QuitGame, GMenu_ShowStatistics, GMenu_SingleMapMenu, GMenu_SinglePlayerGame, GMenu_SinglePlayerGame1, GMenu_SinglePlayerGame2, GMenu_StartGame1, GMenu_StartGame2, GMenu_UserSinglePlayerGame, GMENU_VERSION, GMenu_Volume, HostInit, MenuItemSlider_T::Increment, int32, JoinMenu, KeyLut, KeyMapping, List, MainFS, MainMenu, Menu_AddItem(), Menu_Create(), Menu_ItemField, Menu_ItemGraphic, Menu_ItemSlider, Menu_ItemString, Menu_ItemText, Menu_ItemToggle, MenuBotCount, MouseInvert, MyGetKeyNameText(), MenuItemToggle_T::NormalFont, MenuItemString_T::NormalFont, MenuItemField_T::NormalFont, MenuItemSlider_T::NormalFont, MenuItemText_T::NormalFont, NULL, OptionsMenu, MenuItemSlider_T::Percent, MenuItemSlider_T::Range, SaveEngine, MenuItemToggle_T::SelectFont, MenuItemString_T::SelectFont, MenuItemField_T::SelectFont, MenuItemSlider_T::SelectFont, MenuItemText_T::SelectFont, ShowStats, SingleMapMenu, MenuItemSlider_T::Slack, SliderBar, SliderRange, SMALL_CREDITS_CUTOFF_WIDTH, MenuItemString_T::StringData, MenuItemString_T::StringDataLength, MenuItemString_T::StringLabel, MenuItemString_T::StringLabelLength, MenuItemText_T::Text, MenuItemText_T::TextLength, MenuItemToggle_T::ToggleData1, MenuItemToggle_T::ToggleData1Length, MenuItemToggle_T::ToggleData2, MenuItemToggle_T::ToggleData2Length, MenuItemToggle_T::ToggleLabel, MenuItemToggle_T::ToggleLabelLength, UserGamma, Host_Init::UserLevel, MenuItemGraphic_T::x, and MenuItemGraphic_T::y.

Referenced by WinMain().

00361 {
00362 
00363         // locals
00364         MenuItemText_T          TextItem;
00365         MenuItemSlider_T        SliderItem;
00366         MenuItemSlider_T        SaveSliderItem;
00367         MenuItemField_T         FieldItem;
00368         MenuItemString_T        StringItem;
00369         MenuItemGraphic_T       GraphicItem;
00370         MenuItemToggle_T        ToggleItem;
00371         char                            KeyText[64];
00372         int32                           i;
00373         int32                           Width, Top, Bottom;
00374         extern Host_Init                HostInit;
00375         geBoolean                       success;
00376 
00377         assert( List != NULL );
00378         assert( ListLength >=0 );
00379         assert( ListSelection >=0 );
00380         assert( ListSelection < ListLength );
00381 
00382         // fail if we have bad data
00383         if ( Engine == NULL )
00384         {
00385                 assert( 0 );
00386                 goto ExitWithError;
00387         }
00388 
00389         SaveEngine = Engine;
00390 
00391         if (List[ListSelection].Width<SMALL_CREDITS_CUTOFF_WIDTH)
00392                 {
00393                                 //load decal art
00394                         CreditsArt = geBitmap_CreateFromFileName(MainFS, "Bmp\\Menu\\Credits0.Bmp");
00395                         
00396                         if (!CreditsArt)
00397                         {
00398                                 geErrorLog_AddString(-1, "GMenu_Create:  geBitmap_CreateFromFile failed:", "Bmp\\Menu\\Credits0.Bmp");
00399                                 goto ExitWithError;
00400                         }
00401 
00402                         Width = List[ListSelection].Width;
00403                         Top = 0; 
00404                         Bottom = List[ListSelection].Height - 1 - 30;
00405                 }
00406         else
00407                 {
00408                         //load decal art
00409                         CreditsArt = geBitmap_CreateFromFileName(MainFS, "Bmp\\Menu\\Credits1.Bmp");
00410 
00411                         if (!CreditsArt)
00412                         {
00413                                 geErrorLog_AddString(-1, "GMenu_Create:  geBitmap_CreateFromFile failed:","Bmp\\Menu\\Credits1.Bmp");
00414                                 goto ExitWithError;
00415                         }
00416 
00417                         Width = List[ListSelection].Width;
00418                         Top = 0;
00419                         Bottom = List[ListSelection].Height - 1 - 60;
00420                 }
00421 
00422         // Add the bitmap to the world
00423         if (!geEngine_AddBitmap(Engine, CreditsArt))
00424         {
00425                 geErrorLog_AddString(-1, "GMenu_Create:  geEngine_AddBitmap failed for CreditsArt.", NULL);
00426                 goto ExitWithError;
00427         }
00428 
00429         // init keyboard lookup table
00430         for ( i = 0; i < 256; i++ )
00431         {
00432                 KeyLut[i] = i;
00433         }
00434 
00435         {
00436                 FILE    *f;
00437 
00438                 f = fopen("GMenu.Dat", "rb");
00439 
00440                 if (f)
00441                 {
00442                         int     Version;
00443 
00444                         fread(&Version, sizeof(Version), 1, f);
00445 
00446                         if (Version == GMENU_VERSION)
00447                         {
00448                                 // MLS: no error handling!
00449                                 fread(&(KeyMapping[0].Action), sizeof(KeyMapping), 1, f);
00450                                 fread(KeyLut, sizeof(KeyLut), 1, f);
00451                                 fread(&MouseInvert, sizeof(MouseInvert), 1, f);
00452                 fread(&MenuBotCount, sizeof(MenuBotCount), 1, f);
00453                                 if (MenuBotCount > 4)
00454                                         MenuBotCount = 4;
00455                         }
00456 
00457                         fclose(f);
00458                 }
00459         }
00460 
00461         // load slider art
00462         SliderBar = geBitmap_CreateFromFileName(MainFS, "Bmp\\Menu\\SliderB.Bmp");
00463         success = geBitmap_SetColorKey(SliderBar,GE_TRUE,255,GE_FALSE);
00464         assert(success);
00465 
00466         if (!SliderBar)
00467         {
00468                 geErrorLog_AddString(-1, "GMenu_Create:  geBitmap_CreateFromFile failed:","Bmp\\Menu\\SliderB.Bmp");
00469                 goto ExitWithError;
00470         }
00471 
00472         if (!geEngine_AddBitmap(Engine, SliderBar))
00473         {
00474                 geErrorLog_AddString(-1, "GMenu_Create:  geEngine_AddBitmap failed:", "Bmp\\Menu\\SliderB.Bmp");
00475                 goto ExitWithError;
00476         }
00477 
00478         SliderRange = geBitmap_CreateFromFileName(MainFS, "Bmp\\Menu\\SliderR.Bmp");
00479         success = geBitmap_SetColorKey(SliderRange,GE_TRUE,255,GE_FALSE);
00480         assert(success);
00481 
00482         if (!SliderRange)
00483         {
00484                 geErrorLog_AddString(-1, "GMenu_Create:  geBitmap_CreateFromFile failed:", "Bmp\\Menu\\SliderR.Bmp");
00485                 goto ExitWithError;
00486         }
00487 
00488         if (!geEngine_AddBitmap(Engine, SliderRange))
00489         {
00490                 geErrorLog_AddString(-1, "GMenu_Create:  geEngine_AddBitmap failed:", "Bmp\\Menu\\SliderR.Bmp");
00491                 goto ExitWithError;
00492         }
00493 
00494         // init common item data
00495         TextItem.NormalFont = Font_Default;
00496         TextItem.SelectFont = Font_DefaultSelect;
00497         SliderItem.NormalFont = Font_Default;
00498         SliderItem.SelectFont = Font_DefaultSelect;
00499         SliderItem.Range = SliderRange;
00500         SliderItem.Bar = SliderBar;
00501         SliderItem.Slack = 14;
00502         SliderItem.Percent = 0.7f;
00503     SliderItem.Increment = 0.05f;
00504         FieldItem.NormalFont = Font_Default;
00505         FieldItem.SelectFont = Font_DefaultSelect;
00506         FieldItem.AwaitingChange = GE_FALSE;
00507         StringItem.NormalFont = Font_Default;
00508         StringItem.SelectFont = Font_DefaultSelect;
00509         StringItem.AwaitingInput = GE_FALSE;
00510 
00511         //
00512         // create main menu
00513         //
00514 
00515 
00516         MainMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_MainMenu );
00517         if ( MainMenu == NULL )
00518         {
00519                 assert( 0 );
00520                 goto ExitWithError;
00521         }
00522 
00523 
00524         // add items to the menu
00525         TextItem.Text = "Single Player Game";
00526         TextItem.TextLength = strlen( TextItem.Text );
00527         Menu_AddItem( MainMenu, Menu_ItemText, GMenu_SinglePlayerGame, &TextItem );
00528 
00529         TextItem.Text = "Create Multi Player Game";
00530         TextItem.TextLength = strlen( TextItem.Text );
00531         Menu_AddItem( MainMenu, Menu_ItemText, GMenu_CreateMultiPlayerGame, &TextItem );
00532 
00533         TextItem.Text = "Join Multi Player Game";
00534         TextItem.TextLength = strlen( TextItem.Text );
00535         Menu_AddItem( MainMenu, Menu_ItemText, GMenu_JoinMultiPlayerGame, &TextItem );
00536 
00537         TextItem.Text = "Options";
00538         TextItem.TextLength = strlen( TextItem.Text );
00539         Menu_AddItem( MainMenu, Menu_ItemText, GMenu_Options, &TextItem );
00540 
00541         TextItem.Text = "Credits";
00542         TextItem.TextLength = strlen( TextItem.Text );
00543         Menu_AddItem( MainMenu, Menu_ItemText, GMenu_Credits, &TextItem );
00544 
00545         TextItem.Text = "Quit";
00546         TextItem.TextLength = strlen( TextItem.Text );
00547         Menu_AddItem( MainMenu, Menu_ItemText, GMenu_QuitGame, &TextItem );
00548 
00549 
00550         //
00551         // create main menu
00552         //
00553         SingleMapMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_SingleMapMenu );
00554         if ( SingleMapMenu == NULL )
00555         {
00556                 assert( 0 );
00557                 goto ExitWithError;
00558         }
00559 
00560 #ifdef BOT_UPDATE
00561         if (HostInit.UserLevel[0])
00562                 {
00563                 // add items to the menu
00564                 static char Name[256];
00565 
00566                 if (!strstr(HostInit.UserLevel,"Levels\\"))
00567                         assert(0); // didn't find prefix
00568 
00569                 sprintf(Name, "User Level %s", &HostInit.UserLevel[strlen("Levels\\")]);
00570                 TextItem.Text = Name;
00571                 TextItem.TextLength = strlen( TextItem.Text );
00572                 Menu_AddItem( SingleMapMenu, Menu_ItemText, GMenu_UserSinglePlayerGame, &TextItem );
00573                 }
00574 
00575         // add items to the menu
00576         TextItem.Text = "The Mine";
00577         TextItem.TextLength = strlen( TextItem.Text );
00578         Menu_AddItem( SingleMapMenu, Menu_ItemText, GMenu_SinglePlayerGame1, &TextItem );
00579 
00580         // add items to the menu
00581         TextItem.Text = "Physics Mania";
00582         TextItem.TextLength = strlen( TextItem.Text );
00583         Menu_AddItem( SingleMapMenu, Menu_ItemText, GMenu_SinglePlayerGame2, &TextItem );
00584 
00585         /*
00586         // add items to the menu
00587         TextItem.Text = "The Gallery";
00588         TextItem.TextLength = strlen( TextItem.Text );
00589         Menu_AddItem( SingleMapMenu, Menu_ItemText, GMenu_SinglePlayerGame3, &TextItem );
00590         */
00591 
00592         //
00593         // create bots menu
00594         //
00595         BotsMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_BotsMenu );
00596         if ( BotsMenu == NULL )
00597         {
00598                 assert( 0 );
00599                 goto ExitWithError;
00600         }
00601 
00602         
00603         
00604         // add items to the menu
00605         TextItem.Text = "Start Game";
00606         TextItem.TextLength = strlen( TextItem.Text );
00607         Menu_AddItem( BotsMenu, Menu_ItemText, GMenu_Bots, &TextItem );
00608 
00609         // add items to the menu
00610     SaveSliderItem = SliderItem;
00611     SliderItem.Increment = 1.0f/4;
00612         { //{}
00613         static char TargetText[20];
00614         SliderItem.Text = TargetText;
00615         }
00616         assert( MenuBotCount <= 99 && MenuBotCount >= 0);
00617         sprintf(SliderItem.Text, "Bots %2d \0",MenuBotCount);
00618         SliderItem.Percent = BotPercent = (MenuBotCount * SliderItem.Increment);
00619         SliderItem.TextLength = strlen( SliderItem.Text );
00620         Menu_AddItem( BotsMenu, Menu_ItemSlider, GMenu_BotSlider, &SliderItem );
00621     SliderItem = SaveSliderItem;
00622 
00623 #else
00624         // add items to the menu
00625         TextItem.Text = "The Mine";
00626         TextItem.TextLength = strlen( TextItem.Text );
00627         Menu_AddItem( SingleMapMenu, Menu_ItemText, GMenu_SinglePlayerGame1, &TextItem );
00628 
00629         // add items to the menu
00630         TextItem.Text = "Physics Mania";
00631         TextItem.TextLength = strlen( TextItem.Text );
00632         Menu_AddItem( SingleMapMenu, Menu_ItemText, GMenu_SinglePlayerGame2, &TextItem );
00633 #endif
00634 
00635 
00636 
00637         //
00638         // create options menu
00639         //
00640         OptionsMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_OptionsMenu );
00641         if ( OptionsMenu == NULL )
00642         {
00643                 assert( 0 );
00644                 goto ExitWithError;
00645         }
00646 
00647         // add items to the menu
00648 
00649         TextItem.Text = "Display Mode ";
00650         TextItem.TextLength = strlen(TextItem.Text);
00651         Menu_AddItem( OptionsMenu, Menu_ItemText, GMenu_DisplayMode, &TextItem );
00652 
00653         if (GMenu_BuildDisplayModeMenus(Engine,List,ListLength,ListSelection,Width,Top,Bottom)==GE_FALSE)
00654                 {
00655                         geErrorLog_AddString(-1,"Failed to build display mode menus",TextItem.Text);
00656                         goto ExitWithError;
00657                 }
00658 
00659         SliderItem.Text = "Volume ";
00660         SliderItem.TextLength = strlen( SliderItem.Text );
00661         Menu_AddItem( OptionsMenu, Menu_ItemSlider, GMenu_Volume, &SliderItem );
00662 
00663         StringItem.StringLabel = "Player Name: ";
00664         StringItem.StringLabelLength = strlen( StringItem.StringLabel );
00665         //strcpy( StringItem.StringData, PlayerName);
00666         strcpy( StringItem.StringData, "Unknown");
00667         StringItem.StringDataLength = strlen( StringItem.StringData );
00668         Menu_AddItem( OptionsMenu, Menu_ItemString, GMenu_NameEntry, &StringItem );
00669 
00670         SliderItem.Text = "Brightness ";
00671         SliderItem.TextLength = strlen( SliderItem.Text );
00672 #if 1 // <>
00673         SliderItem.Percent = UserGamma / GAMMA_MAXIMUM;
00674 #endif
00675         Menu_AddItem( OptionsMenu, Menu_ItemSlider, GMenu_Brightness, &SliderItem );
00676 
00677         TextItem.Text = "Customize Controls";
00678         TextItem.TextLength = strlen( TextItem.Text );
00679         Menu_AddItem( OptionsMenu, Menu_ItemText, GMenu_Control, &TextItem );
00680 
00681 //#ifndef BOT_UPDATE
00682     SaveSliderItem = SliderItem;
00683     SliderItem.Increment = 1.0f/4;
00684         { //{}
00685         static char TargetText2[20];
00686         SliderItem.Text = TargetText2;
00687         }
00688         assert( MenuBotCount <= 99 && MenuBotCount >= 0);
00689         sprintf(SliderItem.Text, "Bots %2d \0",MenuBotCount);
00690         SliderItem.Percent = BotPercent = (MenuBotCount * SliderItem.Increment);
00691         SliderItem.TextLength = strlen( SliderItem.Text );
00692         Menu_AddItem( OptionsMenu, Menu_ItemSlider, GMenu_BotSlider, &SliderItem );
00693     SliderItem = SaveSliderItem;
00694 //#endif
00695 
00696         ToggleItem.NormalFont = Font_Default;
00697         ToggleItem.SelectFont = Font_DefaultSelect;
00698         ToggleItem.ToggleLabel = "Frame Statistics  ";
00699         ToggleItem.ToggleLabelLength = strlen( ToggleItem.ToggleLabel );
00700         strcpy( ToggleItem.ToggleData1, "Off" );
00701         ToggleItem.ToggleData1Length = strlen( ToggleItem.ToggleData1 );
00702         strcpy( ToggleItem.ToggleData2, "On" );
00703         ToggleItem.ToggleData2Length = strlen( ToggleItem.ToggleData2 );
00704         ToggleItem.ActiveItem = ShowStats;
00705         Menu_AddItem( OptionsMenu, Menu_ItemToggle, GMenu_ShowStatistics, &ToggleItem );
00706 
00707         //
00708         // create join menu
00709         //
00710         JoinMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_JoinMenu );
00711         if ( JoinMenu == NULL )
00712         {
00713                 assert( 0 );
00714                 goto ExitWithError;
00715         }
00716 
00717         StringItem.StringLabel = "IP Address: ";
00718         StringItem.StringLabelLength = strlen( StringItem.StringLabel );
00719         //strcpy( StringItem.StringData, IPAddress);
00720         strcpy( StringItem.StringData, "");
00721         StringItem.StringDataLength = strlen( StringItem.StringData );
00722         Menu_AddItem( JoinMenu, Menu_ItemString, GMenu_IPEntry, &StringItem );
00723         
00724         TextItem.Text = "Connect";
00725         TextItem.TextLength = strlen( TextItem.Text );
00726         Menu_AddItem( JoinMenu, Menu_ItemText, GMenu_Connect, &TextItem );
00727 
00728         TextItem.Text = "   ";
00729         TextItem.TextLength = strlen( TextItem.Text );
00730         Menu_AddItem( JoinMenu, Menu_ItemText, 0xffff, &TextItem );
00731 
00732         TextItem.Text = "Enter an IP address";
00733         TextItem.TextLength = strlen( TextItem.Text );
00734         Menu_AddItem( JoinMenu, Menu_ItemText, 0xffff, &TextItem );
00735 
00736         TextItem.Text = "Leave blank for a LAN game";
00737         TextItem.TextLength = strlen( TextItem.Text );
00738         Menu_AddItem( JoinMenu, Menu_ItemText, 0xffff, &TextItem );
00739 
00740         //
00741         // create create menu
00742         //
00743         CreateNetMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_CreateMenu );
00744         if ( CreateNetMenu == NULL )
00745         {
00746                 assert( 0 );
00747                 goto ExitWithError;
00748         }
00749 
00750         StringItem.StringLabel = "IP Address: ";
00751         StringItem.StringLabelLength = strlen( StringItem.StringLabel );
00752 
00753         strcpy(StringItem.StringData, "Not available");
00754         
00755         StringItem.StringDataLength = strlen( StringItem.StringData );
00756 
00757         Menu_AddItem( CreateNetMenu, Menu_ItemString, GMenu_IPAddress, &StringItem );
00758         /*
00759         TextItem.Text = "Start Game";
00760         TextItem.TextLength = strlen( TextItem.Text );
00761         Menu_AddItem( CreateNetMenu, Menu_ItemText, GMenu_StartGame, &TextItem );
00762         */
00763         TextItem.Text = "The Mine";
00764         TextItem.TextLength = strlen( TextItem.Text );
00765         Menu_AddItem( CreateNetMenu, Menu_ItemText, GMenu_StartGame1, &TextItem );
00766 
00767         TextItem.Text = "Physics Mania";
00768         TextItem.TextLength = strlen( TextItem.Text );
00769         Menu_AddItem( CreateNetMenu, Menu_ItemText, GMenu_StartGame2, &TextItem );
00770 
00771         //
00772         // create customize control menu
00773         //
00774         ControlMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_ControlMenu );
00775         if ( ControlMenu == NULL )
00776         {
00777                 assert( 0 );
00778                 goto ExitWithError;
00779         }
00780 
00781         // add items to the menu
00782         FieldItem.FieldName = "Shoot  ";
00783         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00784         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyShoot ), KeyText, sizeof( KeyText ) );
00785         strcpy( FieldItem.FieldTextData, KeyText );
00786         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00787         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyShoot, &FieldItem );
00788 
00789         FieldItem.FieldName = "Jump  ";
00790         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00791         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyJump ), KeyText, sizeof( KeyText ) );
00792         strcpy( FieldItem.FieldTextData, KeyText );
00793         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00794         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyJump, &FieldItem );
00795 
00796         FieldItem.FieldName = "Strafe Left  ";
00797         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00798         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyStrafeLeft ), KeyText, sizeof( KeyText ) );
00799         strcpy( FieldItem.FieldTextData, KeyText );
00800         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00801         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyStrafeLeft, &FieldItem );
00802 
00803         FieldItem.FieldName = "Strafe Right  ";
00804         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00805         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyStrafeRight ), KeyText, sizeof( KeyText ) );
00806         strcpy( FieldItem.FieldTextData, KeyText );
00807         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00808         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyStrafeRight, &FieldItem );
00809 
00810         FieldItem.FieldName = "Forward  ";
00811         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00812         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyForward ), KeyText, sizeof( KeyText ) );
00813         strcpy( FieldItem.FieldTextData, KeyText );
00814         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00815         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyForward, &FieldItem );
00816 
00817         FieldItem.FieldName = "Backward  ";
00818         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00819         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyBackward ), KeyText, sizeof( KeyText ) );
00820         strcpy( FieldItem.FieldTextData, KeyText );
00821         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00822         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyBackward, &FieldItem );
00823 
00824         FieldItem.FieldName = "Next Weapon  ";
00825         FieldItem.FieldNameLength = strlen( FieldItem.FieldName );
00826         MyGetKeyNameText( GMenu_GetKeyLParam( GMenu_KeyNextWeapon ), KeyText, sizeof( KeyText ) );
00827         strcpy( FieldItem.FieldTextData, KeyText );
00828         FieldItem.FieldTextDataLength = strlen( FieldItem.FieldTextData );
00829         Menu_AddItem( ControlMenu, Menu_ItemField, GMenu_KeyNextWeapon, &FieldItem );
00830 
00831         ToggleItem.NormalFont = Font_Default;
00832         ToggleItem.SelectFont = Font_DefaultSelect;
00833         ToggleItem.ToggleLabel = "Mouse Invert  ";
00834         ToggleItem.ToggleLabelLength = strlen( ToggleItem.ToggleLabel );
00835         strcpy( ToggleItem.ToggleData1, "No" );
00836         ToggleItem.ToggleData1Length = strlen( ToggleItem.ToggleData1 );
00837         strcpy( ToggleItem.ToggleData2, "Yes" );
00838         ToggleItem.ToggleData2Length = strlen( ToggleItem.ToggleData2 );
00839         ToggleItem.ActiveItem = MouseInvert;
00840         Menu_AddItem( ControlMenu, Menu_ItemToggle, GMenu_MouseInvert, &ToggleItem );
00841 
00842 
00843 
00844         //
00845         // create credits menu
00846         //
00847         CreditsMenu = Menu_Create( Engine, Width, Top, Bottom, 0, 0, GMenu_CreditsMenu );
00848         if ( CreditsMenu == NULL )
00849         {
00850                 assert( 0 );
00851                 goto ExitWithError;
00852         }
00853 
00854         // add items to the menu
00855         GraphicItem.Art = CreditsArt;
00856         GraphicItem.x = 0;
00857         GraphicItem.y = 0;
00858         Menu_AddItem( CreditsMenu, Menu_ItemGraphic, GMenu_NoIdRequired, &GraphicItem );
00859 
00860 
00861 
00862         // all done
00863         ActiveMenu = MainMenu;
00864         return GE_TRUE;
00865 
00866         ExitWithError:
00867         {
00868                 GMenu_DestroyAllData();
00869                 return GE_FALSE;
00870         }
00871 
00872 } // GMenu_Create()

void GMenu_Destroy void   ) 
 

Definition at line 964 of file GMENU.C.

References GMenu_DestroyAllData(), GMENU_VERSION, KeyLut, KeyMapping, MenuBotCount, and MouseInvert.

Referenced by ShutdownAll(), and WinMain().

00966 {
00967 
00968         {
00969                 FILE    *f;
00970 
00971                 f = fopen("GMenu.Dat", "wb");
00972 
00973                 if (f)
00974                 {
00975                         int     Version;
00976 
00977                         Version = GMENU_VERSION;
00978 
00979                         fwrite(&Version, sizeof(Version), 1, f);
00980                         fwrite(&KeyMapping[0].Action, sizeof(KeyMapping), 1, f);
00981                         fwrite(KeyLut, sizeof(KeyLut), 1, f);
00982                         fwrite(&MouseInvert, sizeof(MouseInvert), 1, f);
00983             fwrite(&MenuBotCount, sizeof(MenuBotCount), 1, f);
00984             fclose(f);
00985                 }
00986         }
00987 
00988         GMenu_DestroyAllData();
00989 
00990 } // GMenu_Destroy()

void GMenu_DestroyAllData void   ) 
 

Definition at line 879 of file GMENU.C.

References BotsMenu, ControlMenu, CreateNetMenu, CreditsArt, geBitmap_Destroy(), geEngine_RemoveBitmap(), JoinMenu, MainMenu, Menu_Destroy(), NULL, OptionsMenu, SaveEngine, SingleMapMenu, SliderBar, and SliderRange.

Referenced by GMenu_Create(), and GMenu_Destroy().

00880 {
00881         // free all decals
00882         if ( SliderBar != NULL )
00883         {
00884                 assert(SaveEngine);
00885                 geEngine_RemoveBitmap( SaveEngine, SliderBar );
00886                 geBitmap_Destroy(&SliderBar);
00887                 SliderBar = NULL;
00888         }
00889         if ( SliderRange != NULL )
00890         {
00891                 assert(SaveEngine);
00892                 geEngine_RemoveBitmap( SaveEngine, SliderRange );
00893                 geBitmap_Destroy(&SliderRange);
00894                 SliderRange = NULL;
00895         }
00896         if ( CreditsArt != NULL )
00897         {
00898                 assert(SaveEngine);
00899                 geEngine_RemoveBitmap( SaveEngine, CreditsArt );
00900                 geBitmap_Destroy(&CreditsArt);
00901                 CreditsArt = NULL;
00902         }
00903 
00904         // Destroy all menus
00905         if (MainMenu)
00906         {
00907                 assert(SaveEngine);
00908                 Menu_Destroy( &MainMenu );
00909                 MainMenu = NULL;
00910         }
00911 
00912         if (SingleMapMenu)
00913         {
00914                 assert(SaveEngine);
00915                 Menu_Destroy( &SingleMapMenu );
00916                 SingleMapMenu = NULL;
00917         }
00918 
00919         if (BotsMenu)
00920         {
00921                 assert(SaveEngine);
00922                 Menu_Destroy( &BotsMenu );
00923                 BotsMenu = NULL;
00924         }
00925 
00926         if (OptionsMenu)
00927         {
00928                 assert(SaveEngine);
00929                 Menu_Destroy( &OptionsMenu );
00930                 OptionsMenu = NULL;
00931         }
00932 
00933         if (JoinMenu)
00934         {
00935                 assert(SaveEngine);
00936                 Menu_Destroy( &JoinMenu );
00937                 JoinMenu = NULL;
00938         }
00939 
00940         if (CreateNetMenu)
00941         {
00942                 assert(SaveEngine);
00943                 Menu_Destroy( &CreateNetMenu );
00944                 CreateNetMenu = NULL;
00945         }
00946 
00947         if (ControlMenu)
00948         {
00949                 assert(SaveEngine);
00950                 Menu_Destroy( &ControlMenu );
00951                 ControlMenu = NULL;
00952         }
00953 
00954         SaveEngine = NULL;
00955 }

geBoolean GMenu_Draw void   ) 
 

Definition at line 1001 of file GMENU.C.

References ActiveMenu, GE_FALSE, GE_TRUE, geBoolean, Menu_Draw(), and NULL.

Referenced by WinMain().

01003 {
01004 
01005         // draw menu if required
01006         if ( ActiveMenu == NULL )
01007         {
01008                 return GE_FALSE;
01009         }
01010         Menu_Draw( ActiveMenu );
01011 
01012         // all done
01013         return GE_TRUE;
01014 
01015 } // GMenu_Draw()

Menu_T* GMenu_GetMenu int32  Id  ) 
 

Definition at line 113 of file GMENU.C.

References GMenu_IPEntry, GMenu_NameEntry, JoinMenu, NULL, and OptionsMenu.

Referenced by WinMain(), and WndProc().

00114 {
00115         switch(Id)
00116         {
00117                 case GMenu_NameEntry:
00118                         return OptionsMenu;
00119 
00120                 case GMenu_IPEntry:
00121                         return JoinMenu;
00122         }
00123 
00124         return NULL;    // Not found
00125 }

geBoolean GMenu_IsAMenuActive void   ) 
 

Definition at line 228 of file GMENU.C.

References ActiveMenu, GE_FALSE, GE_TRUE, geBoolean, and NULL.

Referenced by Client_SendMove(), IsAMenuActive(), and WndProc().

00230 {
00231         if ( ActiveMenu == NULL )
00232         {
00233                 return GE_FALSE;
00234         }
00235         else
00236         {
00237                 return GE_TRUE;
00238         }
00239 
00240 } // GMenu_IsAMenuActive()

int32 GMenu_Key int32  Key,
int32  lParam
 

Definition at line 1024 of file GMENU.C.

References ActiveMenu, BotPercent, BotsMenu, ChangeDisplaySelection, ChangingDisplayMode, ControlMenu, CreateNetMenu, CreditsMenu, DriverMenu, Engine, GAMMA_MAXIMUM, GE_FALSE, GE_TRUE, geBoolean, geEngine_EnableFrameRateCounter(), geEngine_SetGamma(), geSound_SetMasterVolume(), GMenu_Bots, GMenu_BotSlider, GMenu_Brightness, GMenu_Connect, GMenu_Control, GMenu_ControlMenu, GMenu_CreateMenu, GMenu_CreateMultiPlayerGame, GMenu_Credits, GMenu_CreditsMenu, GMenu_DisplayMode, GMenu_DoNothing, GMenu_Driver, GMenu_DriverMenu, GMenu_GetOriginalKeyMapping(), GMenu_IPAddress, GMenu_IPEntry, GMenu_JoinMenu, GMenu_JoinMultiPlayerGame, GMenu_KeyBackward, GMenu_KeyForward, GMenu_KeyJump, GMenu_KeyNextWeapon, GMenu_KeyShoot, GMenu_KeyStrafeLeft, GMenu_KeyStrafeRight, GMenu_MainMenu, GMenu_Mode, GMenu_ModeMenu, GMenu_MouseInvert, GMenu_NameEntry, GMenu_NoMenu, GMenu_Options, GMenu_OptionsMenu, GMenu_QuitGame, GMenu_SetKeyMapping(), GMenu_ShowStatistics, GMenu_SingleMapMenu, GMenu_SinglePlayerGame, GMenu_SinglePlayerGame1, GMenu_SinglePlayerGame2, GMenu_SinglePlayerGame3, GMenu_StartGame, GMenu_StartGame1, GMenu_StartGame2, GMenu_UserSinglePlayerGame, GMenu_Volume, Host_ClientRefreshStatusBar(), int32, IPAddr_GetHostID(), JoinMenu, KeyLut, MainMenu, Menu_FlagField(), Menu_FlagString(), Menu_GetCheckedData(), Menu_GetIdentifier(), Menu_GetSliderPercent(), Menu_GetStringText(), Menu_Key(), MENU_MAXSTRINGSIZE, Menu_SetFieldText(), Menu_SetSliderPercent(), Menu_SetSliderText(), Menu_SetStringText(), Menu_ToggleItem(), MenuBotCount, ModeMenuList, MouseInvert, MyGetKeyNameText(), NULL, OptionsMenu, SaveEngine, ShowStats, SingleMapMenu, SoundSys, UserGamma, and VolumePercent.

Referenced by WndProc().

01027 {
01028 
01029         // locals
01030         static int32    ControlChangeIdentifier = -1;
01031         static int32    NameChangeIdentifier = -1;
01032         static int32    Identifier = -1;
01033         static int32    OldIdentifier = -1;
01034         static int32    LastReturnIdentifier = -1;
01035         int32                   Result = GMenu_DoNothing;
01036 
01037         // if a string is waiting for input then process it
01038         if ( NameChangeIdentifier != -1 )
01039         {
01040 
01041                 // locals
01042                 geBoolean       Change;
01043                 char            TempString[MENU_MAXSTRINGSIZE];
01044 
01045                 // skip ESC
01046                 //if ( wParam == VK_ESCAPE )
01047                 //{
01048                 //      return Result;
01049                 //}
01050 
01051                 Change = Menu_GetStringText( ActiveMenu, NameChangeIdentifier, TempString );
01052                 assert( Change == GE_TRUE );
01053 
01054                 // stop name entry if enter is pressed
01055                 if ( wParam == VK_RETURN  || wParam == VK_ESCAPE )
01056                 {
01057                         // locals
01058                         int32   Size;
01059 
01060                         Size = strlen( TempString );
01061 
01062                         TempString[Size-1] = '\0';
01063 
01064                         Change = Menu_SetStringText( ActiveMenu, NameChangeIdentifier, TempString );
01065                         assert( Change == GE_TRUE );
01066 
01067                         Change = Menu_FlagString( ActiveMenu, NameChangeIdentifier, GE_FALSE );
01068                         assert( Change == GE_TRUE );
01069                         NameChangeIdentifier = -1;
01070                         return Result;
01071                 }
01072 
01073                 // delete a character...
01074                 if ( wParam == VK_BACK )
01075                 {
01076 
01077                         // locals
01078                         int32   Size;
01079 
01080                         // do nothing if there are no more characters left
01081                         Size = strlen( TempString );
01082                         if ( Size < 2 )
01083                         {
01084                                 return Result;
01085                         }
01086 
01087                         // delete as character
01088                         TempString[Size-2] = 0x40;
01089                         TempString[Size-1] = '\0';
01090                 }
01091                 // ...or add one
01092                 else
01093                 {
01094 
01095                         // locals
01096                         int32   Size;
01097 
01098                         // do nothing is there is no more room to add characters
01099                         Size = strlen( TempString );
01100                         if ( Size+2 >= sizeof( TempString ) )
01101                         {
01102                                 return Result;
01103                         }
01104                         TempString[Size-1] = (char)MapVirtualKey(wParam, 2);
01105                         TempString[Size] = 0x40;
01106                         TempString[Size+1] = '\0';
01107                 }
01108 
01109                 // set new string text
01110                 Change = Menu_SetStringText( ActiveMenu, NameChangeIdentifier, TempString );
01111                 assert( Change == GE_TRUE );
01112 
01113                 // all done
01114                 return Result;
01115         }
01116         // if a field is waiting for input then process it
01117         else if ( ControlChangeIdentifier != -1 )
01118         {
01119 
01120                 // locals
01121                 geBoolean       Change;
01122                 char            KeyText[64];
01123 
01124                 // skip ESC
01125                 if ( wParam == VK_ESCAPE )
01126                 {
01127                         return Result;
01128                 }
01129 
01130                 MyGetKeyNameText( lParam, KeyText, sizeof( KeyText ) );
01131 
01132                 // set new field text
01133                 Change = Menu_SetFieldText( ActiveMenu, ControlChangeIdentifier, KeyText );
01134                 assert( Change == GE_TRUE );
01135 
01136                 // set new key mapping
01137                 KeyLut[GMenu_GetOriginalKeyMapping(ControlChangeIdentifier)] = wParam;
01138                 GMenu_SetKeyMapping( ControlChangeIdentifier, wParam, lParam );
01139 
01140                 // all done
01141                 Change = Menu_FlagField( ActiveMenu, ControlChangeIdentifier, GE_FALSE );
01142                 assert( Change == GE_TRUE );
01143                 ControlChangeIdentifier = -1;
01144                 return Result;
01145         }
01146 
01147         // if ESC was hit then back out of the menus as required
01148         if ( wParam == VK_ESCAPE )
01149         {
01150 
01151                 // locals
01152                 int32   MenuIdentifier;
01153 
01154                 // get menu identifier
01155                 if ( ActiveMenu == NULL )
01156                 {
01157                         MenuIdentifier = GMenu_NoMenu;
01158                 }
01159                 else
01160                 {
01161                         MenuIdentifier = Menu_GetIdentifier( ActiveMenu );
01162                 }
01163 
01164                 // decide what to do based on currently active menu
01165                 switch ( MenuIdentifier )
01166                 {
01167 
01168                         case GMenu_MainMenu:
01169                         {
01170                                 ActiveMenu = NULL;
01171                                 break;
01172                         }
01173 
01174                         case GMenu_ControlMenu:
01175                         case GMenu_DriverMenu:
01176                         {
01177                                 ActiveMenu = OptionsMenu;
01178                                 break;
01179                         }
01180 
01181                         case GMenu_CreditsMenu:
01182                         {
01183                                 Host_ClientRefreshStatusBar(0);
01184                                 ActiveMenu = MainMenu;
01185                                 break;
01186                         }
01187 
01188                         case GMenu_OptionsMenu:
01189                         case GMenu_NoMenu:
01190                         case GMenu_CreateMenu:
01191                         case GMenu_SingleMapMenu:
01192                         case GMenu_JoinMenu:
01193                         {
01194                                 ActiveMenu = MainMenu;
01195                                 break;
01196                         }
01197 
01198                         default:
01199                         {
01200                                 if (MenuIdentifier>=GMenu_ModeMenu && MenuIdentifier<GMenu_ModeMenu+1000)
01201                                         ActiveMenu = DriverMenu;
01202                                 else
01203                                         ActiveMenu = MainMenu;
01204                                 break;
01205                         }
01206 
01207                 }
01208                 return Result;
01209         }
01210 
01211         // do nothing if no menu is currently active
01212         if ( ActiveMenu == NULL )
01213         {
01214                 return Result;
01215         }
01216 
01217         // send keystroke to currently active menu
01218         Identifier = Menu_Key( ActiveMenu, wParam );
01219 
01220         // process keystroke
01221         switch ( wParam )
01222         {
01223 
01224                 // process sliders
01225                 case VK_LEFT:
01226                 case VK_RIGHT:
01227                 {
01228                         switch ( Identifier )
01229                         {
01230 
01231                                 // volume slider
01232                                 case GMenu_Volume:
01233                                 {
01234 
01235                                         // locals
01236                                         float   Percent;
01237 
01238                                         // get volume percent
01239                                         Percent = Menu_GetSliderPercent( ActiveMenu, Identifier );
01240                                         assert( Percent >= 0.0f );
01241                                         assert( Percent <= 1.0f );
01242 
01243                                         // only change volume if percentage has changed
01244                                         if ( Percent != VolumePercent )
01245                                         {
01246                                                 VolumePercent = Percent;
01247                                                 VolumePercent *= 0.4f;
01248                                                 VolumePercent += 0.6f;
01249                                                 //undone, set the volume here
01250                                                 if (SoundSys)
01251                                                         geSound_SetMasterVolume(SoundSys, VolumePercent);
01252                                         }
01253                                         break;
01254                                 }
01255 
01256                                 case GMenu_BotSlider:
01257                                 {
01258                                         // locals
01259                                         float   Percent;
01260                     char NewString[32];
01261                                         Menu_T *PiggyBackMenu = NULL;
01262 
01263                                         if (ActiveMenu == OptionsMenu)
01264                                                 PiggyBackMenu = BotsMenu; //also set slider in bots menu
01265                                         else
01266                                         if (ActiveMenu == BotsMenu)
01267                                                 PiggyBackMenu = OptionsMenu; //also set slider in options menu
01268 
01269                                         // get volume percent
01270                                         Percent = Menu_GetSliderPercent( ActiveMenu, Identifier );
01271                                         assert( Percent >= 0.0f );
01272                                         assert( Percent <= 1.0f );
01273 
01274 
01275                                         // only change Bot if percentage has changed
01276                                         if ( Percent != BotPercent )
01277                                         {
01278                                                 BotPercent = Percent;
01279                                                 MenuBotCount = (int32)(BotPercent * 4.0f);
01280                                         }
01281 
01282                     sprintf(NewString, "Bots %2d ", MenuBotCount);
01283 
01284                     Menu_SetSliderText(ActiveMenu, Identifier, NewString);
01285 
01286                                         if (PiggyBackMenu)
01287                                                 {
01288                                                 // Piggy back the results
01289                             Menu_SetSliderText(PiggyBackMenu, Identifier, NewString);
01290                             Menu_SetSliderPercent(PiggyBackMenu, Identifier, Percent);
01291                                                 }
01292                                         break;
01293                                 }
01294 
01295                                 // gamma slider
01296                                 case GMenu_Brightness:
01297                                 {
01298                                         float   Percent;
01299 
01300                                         // get gamma percent
01301                                         Percent = Menu_GetSliderPercent( ActiveMenu, Identifier );
01302                                         assert( Percent >= 0.0f );
01303                                         assert( Percent <= 1.0f );
01304 
01305                                         UserGamma = Percent * GAMMA_MAXIMUM;
01306 
01307                                         // engine won't do anything unless gamma is a change
01308                                         if (SaveEngine)
01309                                                 geEngine_SetGamma(SaveEngine, UserGamma );
01310                                         break;
01311                                 }
01312                         }
01313                         break;
01314                 }
01315 
01316                 // if enter was hit then check if we need to do anything
01317                 case VK_RETURN:
01318                 {
01319                 switch ( Identifier )
01320                         {
01321                                 case GMenu_SinglePlayerGame:
01322                                 {
01323                                         ActiveMenu = SingleMapMenu;
01324                                         break;
01325                                 }
01326                                 
01327                                 case GMenu_QuitGame:
01328                                 {
01329                                         Result = Identifier;
01330                                         ActiveMenu = NULL;
01331                                         break;
01332                                 }
01333 
01334                                 case GMenu_CreateMultiPlayerGame:
01335                                 {
01336                                         geBoolean       Change;
01337                                         char            TempString[MENU_MAXSTRINGSIZE];
01338 
01339                                         ActiveMenu = CreateNetMenu;
01340 
01341                                         if (IPAddr_GetHostID(TempString))
01342                                         {
01343                                                 Change = Menu_SetStringText( ActiveMenu, GMenu_IPAddress, TempString );
01344                                         }
01345                                         else
01346                                         {
01347                                                 Change = Menu_SetStringText( ActiveMenu, GMenu_IPAddress, "Not Available");
01348                                         }
01349 
01350                                         assert(Change == GE_TRUE);
01351 
01352                                         break;
01353                                 }
01354 
01355                                 case GMenu_JoinMultiPlayerGame:
01356                                 {
01357                                         ActiveMenu = JoinMenu;
01358                                         break;
01359                                 }
01360 
01361                                 case GMenu_Connect:
01362                                 {
01363                                         Result = Identifier;
01364                                         ActiveMenu = NULL;
01365                                         break;
01366                                 }
01367 
01368 #ifdef BOT_UPDATE
01369                                 case GMenu_Bots:
01370                                 {
01371                                         switch (LastReturnIdentifier)
01372                                         {
01373                                                 case GMenu_UserSinglePlayerGame:
01374                                                 case GMenu_SinglePlayerGame1:
01375                                                 case GMenu_SinglePlayerGame2:
01376                                                 case GMenu_SinglePlayerGame3:
01377                                                         Result = LastReturnIdentifier;
01378                                                         ActiveMenu = NULL;
01379                                                         break;
01380                                                 case -1:
01381                                                         Result = GMenu_UserSinglePlayerGame;
01382                                                         ActiveMenu = NULL;
01383                                                         break;
01384                                         }
01385                                                 break;
01386                                 }
01387 
01388                                 case GMenu_UserSinglePlayerGame:
01389                                 case GMenu_SinglePlayerGame1:
01390                                 case GMenu_SinglePlayerGame2:
01391                                 case GMenu_SinglePlayerGame3:
01392                                 {
01393                                         LastReturnIdentifier = Identifier;
01394                                         Result = GMenu_DoNothing;//Identifier;
01395                                         ActiveMenu = BotsMenu;
01396                                         break;
01397                                 }
01398 
01399                                 case GMenu_StartGame:
01400                                 case GMenu_StartGame1:
01401                                 case GMenu_StartGame2:
01402                                 {
01403                                         Result = Identifier;
01404                                         ActiveMenu = NULL;
01405                                         break;
01406                                 }
01407 #else
01408                                 case GMenu_StartGame:
01409                                 case GMenu_StartGame1:
01410                                 case GMenu_StartGame2:
01411                                 case GMenu_UserSinglePlayerGame:
01412                                 case GMenu_SinglePlayerGame1:
01413                                 case GMenu_SinglePlayerGame2:
01414                                 {
01415                                         Result = Identifier;
01416                                         ActiveMenu = NULL;
01417                                         break;
01418                                 }
01419 #endif
01420 
01421                                 case GMenu_Options:
01422                                 {
01423                                         ActiveMenu = OptionsMenu;
01424                                         break;
01425                                 }
01426 
01427 
01428                                 case GMenu_Control:
01429                                 {
01430                                         ActiveMenu = ControlMenu;
01431                                         break;
01432                                 }
01433 
01434                                 case GMenu_Credits:
01435                                 {
01436                                         ActiveMenu = CreditsMenu;
01437                                         break;
01438                                 }
01439 
01440                                 case GMenu_KeyShoot:
01441                                 case GMenu_KeyJump:
01442                                 case GMenu_KeyStrafeLeft:
01443                                 case GMenu_KeyStrafeRight:
01444                                 case GMenu_KeyForward:
01445                                 case GMenu_KeyBackward:
01446                                 case GMenu_KeyNextWeapon:
01447                                 {
01448                                         Menu_FlagField( ActiveMenu, Identifier, GE_TRUE );
01449                                         ControlChangeIdentifier = Identifier;
01450                                         break;
01451                                 }
01452 
01453                                 case GMenu_NameEntry:
01454                                 {
01455                                         Menu_FlagString( ActiveMenu, Identifier, GE_TRUE );
01456                                         NameChangeIdentifier = Identifier;
01457                                         break;
01458                                 }
01459 
01460                                 case GMenu_IPEntry:
01461                                 {
01462                                         //char TempString[MENU_MAXSTRINGSIZE];
01463                                         
01464                                         Menu_FlagString( ActiveMenu, Identifier, GE_TRUE );
01465                                         NameChangeIdentifier = Identifier;
01466                                         
01467                                         /*
01468                                         assert(Menu_GetStringText( ActiveMenu, NameChangeIdentifier, TempString ));
01469                                         if (strlen(TempString) <= 0)
01470                                         {
01471                                                 strcpy(TempString, "Search Local LAN");
01472                                                 assert(Menu_SetStringText( ActiveMenu, NameChangeIdentifier, TempString ));
01473                                         }
01474                                         */
01475                                         break;
01476                                 }
01477 
01478                                 case GMenu_MouseInvert:
01479                                 {
01480                                         Menu_ToggleItem( ActiveMenu, Identifier );
01481                                         MouseInvert = !MouseInvert;
01482                                         break;
01483                                 }
01484                                 case GMenu_ShowStatistics:
01485                                 {
01486                                         Menu_ToggleItem( ActiveMenu, Identifier );
01487                                         if ( ShowStats ) ShowStats = GE_FALSE;
01488                                         else ShowStats = GE_TRUE;
01489                                         geEngine_EnableFrameRateCounter(Engine, ShowStats);             
01490                                         break;
01491                                 }
01492                                 case GMenu_DisplayMode:
01493                                 {
01494                                         ActiveMenu = DriverMenu;
01495                                         break;
01496                                 }
01497                                 default:
01498                                         if (Identifier>=GMenu_Driver && Identifier<GMenu_Mode)
01499                                                 {
01500                                                         ActiveMenu = ModeMenuList[Identifier - GMenu_Driver];
01501                                                         break;
01502                                                 }
01503                                         else if (Identifier>=GMenu_Mode && Identifier<GMenu_ModeMenu)
01504                                                 {
01505                                                         if (Menu_GetCheckedData(ActiveMenu,Identifier,(int32 *)(&ChangeDisplaySelection))==GE_FALSE)
01506                                                                 {
01507                                                                         // error
01508                                                                         break;
01509                                                                 }
01510                                                         else
01511                                                                 {
01512                                                                         ChangingDisplayMode = GE_TRUE;
01513                                                                         ActiveMenu = NULL;
01514                                                                 }
01515                                                         break;
01516                                                 }
01517                         }
01518                         // save the current id
01519                         break;
01520                 }
01521         }
01522 
01523         OldIdentifier = Identifier;
01524 
01525         // all done
01526         return Result;
01527 
01528 } // GMenu_Key()

void GMenu_SetActive geBoolean  Active  ) 
 

Definition at line 247 of file GMENU.C.

References ActiveMenu, MainMenu, and NULL.

Referenced by WinMain().

00248 {
00249         if (!Active)
00250                 ActiveMenu = NULL;
00251         else
00252                 ActiveMenu = MainMenu;
00253 }


Variable Documentation

float UserGamma
 

Definition at line 145 of file GMENU.H.

Referenced by GMenu_Create(), GMenu_Key(), and WinMain().


Generated on Tue Sep 30 12:37:41 2003 for GTestAndEngine by doxygen 1.3.2