Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
dialog_multiplayer_create.qc File Reference
#include "dialog_multiplayer_create.qh"
#include "dialog_multiplayer_create_mapinfo.qh"
#include "dialog_multiplayer_create_mutators.qh"
#include "gametypelist.qh"
#include "maplist.qh"
#include <common/mapinfo.qh>
#include "checkbox.qh"
#include "image.qh"
#include "mixedslider.qh"
#include "textlabel.qh"
#include "slider.qh"
#include "mainwindow.qh"
#include "button.qh"
#include "commandbutton.qh"
#include "leavematchbutton.qh"
#include "inputbox.qh"
Include dependency graph for dialog_multiplayer_create.qc:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void GameType_ConfigureSliders (entity me, string pLabel, float pMin, float pMax, float pStep, string pCvar, string tCvar, string pTooltip)
void GameType_ConfigureSliders_for_CurrentGametype (entity me)
entity makeXonoticServerCreateTab ()
void XonoticServerCreateTab_fill (entity me)
void XonoticServerCreateTab_gameTypeChangeNotify (entity me)
void XonoticServerCreateTab_gameTypeSelectNotify (entity me)

Function Documentation

◆ GameType_ConfigureSliders()

void GameType_ConfigureSliders ( entity me,
string pLabel,
float pMin,
float pMax,
float pStep,
string pCvar,
string tCvar,
string pTooltip )

Definition at line 21 of file dialog_multiplayer_create.qc.

22{
23 int i;
24 entity e = me.sliderFraglimit;
25 entity l = me.labelFraglimit;
26 e.configureXonoticMixedSlider(e, pCvar, pTooltip);
27 e.disabled = l.disabled = !pCvar;
28 l.setText(l, pLabel);
29
30 // clear old values
31 for(i = 0; i < e.nValues; ++i);
32 strfree(e.(valueStrings[i]));
33 e.clearValues(e);
34
35 if(pCvar != "")
36 {
37 // set new values
38 e.addText(e, strzone(_("Default")), -1);
39 e.addRange(e, pMin, pMax, pStep);
40 e.addText(e, strzone(_("Unlimited")), 0);
41 }
42 e.configureXonoticMixedSliderValues(e);
43
44
45 entity t = me.sliderTeams;
46 entity tl = me.labelTeams;
47 t.configureXonoticMixedSlider(t, tCvar, string_null);
48 tl.disabled = t.disabled = !tCvar;
49 t.nValues = (tCvar == "") ? 0 : 4; // instead of clearing / readding the very same values
50 t.configureXonoticMixedSliderValues(t);
51}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
string strzone(string s)
string string_null
Definition nil.qh:9
#define strfree(this)
Definition string.qh:59

References entity(), strfree, string_null, and strzone().

Referenced by GameType_ConfigureSliders_for_CurrentGametype().

◆ GameType_ConfigureSliders_for_CurrentGametype()

void GameType_ConfigureSliders_for_CurrentGametype ( entity me)

Definition at line 53 of file dialog_multiplayer_create.qc.

54{
57}
virtual void m_configuremenu()
Definition mapinfo.qh:91
void GameType_ConfigureSliders(entity me, string pLabel, float pMin, float pMax, float pStep, string pCvar, string tCvar, string pTooltip)
Gametype MapInfo_CurrentGametype()
Definition mapinfo.qc:1490

References entity(), GameType_ConfigureSliders(), Gametype::m_configuremenu(), and MapInfo_CurrentGametype().

Referenced by XonoticServerCreateTab_fill(), and XonoticServerCreateTab_gameTypeChangeNotify().

◆ makeXonoticServerCreateTab()

entity makeXonoticServerCreateTab ( )

Definition at line 59 of file dialog_multiplayer_create.qc.

60{
61 entity me;
63 me.configureDialog(me);
64 return me;
65}
#define NEW(cname,...)
Definition oo.qh:117

References entity(), and NEW.

Referenced by XonoticServerCreateTab::ATTRIB(), and XonoticMultiplayerDialog_fill().

◆ XonoticServerCreateTab_fill()

void XonoticServerCreateTab_fill ( entity me)

Definition at line 67 of file dialog_multiplayer_create.qc.

68{
69 entity e, e0;
70
71 // the left half begins here
72
73 me.gotoRC(me, 0.5, 0);
74 me.TD(me, 1, 3, makeXonoticHeaderLabel(_("Gametype")));
75 me.TR(me);
76 me.TD(me, 10.5, 3, e = makeXonoticGametypeList());
77
78 me.gotoRC(me, 12, 0);
79 me.TDempty(me, 0.1);
80 me.TD(me, 1, 1, e = makeXonoticCheckBox_T(0, "menu_create_show_all", _("Show all"),
81 _("Show all available gametypes")));
82 me.gotoRC(me, 13.5, 0);
83 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time limit:")));
84 me.TD(me, 1, 2, e = makeXonoticMixedSlider_T("timelimit_override",
85 _("Time limit in minutes that when hit, will end the match")));
86 e.formatString = "m";
87 e.addText(e, ZCTX(_("TIMLIM^Default")), -1);
88 e.addRange(e, 1, 10, 1);
89 e.addRange(e, 15, 30, 5);
90 e.addRange(e, 40, 60, 10);
91 e.addText(e, ZCTX(_("TIMLIM^Infinite")), 0);
92 e.configureXonoticMixedSliderValues(e);
93 me.TR(me);
94 me.TD(me, 1, 1, me.labelFraglimit = makeXonoticTextLabel(0, _("Frag limit:")));
95 me.TD(me, 1, 2, e = me.sliderFraglimit = makeXonoticMixedSlider("fraglimit_override"));
96
97 me.gotoRC(me, 16, 0);
98 me.TD(me, 1, 1, me.labelTeams = makeXonoticTextLabel(0, _("Teams:")));
99 me.TD(me, 1, 2, e = me.sliderTeams = makeXonoticMixedSlider(string_null));
100 e.addText(e, _("Default"), 0);
101 e.addText(e, _("2 teams"), 2);
102 e.addText(e, _("3 teams"), 3);
103 e.addText(e, _("4 teams"), 4);
104 e.configureXonoticMixedSliderValues(e);
105 me.TR(me);
106 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Player slots:")));
107 me.TD(me, 1, 2, e = makeXonoticSlider_T(1, 32, 1, "menu_maxplayers",
108 _("The maximum amount of players or bots that can be connected to your server at once")));
109 me.TR(me);
110 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Number of bots:")));
111 setDependent(e, "g_campaign", 0, 0);
112 me.TD(me, 1, 2, e = makeXonoticSlider_T(0, 9, 1, "bot_number",
113 _("Amount of bots on your server")));
114 setDependent(e, "g_campaign", 0, 0);
115 me.TR(me);
116 me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Bot skill:")));
117 setDependentNOT(e, "bot_number", 0);
118 setDependentAND(e, "g_campaign", 0, 0);
119 me.TD(me, 1, 2, e = makeXonoticMixedSlider_T("skill",
120 _("Specify how experienced the bots will be")));
121 e.addText(e, _("Botlike"), 0);
122 e.addText(e, _("Beginner"), 1);
123 e.addText(e, _("You will win"), 2);
124 e.addText(e, _("You can win"), 3);
125 e.addText(e, _("You might win"), 4);
126 e.addText(e, _("Advanced"), 5);
127 e.addText(e, _("Expert"), 6);
128 e.addText(e, _("Pro"), 7);
129 e.addText(e, _("Assassin"), 8);
130 e.addText(e, _("Unhuman"), 9);
131 e.addText(e, _("Godlike"), 10);
132 e.configureXonoticMixedSliderValues(e);
133 setDependentNOT(e, "bot_number", 0);
134 setDependentAND(e, "g_campaign", 0, 0);
135
136 // mapListBox is in the right column but the ref is needed for mutators dialog here
137 me.mapListBox = makeXonoticMapList();
138 // here we use the following line instead of me.TR(me) for better visual spacing;
139 // this decision was made in this poll: http://forums.xonotic.org/showthread.php?tid=5445
140 me.gotoRC(me, me.rows - 2.5, 0);
141 me.TDempty(me, 0.5);
142 me.TD(me, 1, 2, e = makeXonoticButton_T(_("Mutators..."), '0 0 0',
143 _("Mutators and weapon arenas")));
144 e.onClick = DialogOpenButton_Click;
145 e.onClickEntity = main.mutatorsDialog;
146 main.mutatorsDialog.refilterEntity = me.mapListBox;
147 setDependent(e, "g_campaign", 0, 0);
148
149 // The right half begins here
150
151 me.gotoRC(me, 0.5, 3.2); me.setFirstColumn(me, me.currentColumn);
152 // the maplistbox
153 me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Maplist")));
154 makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback);
155 me.TR(me);
156 // we use 5.8 here to visually match the bottom line of the component on the left (Bot Skill)
157 me.TD(me, me.rows - 6.8, 3, me.mapListBox);
158
159 me.gotoRC(me, me.rows - 4.5, me.firstColumn);
160 // string filter label and box
161 me.TD(me, 1, 0.35, e = makeXonoticTextLabel(1, _("Filter:")));
162 me.mapListBox.stringFilterBox = makeXonoticInputBox_T(0, string_null,
163 _("Click here or CTRL+F to provide a keyword to narrow down the list; CTRL+DEL to clear; ENTER when done."));
164 me.TD(me, 1, me.columns - me.firstColumn - 0.35, e = me.mapListBox.stringFilterBox);
167 e.onChangeEntity = me.mapListBox;
168
169 me.gotoRC(me, me.rows - 3.5, me.firstColumn);
170 // the selection buttons
171 me.TDempty(me, 0.2);
172 me.TD(me, 1, 1.3, e = makeXonoticButton_T(_("Add shown"), '0 0 0',
173 _("Add the maps shown in the list to your selection")));
174 e.onClick = MapList_Add_Shown;
175 e.onClickEntity = me.mapListBox;
176 me.TD(me, 1, 1.3, e = makeXonoticButton_T(_("Remove shown"), '0 0 0',
177 _("Remove the maps shown in the list from your selection")));
178 e.onClick = MapList_Remove_Shown;
179 e.onClickEntity = me.mapListBox;
180 me.gotoRC(me, me.rows - 2.5, me.firstColumn);
181 me.TDempty(me, 0.2);
182 me.TD(me, 1, 1.3, e = makeXonoticButton_T(_("Add all"), '0 0 0',
183 _("Add every available map to your selection")));
184 e.onClick = MapList_Add_All;
185 e.onClickEntity = me.mapListBox;
186 me.TD(me, 1, 1.3, e = makeXonoticButton_T(_("Remove all"), '0 0 0',
187 _("Remove all the maps from your selection")));
188 e.onClick = MapList_Remove_All;
189 e.onClickEntity = me.mapListBox;
190
191 // bottom row
192 me.gotoRC(me, me.rows - 1, 0);
193 me.TDempty(me, me.columns * 1/12);
194 me.TD(me, 1, me.columns * 5/12, e = makeXonoticLeaveMatchButton('0 0 0', 0));
195 me.TD(me, 1, me.columns * 5/12, e = makeXonoticButton(_("Start multiplayer!"), '0 0 0'));
196 e.onClick = MapList_LoadMap;
197 e.onClickEntity = me.mapListBox;
198 me.mapListBox.startButton = e;
199
201}
void GameType_ConfigureSliders_for_CurrentGametype(entity me)
entity makeXonoticGametypeList()
#define ZCTX(s)
Definition i18n.qh:68
entity makeXonoticLeaveMatchButton(vector theColor, int theFlags)
#define main
Definition _all.inc:202
void MapList_StringFilterBox_Change(entity box, entity me)
Definition maplist.qc:227
float MapList_StringFilterBox_keyDown(entity me, float scan, float ascii, float shift)
Definition maplist.qc:391
void MapList_Remove_All(entity btn, entity me)
Definition maplist.qc:272
entity makeXonoticMapList()
Definition maplist.qc:15
void MapList_Add_Shown(entity btn, entity me)
Definition maplist.qc:236
void MapList_Add_All(entity btn, entity me)
Definition maplist.qc:260
void MapList_Remove_Shown(entity btn, entity me)
Definition maplist.qc:248
void MapList_LoadMap(entity btn, entity me)
Definition maplist.qc:278
entity makeXonoticButton_T(string theText, vector theColor, string theTooltip)
Definition button.qc:3
entity makeXonoticButton(string theText, vector theColor)
Definition button.qc:10
void makeCallback(entity e, entity cbent, void(entity, entity) cbfunc)
Definition util.qc:107
void setDependentAND(entity e, string theCvarName, float theCvarMin, float theCvarMax)
Definition util.qc:213
void setDependentNOT(entity e, string theCvarName, float theCvarValue)
Definition util.qc:192
void setDependent(entity e, string theCvarName, float theCvarMin, float theCvarMax)
Definition util.qc:180
void DialogOpenButton_Click(entity button, entity tab)
entity makeXonoticTextLabel(float theAlign, string theText)
Definition textlabel.qc:3
entity makeXonoticHeaderLabel(string theText)
Definition textlabel.qc:10
entity makeXonoticCheckBox_T(float isInverted, string theCvar, string theText, string theTooltip)
Definition checkbox.qc:3
entity makeXonoticInputBox_T(bool doEditColorCodes, string theCvar, string theTooltip)
Definition inputbox.qc:3
entity makeXonoticMixedSlider(string theCvar)
entity makeXonoticMixedSlider_T(string theCvar, string theTooltip)
Definition mixedslider.qc:3
entity makeXonoticSlider_T(float theValueMin, float theValueMax, float theValueStep, string theCvar, string theTooltip)
Definition slider.qc:3

References DialogOpenButton_Click(), entity(), GameType_ConfigureSliders_for_CurrentGametype(), main, makeCallback(), makeXonoticButton(), makeXonoticButton_T(), makeXonoticCheckBox_T(), makeXonoticGametypeList(), makeXonoticHeaderLabel(), makeXonoticInputBox_T(), makeXonoticLeaveMatchButton(), makeXonoticMapList(), makeXonoticMixedSlider(), makeXonoticMixedSlider_T(), makeXonoticSlider_T(), makeXonoticTextLabel(), MapList_Add_All(), MapList_Add_Shown(), MapList_LoadMap(), MapList_Remove_All(), MapList_Remove_Shown(), MapList_StringFilterBox_Change(), MapList_StringFilterBox_keyDown(), setDependent(), setDependentAND(), setDependentNOT(), string_null, and ZCTX.

◆ XonoticServerCreateTab_gameTypeChangeNotify()

void XonoticServerCreateTab_gameTypeChangeNotify ( entity me)

Definition at line 203 of file dialog_multiplayer_create.qc.

204{
206
207 me.mapListBox.refilter(me.mapListBox);
208}

References entity(), and GameType_ConfigureSliders_for_CurrentGametype().

◆ XonoticServerCreateTab_gameTypeSelectNotify()

void XonoticServerCreateTab_gameTypeSelectNotify ( entity me)

Definition at line 210 of file dialog_multiplayer_create.qc.

211{
212 me.setFocus(me, me.mapListBox);
213}

References entity().