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
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
19 #ifdef IMPLEMENTATION
\r
21 entity makeVoretServerCreateTab()
\r
24 me = spawnVoretServerCreateTab();
\r
25 me.configureDialog(me);
\r
29 void fillVoretServerCreateTab(entity me)
\r
35 me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Single:"));
\r
36 me.playerNameLabelAlpha = me.playerNameLabel.alpha;
\r
38 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_dm", "DM"));
\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
49 me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Team:"));
\r
50 me.playerNameLabelAlpha = me.playerNameLabel.alpha;
\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
67 me.TD(me, 1, 0.5, me.playerNameLabel = makeVoretTextLabel(0, "Other:"));
\r
68 me.playerNameLabelAlpha = me.playerNameLabel.alpha;
\r
70 me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_rpg", "Role Play"));
\r
71 if(e.checked) e0 = NULL;
\r
74 //print("NO CHECK\n");
\r
75 e0.setChecked(e0, 1);
\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
83 me.TD(me, me.rows - 7, 3, me.mapListBox);
\r
84 me.gotoRC(me, me.rows - 3, 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
94 me.gotoRC(me, 3, 3.5); me.setFirstColumn(me, me.currentColumn);
\r
95 me.TD(me, 1, 3, e = makeVoretTextLabel(0, "Match settings:"));
\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
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
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
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
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
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
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
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
148 me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Map voting:"));
\r
149 me.TD(me, 1, 2, e = makeVoretTextSlider("g_maplist_votable"));
\r
150 e.addValue(e, "No voting", "0");
\r
151 e.addValue(e, "2 choices", "2");
\r
152 e.addValue(e, "3 choices", "3");
\r
153 e.addValue(e, "4 choices", "4");
\r
154 e.addValue(e, "5 choices", "5");
\r
155 e.addValue(e, "6 choices", "6");
\r
156 e.addValue(e, "7 choices", "7");
\r
157 e.addValue(e, "8 choices", "8");
\r
158 e.addValue(e, "9 choices", "9");
\r
159 e.configureVoretTextSliderValues(e);
\r
161 me.TD(me, 1, 3, e = makeVoretCheckBoxEx(0.5, 0, "sv_vote_simple_majority_factor", "Simple majority wins vcall"));
\r
164 me.TDempty(me, 0.5);
\r
165 me.TD(me, 1, 2, e = makeVoretButton("Advanced settings...", '0 0 0'));
\r
166 e.onClick = DialogOpenButton_Click;
\r
167 e.onClickEntity = main.advancedDialog;
\r
168 main.advancedDialog.refilterEntity = me.mapListBox;
\r
171 me.TD(me, 1, 1, e = makeVoretButton("Mutators...", '0 0 0'));
\r
172 e.onClick = DialogOpenButton_Click;
\r
173 e.onClickEntity = main.mutatorsDialog;
\r
174 main.mutatorsDialog.refilterEntity = me.mapListBox;
\r
175 me.TD(me, 1, 2, e0 = makeVoretTextLabel(0, string_null));
\r
176 e0.textEntity = main.mutatorsDialog;
\r
179 me.gotoRC(me, me.rows - 1, 0);
\r
180 me.TD(me, 1, 2, e = makeVoretCommandButton("Vore Town", '1 0 0', "map voretown", 0));
\r
181 me.TD(me, 1, me.columns - 2, e = makeVoretButton("Start Match!", '0 0 0'));
\r
182 e.onClick = MapList_LoadMap;
\r
183 e.onClickEntity = me.mapListBox;
\r
184 me.mapListBox.startButton = e;
\r
186 me.gameTypeChangeNotify(me);
\r
189 void GameType_ConfigureSliders(entity e, entity l, entity l2, string pLabel, float pMin, float pMax, float pStep, string pCvar)
\r
193 e.configureVoretSlider(e, pMin, pMax, pStep, string_null);
\r
194 l.setText(l, pLabel);
\r
195 e.disabled = l.disabled = l2.disabled = TRUE;
\r
199 e.configureVoretSlider(e, pMin, pMax, pStep, pCvar);
\r
200 l.setText(l, pLabel);
\r
201 e.disabled = l.disabled = l2.disabled = FALSE;
\r
205 void gameTypeChangeNotifyVoretServerCreateTab(entity me)
\r
207 // tell the map list to update
\r
210 gt = MapInfo_CurrentGametype();
\r
211 e = me.sliderFraglimit;
\r
212 l = me.checkboxFraglimit;
\r
213 l2 = me.checkboxFraglimitMapinfo;
\r
216 case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, "Capture limit:", 1, 20, 1, "capturelimit_override"); break;
\r
217 case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, "g_domination_point_limit"); break;
\r
218 case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 200, 1500, 50, "g_keyhunt_point_limit"); break;
\r
219 case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, "Lives:", 3, 50, 1, "g_lms_lives_override"); break;
\r
220 case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, "Laps:", 1, 25, 1, "g_race_laps_limit"); break;
\r
221 case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break;
\r
222 case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break;
\r
223 case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break;
\r
224 case MAPINFO_TYPE_RPG: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break;
\r
225 default: GameType_ConfigureSliders(e, l, l2, "Frag limit:", 5, 100, 5, "fraglimit_override"); break;
\r
227 me.mapListBox.refilter(me.mapListBox);
\r