#ifdef INTERFACE CLASS(VoretServerCreateTab) EXTENDS(VoretTab) METHOD(VoretServerCreateTab, fill, void(entity)) METHOD(VoretServerCreateTab, gameTypeChangeNotify, void(entity)) ATTRIB(VoretServerCreateTab, title, string, "Create") ATTRIB(VoretServerCreateTab, intendedWidth, float, 0.9) ATTRIB(VoretServerCreateTab, rows, float, 22) ATTRIB(VoretServerCreateTab, columns, float, 6.5) ATTRIB(VoretServerCreateTab, mapListBox, entity, NULL) ATTRIB(VoretServerCreateTab, sliderFraglimit, entity, NULL) ATTRIB(VoretServerCreateTab, sliderTimelimit, entity, NULL) ATTRIB(VoretServerCreateTab, checkboxFraglimit, entity, NULL) ATTRIB(VoretServerCreateTab, checkboxFraglimitMapinfo, entity, NULL) ENDCLASS(VoretServerCreateTab) entity makeVoretServerCreateTab(); #endif #ifdef IMPLEMENTATION entity makeVoretServerCreateTab() { entity me; me = spawnVoretServerCreateTab(); me.configureDialog(me); return me; } void fillVoretServerCreateTab(entity me) { entity e, e0; float n; me.TR(me); me.TD(me, 1, 0.5, e = makeVoretTextLabel(0, "Single:")); n = 5.5; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_dm", "DM")); e0 = e; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_lms", "LMS")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_arena", "Arena")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_race", "Race")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_cts", "Race CTS")); if(e.checked) e0 = NULL; me.TR(me); me.TD(me, 1, 0.5, e = makeVoretTextLabel(0, "Team:")); n = 7.7; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_tdm", "TDM")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_ctf", "CTF")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_ca", "CA")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_domination", "Domination")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_keyhunt", "Key Hunt")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_assault", "Assault")); if(e.checked) e0 = NULL; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_onslaught", "Onslaught")); if(e.checked) e0 = NULL; me.TR(me); me.TD(me, 1, 0.5, e = makeVoretTextLabel(0, "Other:")); n = 1.1; me.TD(me, 1, me.columns / n, e = makeVoretGametypeButton(1, "g_rpg", "Role Play")); if(e.checked) e0 = NULL; if(e0) { //print("NO CHECK\n"); e0.setChecked(e0, 1); } me.TR(me); me.TR(me); me.mapListBox = makeVoretMapList(); me.TD(me, 1, 3, e = makeVoretTextLabel(0, "Map list:")); makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback); me.TR(me); me.TD(me, me.rows - 7, 3, me.mapListBox); me.gotoRC(me, me.rows - 2, 0); me.TDempty(me, 0.5); me.TD(me, 1, 1, e = makeVoretButton("All", '0 0 0')); e.onClick = MapList_All; e.onClickEntity = me.mapListBox; me.TD(me, 1, 1, e = makeVoretButton("None", '0 0 0')); e.onClick = MapList_None; e.onClickEntity = me.mapListBox; me.TDempty(me, 0.5); me.gotoRC(me, 4, 3.5); me.setFirstColumn(me, me.currentColumn); me.TD(me, 1, 3, e = makeVoretTextLabel(0, "Match settings:")); me.TR(me); me.sliderTimelimit = makeVoretSlider(1.0, 60.0, 0.5, "timelimit_override"); me.TD(me, 1, 1, e = makeVoretSliderCheckBox(0, 1, me.sliderTimelimit, "Time limit:")); me.TD(me, 1, 2, me.sliderTimelimit); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 2.8, e = makeVoretSliderCheckBox(-1, 0, me.sliderTimelimit, "Use map specified default")); me.TR(me); me.sliderFraglimit = makeVoretSlider(1.0, 2000.0, 5, "fraglimit_override"); me.TD(me, 1, 1, e = makeVoretSliderCheckBox(0, 1, me.sliderFraglimit, "Point limit:")); me.checkboxFraglimit = e; me.TD(me, 1, 2, me.sliderFraglimit); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 2.8, e = makeVoretSliderCheckBox(-1, 0, me.sliderFraglimit, "Use map specified default")); me.checkboxFraglimitMapinfo = e; me.TR(me); me.TR(me); me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Player slots:")); me.TD(me, 1, 2, makeVoretSlider(1, 32, 1, "menu_maxplayers")); me.TR(me); me.TD(me, 1, 1, e = makeVoretTextLabel(0, "Number of bots:")); me.TD(me, 1, 2, makeVoretSlider(0, 9, 1, "bot_number")); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeVoretTextLabel(0, "Bot skill:")); setDependent(e, "bot_number", 0, -1); me.TD(me, 1, 2, e = makeVoretTextSlider("skill")); e.addValue(e, "(no skill)", "0"); e.addValue(e, "Vegetable", "1"); e.addValue(e, "Insect", "2"); e.addValue(e, "Mouse", "3"); e.addValue(e, "Badger", "4"); e.addValue(e, "Fox", "5"); e.addValue(e, "Tiger", "6"); e.addValue(e, "Crocodile", "7"); e.addValue(e, "Dinosaur", "8"); e.addValue(e, "Dragon", "9"); e.addValue(e, "Vore Lord", "10"); e.configureVoretTextSliderValues(e); setDependent(e, "bot_number", 0, -1); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 0.8, e = makeVoretTextLabel(0, "Bot names:")); me.TD(me, 1, 0.7, e = makeVoretInputBox(1, "bot_prefix")); setDependent(e, "bot_number", 0, -1); me.TD(me, 1, 0.6, e = makeVoretTextLabel(0.5, "Shadow")); setDependent(e, "bot_number", 0, -1); me.TD(me, 1, 0.7, e = makeVoretInputBox(1, "bot_suffix")); setDependent(e, "bot_number", 0, -1); me.TR(me); me.TR(me); me.TDempty(me, 0.5); me.TD(me, 1, 2, e = makeVoretButton("Advanced settings...", '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.advancedDialog; main.advancedDialog.refilterEntity = me.mapListBox; me.TR(me); me.TR(me); me.TD(me, 1, 1, e = makeVoretButton("Mutators...", '0 0 0')); e.onClick = DialogOpenButton_Click; e.onClickEntity = main.mutatorsDialog; main.mutatorsDialog.refilterEntity = me.mapListBox; me.TD(me, 1, 2, e0 = makeVoretTextLabel(0, string_null)); e0.textEntity = main.mutatorsDialog; e0.allowCut = 1; me.gotoRC(me, me.rows - 1, 0); me.TD(me, 1, me.columns, e = makeVoretButton("Start Match!", '0 0 0')); e.onClick = MapList_LoadMap; e.onClickEntity = me.mapListBox; me.mapListBox.startButton = e; me.gameTypeChangeNotify(me); } void GameType_ConfigureSliders(entity e, entity l, entity l2, string pLabel, float pMin, float pMax, float pStep, string pCvar) { if(pCvar == "") { e.configureVoretSlider(e, pMin, pMax, pStep, string_null); l.setText(l, pLabel); e.disabled = l.disabled = l2.disabled = TRUE; } else { e.configureVoretSlider(e, pMin, pMax, pStep, pCvar); l.setText(l, pLabel); e.disabled = l.disabled = l2.disabled = FALSE; } } void gameTypeChangeNotifyVoretServerCreateTab(entity me) { // tell the map list to update float gt; entity e, l, l2; gt = MapInfo_CurrentGametype(); e = me.sliderFraglimit; l = me.checkboxFraglimit; l2 = me.checkboxFraglimitMapinfo; switch(gt) { case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, "Capture limit:", 1, 20, 1, "capturelimit_override"); break; case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, "g_domination_point_limit"); break; case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 200, 1500, 50, "g_keyhunt_point_limit"); break; case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, "Lives:", 3, 50, 1, "g_lms_lives_override"); break; case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, "Laps:", 1, 25, 1, "g_race_laps_limit"); break; case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; case MAPINFO_TYPE_RPG: GameType_ConfigureSliders(e, l, l2, "Point limit:", 50, 500, 10, ""); break; default: GameType_ConfigureSliders(e, l, l2, "Frag limit:", 5, 100, 5, "fraglimit_override"); break; } me.mapListBox.refilter(me.mapListBox); } #endif