]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - menu.c
fixed vid_restart
[xonotic/darkplaces.git] / menu.c
diff --git a/menu.c b/menu.c
index f17c79fd9d3ae0e4cb3a76fde9e7ae033ab4c72c..c729750b73667b9d4715a4f449f1d8d542d206ff 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -19,10 +19,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
 #include "quakedef.h"
 
-#ifdef _WIN32
-#include "winquake.h"
-#endif
-
 void (*vid_menudrawfn)(void);
 void (*vid_menukeyfn)(int key);
 
@@ -50,6 +46,7 @@ void M_Menu_Main_f (void);
 void M_Menu_LanConfig_f (void);
 void M_Menu_GameOptions_f (void);
 void M_Menu_Search_f (void);
+void M_Menu_InetSearch_f (void);
 void M_Menu_ServerList_f (void);
 
 void M_Main_Draw (void);
@@ -68,6 +65,7 @@ void M_Main_Draw (void);
 void M_LanConfig_Draw (void);
 void M_GameOptions_Draw (void);
 void M_Search_Draw (void);
+void M_InetSearch_Draw (void);
 void M_ServerList_Draw (void);
 
 void M_Main_Key (int key);
@@ -86,6 +84,7 @@ void M_Main_Key (int key);
 void M_LanConfig_Key (int key);
 void M_GameOptions_Key (int key);
 void M_Search_Key (int key);
+void M_InetSearch_Key (int key);
 void M_ServerList_Key (int key);
 
 qboolean       m_entersound;           // play after drawing a frame, so caching
@@ -275,7 +274,7 @@ void M_DrawTextBox (float x, float y, float width, float height)
 
 //=============================================================================
 
-int m_save_demonum;
+//int m_save_demonum;
 
 /*
 ================
@@ -297,14 +296,10 @@ void M_ToggleMenu_f (void)
                m_state = m_none;
                return;
        }
-       if (key_dest == key_console)
-       {
-               Con_ToggleConsole_f ();
-       }
-       else
-       {
+       //if (key_dest == key_console)
+       //      Con_ToggleConsole_f ();
+       //else
                M_Menu_Main_f ();
-       }
 }
 
 
@@ -382,11 +377,13 @@ void M_Menu_Main_f (void)
        else
                MAIN_ITEMS = 5;
 
+       /*
        if (key_dest != key_menu)
        {
                m_save_demonum = cls.demonum;
                cls.demonum = -1;
        }
+       */
        key_dest = key_menu;
        m_state = m_main;
        m_entersound = true;
@@ -427,9 +424,9 @@ void M_Main_Key (int key)
        case K_ESCAPE:
                key_dest = key_game;
                m_state = m_none;
-               cls.demonum = m_save_demonum;
-               if (cls.demonum != -1 && !cls.demoplayback && cls.state != ca_connected)
-                       CL_NextDemo ();
+               //cls.demonum = m_save_demonum;
+               //if (cls.demonum != -1 && !cls.demoplayback && cls.state != ca_connected)
+               //      CL_NextDemo ();
                break;
 
        case K_DOWNARROW:
@@ -859,7 +856,7 @@ void M_MultiPlayer_Draw (void)
 
        if (ipxAvailable || tcpipAvailable)
                return;
-       M_PrintWhite ((320/2) - ((27*8)/2), 148, "No Communications Available");
+       M_PrintWhite ((320/2) - ((27*8)/2), 168, "No Communications Available");
 }
 
 
@@ -2131,7 +2128,6 @@ void M_Quit_Key (int key)
 
        case 'Y':
        case 'y':
-               key_dest = key_console;
                Host_Quit_f ();
                break;
 
@@ -2155,8 +2151,8 @@ void M_Quit_Draw (void)
 /* LAN CONFIG MENU */
 
 int            lanConfig_cursor = -1;
-int            lanConfig_cursor_table [] = {72, 92, 124};
-#define NUM_LANCONFIG_CMDS     3
+int            lanConfig_cursor_table [] = {72, 92, 112, 144};
+#define NUM_LANCONFIG_CMDS     4
 
 int    lanConfig_port;
 char   lanConfig_portname[6];
@@ -2220,9 +2216,10 @@ void M_LanConfig_Draw (void)
        if (JoiningGame)
        {
                M_Print (basex, lanConfig_cursor_table[1], "Search for local games...");
-               M_Print (basex, 108, "Join game at:");
-               M_DrawTextBox (basex+8, lanConfig_cursor_table[2]-8, 22, 1);
-               M_Print (basex+16, lanConfig_cursor_table[2], lanConfig_joinname);
+               M_Print (basex, lanConfig_cursor_table[2], "Search for internet games...");
+               M_Print (basex, 128, "Join game at:");
+               M_DrawTextBox (basex+8, lanConfig_cursor_table[3]-8, 22, 1);
+               M_Print (basex+16, lanConfig_cursor_table[3], lanConfig_joinname);
        }
        else
        {
@@ -2235,11 +2232,11 @@ void M_LanConfig_Draw (void)
        if (lanConfig_cursor == 0)
                M_DrawCharacter (basex+9*8 + 8*strlen(lanConfig_portname), lanConfig_cursor_table [0], 10+((int)(realtime*4)&1));
 
-       if (lanConfig_cursor == 2)
-               M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [2], 10+((int)(realtime*4)&1));
+       if (lanConfig_cursor == 3)
+               M_DrawCharacter (basex+16 + 8*strlen(lanConfig_joinname), lanConfig_cursor_table [3], 10+((int)(realtime*4)&1));
 
        if (*m_return_reason)
-               M_PrintWhite (basex, 148, m_return_reason);
+               M_PrintWhite (basex, 168, m_return_reason);
 }
 
 
@@ -2275,18 +2272,21 @@ void M_LanConfig_Key (int key)
 
                M_ConfigureNetSubsystem ();
 
-               if (lanConfig_cursor == 1)
+               if (lanConfig_cursor == 1 || lanConfig_cursor == 2)
                {
                        if (StartingGame)
                        {
                                M_Menu_GameOptions_f ();
                                break;
                        }
-                       M_Menu_Search_f();
+                       if (lanConfig_cursor == 1)
+                               M_Menu_Search_f();
+                       else
+                               M_Menu_InetSearch_f();
                        break;
                }
 
-               if (lanConfig_cursor == 2)
+               if (lanConfig_cursor == 3)
                {
                        m_return_state = m_state;
                        m_return_onerror = true;
@@ -2305,7 +2305,7 @@ void M_LanConfig_Key (int key)
                                lanConfig_portname[strlen(lanConfig_portname)-1] = 0;
                }
 
-               if (lanConfig_cursor == 2)
+               if (lanConfig_cursor == 3)
                {
                        if (strlen(lanConfig_joinname))
                                lanConfig_joinname[strlen(lanConfig_joinname)-1] = 0;
@@ -2316,7 +2316,7 @@ void M_LanConfig_Key (int key)
                if (key < 32 || key > 127)
                        break;
 
-               if (lanConfig_cursor == 2)
+               if (lanConfig_cursor == 3)
                {
                        l = strlen(lanConfig_joinname);
                        if (l < 21)
@@ -2339,7 +2339,7 @@ void M_LanConfig_Key (int key)
                }
        }
 
-       if (StartingGame && lanConfig_cursor == 2)
+       if (StartingGame && lanConfig_cursor == 3)
        {
                if (key == K_UPARROW)
                        lanConfig_cursor = 1;
@@ -2553,7 +2553,9 @@ level_t           transfusionlevels[] =
        {"bb6",                 "Twin Fortress"},
        {"bb7",                 "Midgard"},
        {"bb8",                 "Fun With Heads"},
+
        {"e1m1",                "Cradle to Grave"},
+       {"e1m2",                "Wrong Side of the Tracks"},
        {"e1m7",                "Altar of Stone"},
 
        {"dm1",                 "Monolith Building 11"},
@@ -2571,7 +2573,9 @@ level_t           transfusionlevels[] =
        {"crypt",               "The Crypt"},
 
        {"bb3_2k1",             "Bodies Infusion"},
+       {"dcamp",               "DeathCamp"},
        {"dranzbb6",    "Black Coffee"},
+       {"highnoon",    "HighNoon"},
        {"qbb1",                "The Confluence"},
        {"qbb2",                "KathartiK"},
        {"qbb3",                "Caleb's Woodland Retreat"},
@@ -2581,11 +2585,12 @@ level_t         transfusionlevels[] =
 
 episode_t      transfusionepisodes[] =
 {
-       {"Blood", 0, 10},
-       {"Plasma Pack", 10, 4},
-       {"Cryptic Passage", 14, 2},
-       {"Blood 2", 16, 5},
-       {"Custom", 21, 7}
+       {"Blood", 0, 8},
+       {"Blood Single Player", 8, 3},
+       {"Plasma Pack", 11, 4},
+       {"Cryptic Passage", 15, 2},
+       {"Blood 2", 17, 5},
+       {"Custom", 22, 9}
 };
 
 gamelevels_t sharewarequakegame = {"Shareware Quake", quakelevels, quakeepisodes, 2};
@@ -2593,7 +2598,7 @@ gamelevels_t registeredquakegame = {"Quake", quakelevels, quakeepisodes, 7};
 gamelevels_t hipnoticgame = {"Scourge of Armagon", hipnoticlevels, hipnoticepisodes, 6};
 gamelevels_t roguegame = {"Dissolution of Eternity", roguelevels, rogueepisodes, 4};
 gamelevels_t nehahragame = {"Nehahra", nehahralevels, nehahraepisodes, 4};
-gamelevels_t transfusiongame = {"Transfusion", transfusionlevels, transfusionepisodes, 5};
+gamelevels_t transfusiongame = {"Transfusion", transfusionlevels, transfusionepisodes, 6};
 
 typedef struct
 {
@@ -2637,7 +2642,7 @@ void M_Menu_GameOptions_f (void)
        if (maxplayers == 0)
                maxplayers = svs.maxclients;
        if (maxplayers < 2)
-               maxplayers = svs.maxclientslimit;
+               maxplayers = MAX_SCOREBOARD;
 }
 
 
@@ -2786,9 +2791,9 @@ void M_NetStart_Change (int dir)
        {
        case 1:
                maxplayers += dir;
-               if (maxplayers > svs.maxclientslimit)
+               if (maxplayers > MAX_SCOREBOARD)
                {
-                       maxplayers = svs.maxclientslimit;
+                       maxplayers = MAX_SCOREBOARD;
                        m_serverInfoMessage = true;
                        m_serverInfoMessageTime = realtime;
                }
@@ -2999,6 +3004,63 @@ void M_Search_Key (int key)
 {
 }
 
+//=============================================================================
+/* INTERNET SEARCH MENU */
+
+void M_Menu_InetSearch_f (void)
+{
+       key_dest = key_menu;
+       m_state = m_search;
+       m_entersound = false;
+       slistSilent = true;
+       slistLocal = false;
+       searchComplete = false;
+       NET_InetSlist_f();
+
+}
+
+
+void M_InetSearch_Draw (void)
+{
+       cachepic_t      *p;
+       int x;
+
+       p = Draw_CachePic ("gfx/p_multi.lmp");
+       M_DrawPic ( (320-p->width)/2, 4, "gfx/p_multi.lmp");
+       x = (320/2) - ((12*8)/2) + 4;
+       M_DrawTextBox (x-8, 32, 12, 1);
+       M_Print (x, 40, "Searching...");
+
+       if(slistInProgress)
+       {
+               NET_Poll();
+               return;
+       }
+
+       if (! searchComplete)
+       {
+               searchComplete = true;
+               searchCompleteTime = realtime;
+       }
+
+       if (hostCacheCount)
+       {
+               M_Menu_ServerList_f ();
+               return;
+       }
+
+       M_PrintWhite ((320/2) - ((22*8)/2), 64, "No Quake servers found");
+       if ((realtime - searchCompleteTime) < 3.0)
+               return;
+
+       M_Menu_LanConfig_f ();
+}
+
+
+void M_InetSearch_Key (int key)
+{
+}
+
 //=============================================================================
 /* SLIST MENU */
 
@@ -3054,7 +3116,7 @@ void M_ServerList_Draw (void)
        M_DrawCharacter (0, 32 + slist_cursor*8, 12+((int)(realtime*4)&1));
 
        if (*m_return_reason)
-               M_PrintWhite (16, 148, m_return_reason);
+               M_PrintWhite (16, 168, m_return_reason);
 }