-#ifdef INTERFACE
-CLASS(XonoticProfileTab) EXTENDS(XonoticTab)
- METHOD(XonoticProfileTab, fill, void(entity))
- METHOD(XonoticProfileTab, draw, void(entity))
- ATTRIB(XonoticProfileTab, title, string, _("Profile"))
- ATTRIB(XonoticProfileTab, intendedWidth, float, 0.9)
- ATTRIB(XonoticProfileTab, rows, float, 23)
- ATTRIB(XonoticProfileTab, columns, float, 6.1) // added extra .2 for center space
- ATTRIB(XonoticProfileTab, playerNameLabel, entity, NULL)
- ATTRIB(XonoticProfileTab, playerNameLabelAlpha, float, SKINALPHA_HEADER)
-ENDCLASS(XonoticProfileTab)
-entity makeXonoticProfileTab();
-#endif
+#include "dialog_multiplayer_profile.qh"
+
+#include "playermodel.qh"
+#include "statslist.qh"
+#include "languagelist.qh"
+#include "textlabel.qh"
+#include "commandbutton.qh"
+#include "inputbox.qh"
+#include "colorpicker.qh"
+#include "charmap.qh"
+#include "colorbutton.qh"
+#include "checkbox.qh"
+#include "radiobutton.qh"
-#ifdef IMPLEMENTATION
entity makeXonoticProfileTab()
{
entity me;
- me = spawnXonoticProfileTab();
+ me = NEW(XonoticProfileTab);
me.configureDialog(me);
return me;
}
{
entity e, pms, label, box;
float i;
+ entity profileApplyButton = makeXonoticCommandButton(_("Apply immediately"), '0 0 0',
+ "color -1 -1;"
+ "name \"$_cl_name\";"
+ "playermodel $_cl_playermodel;"
+ "playerskin $_cl_playerskin;"
+ "sendcvar cl_allow_uidtracking;"
+ "sendcvar cl_allow_uid2name;"
+ , COMMANDBUTTON_APPLY);
+ profileApplyButton.disableOnClick = true;
// ==============
// NAME SECTION
label.fontSize = SKINFONTSIZE_TITLE;
me.gotoRC(me, 2.5, 0);
- me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name"));
+ me.TD(me, 1, 3.0, box = makeXonoticInputBox_T(1, "_cl_name",
+ _("Name under which you will appear in the game")));
box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved
box.maxLength = -127; // negative means encoded length in bytes
- box.saveImmediately = 1;
+ box.saveImmediately = 0; // Sorry, can't do this, it spams "name" commands.
box.enableClearButton = 0;
+ box.applyButton = profileApplyButton;
label.textEntity = box;
me.TR(me);
me.TD(me, 5, 1, e = makeXonoticColorpicker(box));
me.TD(me, 1, 0.3, e = makeXonoticButton("<<", '0 0 0'));
e.onClick = PlayerModelSelector_Prev_Click;
e.onClickEntity = pms;
+ e.applyButton = profileApplyButton;
me.TD(me, 11.5, 1.4, pms);
me.TD(me, 1, 0.3, e = makeXonoticButton(">>", '0 0 0'));
e.onClick = PlayerModelSelector_Next_Click;
e.onClickEntity = pms;
+ e.applyButton = profileApplyButton;
//me.setFirstColumn(me, me.currentColumn + 2); // MODEL LEFT, COLOR RIGHT
me.gotoRC(me, me.currentRow, 0); me.setFirstColumn(me, me.currentColumn); // MODEL RIGHT, COLOR LEFT
if(mod(i, 5) == 0)
me.TR(me);
me.TDNoMargin(me, 1, 0.2, e = makeXonoticColorButton(1, 0, i), '0 1 0');
+ e.applyButton = profileApplyButton;
}
me.TR(me);
me.TR(me);
if(mod(i, 5) == 0)
me.TR(me);
me.TDNoMargin(me, 1, 0.2, e = makeXonoticColorButton(2, 1, i), '0 1 0');
+ e.applyButton = profileApplyButton;
}
// ====================
me.TR(me);
me.TDempty(me, 0.25);
me.TD(me, 1, 2.5, e = makeXonoticCheckBox(0, "cl_allow_uidtracking", _("Allow player statistics to track your client")));
+ e.applyButton = profileApplyButton;
me.TR(me);
me.TDempty(me, 0.25);
me.TD(me, 1, 2.5, e = makeXonoticCheckBox(0, "cl_allow_uid2name", _("Allow player statistics to use your nickname")));
- setDependent(e, "cl_allow_uidtracking", 1, 1);
+ e.applyButton = profileApplyButton;
+ setDependent(e, "cl_allow_uidtracking", 1, 1);
me.gotoRC(me, 4, 3.1); // TOP RIGHT
//me.gotoRC(me, 12.5, 3.1); // BOTTOM RIGHT
//me.gotoRC(me, 12.5, 0); // BOTTOM LEFT
#endif
me.gotoRC(me, me.rows - 1, 0);
- me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "color -1 -1;name \"$_cl_name\";sendcvar cl_weaponpriority;sendcvar cl_autoswitch;sendcvar cl_forceplayermodels;sendcvar cl_forceplayermodelsfromxonotic;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY));
+ me.TD(me, 1, me.columns, profileApplyButton);
}
-#endif