2 CLASS(XonoticServerCreateTab) EXTENDS(XonoticTab)
3 METHOD(XonoticServerCreateTab, fill, void(entity))
4 METHOD(XonoticServerCreateTab, gameTypeChangeNotify, void(entity))
5 ATTRIB(XonoticServerCreateTab, title, string, _("Create"))
6 ATTRIB(XonoticServerCreateTab, intendedWidth, float, 0.9)
7 ATTRIB(XonoticServerCreateTab, rows, float, 22)
8 ATTRIB(XonoticServerCreateTab, columns, float, 6.2) // added extra .2 for center space
10 ATTRIB(XonoticServerCreateTab, mapListBox, entity, NULL)
11 ATTRIB(XonoticServerCreateTab, sliderFraglimit, entity, NULL)
12 ATTRIB(XonoticServerCreateTab, sliderTimelimit, entity, NULL)
13 ATTRIB(XonoticServerCreateTab, checkboxFraglimit, entity, NULL)
14 ATTRIB(XonoticServerCreateTab, checkboxFraglimitMapinfo, entity, NULL)
15 ENDCLASS(XonoticServerCreateTab)
16 entity makeXonoticServerCreateTab();
21 entity makeXonoticServerCreateTab()
24 me = spawnXonoticServerCreateTab();
25 me.configureDialog(me);
29 void XonoticServerCreateTab_fill(entity me)
34 me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Game type:")));
36 me.TD(me, 8, 3, e = makeXonoticGametypeList());
45 //me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Match settings:"))); // pointless, overcrowds the dialog imo
47 me.sliderTimelimit = makeXonoticSlider(1.0, 60.0, 1, "timelimit_override");
48 me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderTimelimit, _("Time limit:")));
49 me.TD(me, 1, 2, me.sliderTimelimit);
52 me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderTimelimit, _("Use map specified default")));
54 me.sliderFraglimit = makeXonoticSlider(1.0, 2000.0, 5, "fraglimit_override");
55 me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, me.sliderFraglimit, _("Point limit:")));
56 me.checkboxFraglimit = e;
57 me.TD(me, 1, 2, me.sliderFraglimit);
60 me.TD(me, 1, 2.8, e = makeXonoticSliderCheckBox(-1, 0, me.sliderFraglimit, _("Use map specified default")));
61 me.checkboxFraglimitMapinfo = e;
63 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Player slots:")));
64 me.TD(me, 1, 2, makeXonoticSlider(1, 32, 1, "menu_maxplayers"));
66 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Number of bots:")));
67 me.TD(me, 1, 2, makeXonoticSlider(0, 9, 1, "bot_number"));
69 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Bot skill:")));
70 setDependent(e, "bot_number", 0, -1);
71 me.TD(me, 1, 2, e = makeXonoticTextSlider("skill"));
72 e.addValue(e, _("Botlike"), "0");
73 e.addValue(e, _("Beginner"), "1");
74 e.addValue(e, _("You will win"), "2");
75 e.addValue(e, _("You can win"), "3");
76 e.addValue(e, _("You might win"), "4");
77 e.addValue(e, _("Advanced"), "5");
78 e.addValue(e, _("Expert"), "6");
79 e.addValue(e, _("Pro"), "7");
80 e.addValue(e, _("Assassin"), "8");
81 e.addValue(e, _("Unhuman"), "9");
82 e.addValue(e, _("Godlike"), "10");
83 e.configureXonoticTextSliderValues(e);
84 setDependent(e, "bot_number", 0, -1);
87 me.TD(me, 1, 1, e = makeXonoticButton(_("Mutators..."), '0 0 0'));
88 e.onClick = DialogOpenButton_Click;
89 e.onClickEntity = main.mutatorsDialog;
90 main.mutatorsDialog.refilterEntity = me.mapListBox;
91 me.TD(me, 1, 2, e0 = makeXonoticTextLabel(0, string_null));
92 e0.textEntity = main.mutatorsDialog;
96 me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0'));
97 e.onClick = DialogOpenButton_Click;
98 e.onClickEntity = main.advancedDialog;
99 main.advancedDialog.refilterEntity = me.mapListBox;
101 me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
102 me.mapListBox = makeXonoticMapList();
103 me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Map list:")));
104 makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback);
106 me.TD(me, me.rows - 4, 3, me.mapListBox);
107 me.gotoRC(me, me.rows - 3, 3.5);
108 me.TDempty(me, 0.25);
109 me.TD(me, 1, 1.125, e = makeXonoticButton(_("Select all"), '0 0 0'));
110 e.onClick = MapList_All;
111 e.onClickEntity = me.mapListBox;
112 me.TD(me, 1, 1.125, e = makeXonoticButton(_("Select none"), '0 0 0'));
113 e.onClick = MapList_None;
114 e.onClickEntity = me.mapListBox;
115 me.TDempty(me, 0.25);
117 me.gotoRC(me, me.rows - 1, 0);
118 me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Multiplayer!"), '0 0 0'));
119 e.onClick = MapList_LoadMap;
120 e.onClickEntity = me.mapListBox;
121 me.mapListBox.startButton = e;
123 me.gameTypeChangeNotify(me);
126 void GameType_ConfigureSliders(entity e, entity l, entity l2, string pLabel, float pMin, float pMax, float pStep, string pCvar)
130 e.configureXonoticSlider(e, pMin, pMax, pStep, string_null);
131 l.setText(l, pLabel);
132 e.disabled = l.disabled = l2.disabled = TRUE;
136 e.configureXonoticSlider(e, pMin, pMax, pStep, pCvar);
137 l.setText(l, pLabel);
138 e.disabled = l.disabled = l2.disabled = FALSE;
142 void XonoticServerCreateTab_gameTypeChangeNotify(entity me)
144 // tell the map list to update
147 gt = MapInfo_CurrentGametype();
148 e = me.sliderFraglimit;
149 l = me.checkboxFraglimit;
150 l2 = me.checkboxFraglimitMapinfo;
153 case MAPINFO_TYPE_CTF: GameType_ConfigureSliders(e, l, l2, _("Capture limit:"), 1, 20, 1, "capturelimit_override"); break;
154 case MAPINFO_TYPE_DOMINATION: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, "g_domination_point_limit"); break;
155 case MAPINFO_TYPE_KEYHUNT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 200, 1500, 50, "g_keyhunt_point_limit"); break;
156 case MAPINFO_TYPE_LMS: GameType_ConfigureSliders(e, l, l2, _("Lives:"), 3, 50, 1, "g_lms_lives_override"); break;
157 case MAPINFO_TYPE_RACE: GameType_ConfigureSliders(e, l, l2, _("Laps:"), 1, 25, 1, "g_race_laps_limit"); break;
158 case MAPINFO_TYPE_NEXBALL: GameType_ConfigureSliders(e, l, l2, _("Goals:"), 1, 50, 1, "g_nexball_goallimit"); break;
159 case MAPINFO_TYPE_ASSAULT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break;
160 case MAPINFO_TYPE_ONSLAUGHT: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break;
161 case MAPINFO_TYPE_CTS: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 50, 500, 10, ""); break;
162 case MAPINFO_TYPE_INVASION: GameType_ConfigureSliders(e, l, l2, _("Point limit:"), 5, 0, 5, ""); break;
163 default: GameType_ConfigureSliders(e, l, l2, _("Frag limit:"), 5, 100, 5, "fraglimit_override"); break;
165 me.mapListBox.refilter(me.mapListBox);