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