#include "Genesis.h"#include "Menu.h"#include "ModeList.h"Go to the source code of this file.
|
|
|
|
|
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 };
|
|
||||||||||||||||||||
|
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()
|
|
|
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()
|
|
|
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 }
|
|
|
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()
|
|
|
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 }
|
|
|
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()
|
|
||||||||||||
|
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()
|
|
|
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 }
|
|
|
Definition at line 145 of file GMENU.H. Referenced by GMenu_Create(), GMenu_Key(), and WinMain(). |
1.3.2