]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/qcsrc/menu/voret/dialog_multiplayer_create.c
Several menu rearrangements
[voretournament/voretournament.git] / data / qcsrc / menu / voret / dialog_multiplayer_create.c
1 #ifdef INTERFACE\r
2 CLASS(VoretServerCreateTab) EXTENDS(VoretTab)\r
3         METHOD(VoretServerCreateTab, fill, void(entity))\r
4         METHOD(VoretServerCreateTab, gameTypeChangeNotify, void(entity))\r
5         ATTRIB(VoretServerCreateTab, title, string, "Create")\r
6         ATTRIB(VoretServerCreateTab, intendedWidth, float, 0.9)\r
7         ATTRIB(VoretServerCreateTab, rows, float, 22)\r
8         ATTRIB(VoretServerCreateTab, columns, float, 6.5)\r
9 \r
10         ATTRIB(VoretServerCreateTab, mapListBox, entity, NULL)\r
11         ATTRIB(VoretServerCreateTab, sliderFraglimit, entity, NULL)\r
12         ATTRIB(VoretServerCreateTab, sliderTimelimit, entity, NULL)\r
13         ATTRIB(VoretServerCreateTab, checkboxFraglimit, entity, NULL)\r
14         ATTRIB(VoretServerCreateTab, checkboxFraglimitMapinfo, entity, NULL)\r
15 ENDCLASS(VoretServerCreateTab)\r
16 entity makeVoretServerCreateTab();\r
17 #endif\r
18 \r
19 #ifdef IMPLEMENTATION\r
20 \r
21 entity makeVoretServerCreateTab()\r
22 {\r
23         entity me;\r
24         me = spawnVoretServerCreateTab();\r
25         me.configureDialog(me);\r
26         return me;\r
27 }\r
28 \r
29 void fillVoretServerCreateTab(entity me)\r
30 {\r
31         entity e, e0;\r
32         float n;\r
33 \r
34         me.TR(me);\r
35                 me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Single:"));\r
36                         me.playerNameLabelAlpha = me.playerNameLabel.alpha;\r
37                 n = 5.5;\r
38                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_dm", "DM"));\r
39                         e0 = e;\r
40                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_lms", "LMS"));\r
41                         if(e.checked) e0 = NULL;\r
42                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_arena", "Arena"));\r
43                         if(e.checked) e0 = NULL;\r
44                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_race", "Race"));\r
45                         if(e.checked) e0 = NULL;\r
46                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_cts", "Race CTS"));\r
47                         if(e.checked) e0 = NULL;\r
48         me.TR(me);\r
49                 me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Team:"));\r
50                         me.playerNameLabelAlpha = me.playerNameLabel.alpha;\r
51                 n = 7.7;\r
52                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_tdm", "TDM"));\r
53                         if(e.checked) e0 = NULL;\r
54                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_ctf", "CTF"));\r
55                         if(e.checked) e0 = NULL;\r
56                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_ca", "CA"));\r
57                         if(e.checked) e0 = NULL;\r
58                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_domination", "Domination"));\r
59                         if(e.checked) e0 = NULL;\r
60                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_keyhunt", "Key Hunt"));\r
61                         if(e.checked) e0 = NULL;\r
62                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_assault", "Assault"));\r
63                         if(e.checked) e0 = NULL;\r
64                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_onslaught", "Onslaught"));\r
65                         if(e.checked) e0 = NULL;\r
66         me.TR(me);\r
67                 me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Other:"));\r
68                         me.playerNameLabelAlpha = me.playerNameLabel.alpha;\r
69                 n = 1.1;\r
70                 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_rpg", "Role Play"));\r
71                         if(e.checked) e0 = NULL;\r
72                 if(e0)\r
73                 {\r
74                         //print("NO CHECK\n");\r
75                         e0.setChecked(e0, 1);\r
76                 }\r
77         me.TR(me);\r
78         me.TR(me);\r
79                 me.mapListBox = makeVoretMapList();\r
80                 me.TD(me, 1, 3, e = makeVoretTextLabel(0, "Map list:"));\r
81                         makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback);\r
82         me.TR(me);\r
83                 me.TD(me, me.rows - 6, 3, me.mapListBox);\r
84         me.gotoRC(me, me.rows - 2, 0);\r
85                 me.TDempty(me, 0.5);\r
86                 me.TD(me, 1, 1, e = makeVoretButton("All", '0 0 0'));\r
87                         e.onClick = MapList_All;\r
88                         e.onClickEntity = me.mapListBox;\r
89                 me.TD(me, 1, 1, e = makeVoretButton("None", '0 0 0'));\r
90                         e.onClick = MapList_None;\r
91                         e.onClickEntity = me.mapListBox;\r
92                 me.TDempty(me, 0.5);\r
93 \r
94         me.gotoRC(me, 4, 3.5); me.setFirstColumn(me, me.currentColumn);\r
95                 me.TD(me, 1, 3, e = makeVoretTextLabel(0, "Match settings:"));\r
96         me.TR(me);\r
97                 me.sliderTimelimit = makeVoretSlider(1.0, 60.0, 0.5, "timelimit_override");\r
98                 me.TD(me, 1, 1, e = makeVoretSliderCheckBox(0, 1, me.sliderTimelimit, "Time limit:"));\r
99                 me.TD(me, 1, 2, me.sliderTimelimit);\r
100         me.TR(me);\r
101                 me.TDempty(me, 0.2);\r
102                 me.TD(me, 1, 2.8, e = makeVoretSliderCheckBox(-1, 0, me.sliderTimelimit, "Use map specified default"));\r
103         me.TR(me);\r
104                 me.sliderFraglimit = makeVoretSlider(1.0, 2000.0, 5, "fraglimit_override");\r
105                 me.TD(me, 1, 1, e = makeVoretSliderCheckBox(0, 1, me.sliderFraglimit, "Point limit:"));\r
106                         me.checkboxFraglimit = e;\r
107                 me.TD(me, 1, 2, me.sliderFraglimit);\r
108         me.TR(me);\r
109                 me.TDempty(me, 0.2);\r
110                 me.TD(me, 1, 2.8, e = makeVoretSliderCheckBox(-1, 0, me.sliderFraglimit, "Use map specified default"));\r
111                         me.checkboxFraglimitMapinfo = e;\r
112         me.TR(me);\r
113         me.TR(me);\r
114                 me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Player slots:"));\r
115                 me.TD(me, 1, 2, makeVoretSlider(1, 32, 1, "menu_maxplayers"));\r
116         me.TR(me);\r
117                 me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Number of bots:"));\r
118                 me.TD(me, 1, 2, makeVoretSlider(0, 9, 1, "bot_number"));\r
119         me.TR(me);\r
120                 me.TDempty(me, 0.2);\r
121                 me.TD(me, 1, 0.8, e = makeVoretTextLabel(0, "Bot skill:"));\r
122                         setDependent(e, "bot_number", 0, -1);\r
123                 me.TD(me, 1, 2, e = makeVoretTextSlider("skill"));\r
124                         e.addValue(e, "(no skill)", "0");\r
125                         e.addValue(e, "Vegetable", "1");\r
126                         e.addValue(e, "Insect", "2");\r
127                         e.addValue(e, "Mouse", "3");\r
128                         e.addValue(e, "Badger", "4");\r
129                         e.addValue(e, "Fox", "5");\r
130                         e.addValue(e, "Tiger", "6");\r
131                         e.addValue(e, "Crocodile", "7");\r
132                         e.addValue(e, "Dinosaur", "8");\r
133                         e.addValue(e, "Dragon", "9");\r
134                         e.addValue(e, "Vore Lord", "10");\r
135                         e.configureVoretTextSliderValues(e);\r
136                         setDependent(e, "bot_number", 0, -1);\r
137         me.TR(me);\r
138                 me.TDempty(me, 0.2);\r
139                 me.TD(me, 1, 0.8, e = makeVoretTextLabel(0, "Bot names:"));\r
140                 me.TD(me, 1, 0.7, e = makeVoretInputBox(1, "bot_prefix"));\r
141                         setDependent(e, "bot_number", 0, -1);\r
142                 me.TD(me, 1, 0.6, e = makeVoretTextLabel(0.5, "Shadow"));\r
143                         setDependent(e, "bot_number", 0, -1);\r
144                 me.TD(me, 1, 0.7, e = makeVoretInputBox(1, "bot_suffix"));\r
145                         setDependent(e, "bot_number", 0, -1);\r
146         me.TR(me);\r
147         me.TR(me);\r
148                 me.TDempty(me, 0.5);\r
149                 me.TD(me, 1, 2, e = makeVoretButton("Advanced settings...", '0 0 0'));\r
150                         e.onClick = DialogOpenButton_Click;\r
151                         e.onClickEntity = main.advancedDialog;\r
152                         main.advancedDialog.refilterEntity = me.mapListBox;\r
153                 me.TR(me);\r
154                 me.TR(me);\r
155                 me.TD(me, 1, 1, e = makeVoretButton("Mutators...", '0 0 0'));\r
156                         e.onClick = DialogOpenButton_Click;\r
157                         e.onClickEntity = main.mutatorsDialog;\r
158                         main.mutatorsDialog.refilterEntity = me.mapListBox;\r
159                 me.TD(me, 1, 2, e0 = makeVoretTextLabel(0, string_null));\r
160                         e0.textEntity = main.mutatorsDialog;\r
161                         e0.allowCut = 1;\r
162 \r
163         me.gotoRC(me, me.rows - 1, 0);\r
164                 me.TD(me, 1, 2, e = makeVoretCommandButton("Vore Town", '1 0 0', "map voretown", 0));\r
165                 me.TD(me, 1, me.columns - 2, e = makeVoretButton("Start Match!", '0 0 0'));\r
166                         e.onClick = MapList_LoadMap;\r
167                         e.onClickEntity = me.mapListBox;\r
168                         me.mapListBox.startButton = e;\r
169 \r
170         me.gameTypeChangeNotify(me);\r
171 }\r
172 \r
173 void GameType_ConfigureSliders(entity e, entity l, entity l2, string pLabel, float pMin, float pMax, float pStep, string pCvar)\r
174 {\r
175         if(pCvar == "")\r
176         {\r
177                 e.configureVoretSlider(e, pMin, pMax, pStep, string_null);\r
178                 l.setText(l, pLabel);\r
179                 e.disabled = l.disabled = l2.disabled = TRUE;\r
180         }\r
181         else\r
182         {\r
183                 e.configureVoretSlider(e, pMin, pMax, pStep, pCvar);\r
184                 l.setText(l, pLabel);\r
185                 e.disabled = l.disabled = l2.disabled = FALSE;\r
186         }\r
187 }\r
188 \r
189 void gameTypeChangeNotifyVoretServerCreateTab(entity me)\r
190 {\r
191         // tell the map list to update\r
192         float gt;\r
193         entity e, l, l2;\r
194         gt = MapInfo_CurrentGametype();\r
195         e = me.sliderFraglimit;\r
196         l = me.checkboxFraglimit;\r
197         l2 = me.checkboxFraglimitMapinfo;\r
198         switch(gt)\r
199         {\r
200                 case MAPINFO_TYPE_CTF:        GameType_ConfigureSliders(e, l, l2, "Capture limit:",   1,   20, 1, "capturelimit_override");     break;\r
201                 case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "g_domination_point_limit"); break;\r
202                 case MAPINFO_TYPE_KEYHUNT:    GameType_ConfigureSliders(e, l, l2, "Point limit:",   200, 1500, 50, "g_keyhunt_point_limit");    break;\r
203                 case MAPINFO_TYPE_LMS:        GameType_ConfigureSliders(e, l, l2, "Lives:",           3,   50,  1, "g_lms_lives_override");     break;\r
204                 case MAPINFO_TYPE_RACE:       GameType_ConfigureSliders(e, l, l2, "Laps:",            1,   25,  1, "g_race_laps_limit");        break;\r
205                 case MAPINFO_TYPE_ASSAULT:    GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;\r
206                 case MAPINFO_TYPE_ONSLAUGHT:  GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;\r
207                 case MAPINFO_TYPE_CTS:        GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;\r
208                 case MAPINFO_TYPE_RPG:        GameType_ConfigureSliders(e, l, l2, "Point limit:",    50,  500, 10, "");                         break;\r
209                 default:                      GameType_ConfigureSliders(e, l, l2, "Frag limit:",      5,  100,  5, "fraglimit_override");       break;\r
210         }\r
211         me.mapListBox.refilter(me.mapListBox);\r
212 }\r
213 \r
214 #endif\r