1//************************************************************************** 2//** 3//** ## ## ## ## ## #### #### ### ### 4//** ## ## ## ## ## ## ## ## ## ## #### #### 5//** ## ## ## ## ## ## ## ## ## ## ## ## ## ## 6//** ## ## ######## ## ## ## ## ## ## ## ### ## 7//** ### ## ## ### ## ## ## ## ## ## 8//** # ## ## # #### #### ## ## 9//** 10//** $Id: MenuScreenNewNetGame.vc 4129 2010-03-01 13:09:25Z firebrand_kh $ 11//** 12//** Copyright (C) 1999-2006 Jānis Legzdiņš 13//** 14//** This program is free software; you can redistribute it and/or 15//** modify it under the terms of the GNU General Public License 16//** as published by the Free Software Foundation; either version 2 17//** of the License, or (at your option) any later version. 18//** 19//** This program is distributed in the hope that it will be useful, 20//** but WITHOUT ANY WARRANTY; without even the implied warranty of 21//** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22//** GNU General Public License for more details. 23//** 24//************************************************************************** 25 26class MenuScreenNewNetGame : MenuScreen; 27 28MenuChoiceEnum Players; 29MenuChoiceEnum Monsters; 30MenuChoiceEnum DeathMatch; 31MenuChoiceEnum Skill; 32MenuChoiceEnum TimeLimit; 33MenuChoiceEnum Episode; 34MenuChoiceEnum Level; 35 36//========================================================================== 37// 38// CreateChoices 39// 40//========================================================================== 41 42void CreateChoices() 43{ 44 MenuTextButton Btn; 45 int i; 46 47 Btn = MenuTextButton(NewChild(MenuSmallTextButton)); 48 Btn.SetOrigin(ChoicesStartX, ChoicesStartY); 49 Btn.Text = "Start Game"; 50 Btn.Activated = ActivateStartNewGame; 51 ChoicesStartY += Btn.Height; 52 53 Players = MenuChoiceEnum(NewChild(MenuChoiceEnum)); 54 Players.SetOrigin(ChoicesStartX, ChoicesStartY); 55 Players.Text = "Max players"; 56 Players.AddItem("2"); 57 Players.AddItem("3"); 58 Players.AddItem("4"); 59 Players.AddItem("5"); 60 Players.AddItem("6"); 61 Players.AddItem("7"); 62 Players.AddItem("8"); 63 Players.SetInitialValue(2); 64 ChoicesStartY += Players.Height; 65 66 Monsters = MenuChoiceEnum(NewChild(MenuChoice_OnOff)); 67 Monsters.SetOrigin(ChoicesStartX, ChoicesStartY); 68 Monsters.Text = "Monsters"; 69 ChoicesStartY += Monsters.Height; 70 71 DeathMatch = MenuChoiceEnum(NewChild(MenuChoiceEnum)); 72 DeathMatch.SetOrigin(ChoicesStartX, ChoicesStartY); 73 DeathMatch.Text = "Game type"; 74 DeathMatch.AddItem("Cooperative"); 75 DeathMatch.AddItem("Deathmatch"); 76 DeathMatch.SetInitialValue(1); 77 ChoicesStartY += DeathMatch.Height; 78 79 Skill = MenuChoiceEnum(NewChild(MenuChoiceEnum)); 80 Skill.SetOrigin(ChoicesStartX, ChoicesStartY); 81 Skill.Text = "Skill"; 82 for (i = 0; i < P_GetNumSkills(); i++) 83 { 84 Skill.AddItem(P_GetSkillDef(i)->Name); 85 } 86 Skill.SetInitialValue(2); 87 ChoicesStartY += Skill.Height; 88 89 TimeLimit = MenuChoiceEnum(NewChild(MenuChoiceEnum)); 90 TimeLimit.SetOrigin(ChoicesStartX, ChoicesStartY); 91 TimeLimit.Text = "Time limit"; 92 TimeLimit.AddItem("0"); 93 TimeLimit.AddItem("5"); 94 TimeLimit.AddItem("10"); 95 TimeLimit.AddItem("15"); 96 TimeLimit.AddItem("20"); 97 TimeLimit.AddItem("25"); 98 TimeLimit.AddItem("30"); 99 TimeLimit.AddItem("35"); 100 TimeLimit.AddItem("40"); 101 TimeLimit.AddItem("45"); 102 TimeLimit.AddItem("50"); 103 TimeLimit.AddItem("55"); 104 TimeLimit.AddItem("60"); 105 ChoicesStartY += TimeLimit.Height; 106 107 Episode = MenuChoiceEnum(NewChild(MenuChoiceEnum)); 108 Episode.SetOrigin(ChoicesStartX, ChoicesStartY); 109 Episode.Text = "Episode"; 110 Episode.AddItem("CITY OF THE DAMNED"); 111 if (WadLumpPresent('e2m1')) 112 { 113 Episode.AddItem("HELL'S MAW"); 114 Episode.AddItem("THE DOME OF D'SPARIL"); 115 if (WadLumpPresent('extended')) 116 { 117 Episode.AddItem("THE OSSUARY"); 118 Episode.AddItem("THE STAGNANT DEMESNE"); 119 } 120 } 121 Episode.ValueChanging = ChangeEpisode; 122 ChoicesStartY += Episode.Height; 123 124 Level = MenuChoiceEnum(NewChild(MenuChoiceEnum)); 125 Level.SetOrigin(ChoicesStartX, ChoicesStartY); 126 Level.Text = "Level"; 127 ChoicesStartY += Level.Height; 128 129 InitMapList(0); 130} 131 132//========================================================================== 133// 134// InitMapList 135// 136//========================================================================== 137 138void InitMapList(int epi) 139{ 140 int i; 141 142 for (i = 0; i < 9; i++) 143 { 144 Level.EnumNames[i] = P_GetMapName(epi * 9 + i); 145 } 146 Level.Value = 0; 147} 148 149//========================================================================== 150// 151// ChangeEpisode 152// 153//========================================================================== 154 155bool ChangeEpisode(Object Sender, int newValue) 156{ 157 InitMapList(newValue); 158 return true; 159} 160 161//========================================================================== 162// 163// ActivateStartNewGame 164// 165//========================================================================== 166 167void ActivateStartNewGame(Object Sender) 168{ 169 CmdBuf_AddText("Disconnect\n"); 170 CmdBuf_AddText("MaxPlayers %d\n", Players.Value + 2); 171 CmdBuf_AddText("NoMonsters %d\n", !Monsters.Value); 172 CmdBuf_AddText("DeathMatch %d\n", DeathMatch.Value); 173 CmdBuf_AddText("TimeLimit %d\n", TimeLimit.Value * 5); 174 CmdBuf_AddText("Skill %d\n", Skill.Value); 175 CmdBuf_AddText("Map E%dM%d\n", Episode.Value + 1, Level.Value + 1); 176} 177 178defaultproperties 179{ 180 ChoicesStartX = 128; 181 ChoicesStartY = 40; 182 SelectorType = MenuSelector_SmallRight; 183 Title = "NEW GAME"; 184} 185