]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/player_model_zoom terencehill/player_model_zoom
authorterencehill <piuntn@gmail.com>
Mon, 19 Jan 2015 13:16:10 +0000 (14:16 +0100)
committerterencehill <piuntn@gmail.com>
Mon, 19 Jan 2015 13:17:23 +0000 (14:17 +0100)
Conflicts:
qcsrc/menu/item/image.c
qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c

1  2 
qcsrc/menu/xonotic/dialog_multiplayer_profile.c
qcsrc/menu/xonotic/playermodel.c

index 0000000000000000000000000000000000000000,a316be73b2b1f307f9e070bbbfa54dc1cf260bed..197bbd9160cfd3de2487d170f6acf7503a859d4c
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,164 +1,174 @@@
+ #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
+ #ifdef IMPLEMENTATION
+ entity makeXonoticProfileTab()
+ {
+       entity me;
+       me = spawnXonoticProfileTab();
+       me.configureDialog(me);
+       return me;
+ }
+ void XonoticProfileTab_draw(entity me)
+ {
+       if(cvar_string("_cl_name") == "Player")
+               me.playerNameLabel.alpha = ((mod(time * 2, 2) < 1) ? 1 : 0);
+       else
+               me.playerNameLabel.alpha = me.playerNameLabelAlpha;
+       SUPER(XonoticProfileTab).draw(me);
+ }
+ void XonoticProfileTab_fill(entity me)
+ {
+       entity e, pms, label, box;
+       float i;
+       // ==============
+       //  NAME SECTION
+       // ==============
+       me.gotoRC(me, 0.5, 0);
+               me.TD(me, 1, 3, me.playerNameLabel = makeXonoticHeaderLabel(_("Name")));
+       me.gotoRC(me, 1.5, 0);
+               me.TD(me, 1, 3, label = makeXonoticTextLabel(0.5, string_null));
+                       label.allowCut = 1;
+                       label.allowColors = 1;
+                       label.alpha = 1;
+                       label.isBold = TRUE;
+                       label.fontSize = SKINFONTSIZE_TITLE;
+       me.gotoRC(me, 2.5, 0);
+               me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name"));
+                       box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved
+                       box.maxLength = -127; // negative means encoded length in bytes
+                       box.saveImmediately = 1;
+                       box.enableClearButton = 0;
+                       label.textEntity = box;
+       me.TR(me);
+               me.TD(me, 5, 1, e = makeXonoticColorpicker(box));
+               me.TD(me, 5, 2, e = makeXonoticCharmap(box));
+       // ===============
+       //  MODEL SECTION
+       // ===============
+       //me.gotoRC(me, 0.5, 3.1); me.setFirstColumn(me, me.currentColumn); // TOP RIGHT
+       //me.gotoRC(me, 9, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM RIGHT
+       me.gotoRC(me, 9, 0); me.setFirstColumn(me, me.currentColumn); // BOTTOM LEFT
+               me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Model")));
+       me.TR(me);
+               //me.TDempty(me, 0); // MODEL LEFT, COLOR RIGHT
+               me.TDempty(me, 1); // MODEL RIGHT, COLOR LEFT
+               pms = makeXonoticPlayerModelSelector();
+               me.TD(me, 1, 0.3, e = makeXonoticButton("<<", '0 0 0'));
+                       e.onClick = PlayerModelSelector_Prev_Click;
+                       e.onClickEntity = pms;
+               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;
+       //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
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticHeaderLabel(_("Glowing color")));
+               for(i = 0; i < 15; ++i)
+               {
+                       if(mod(i, 5) == 0)
+                               me.TR(me);
+                       me.TDNoMargin(me, 1, 0.2, e = makeXonoticColorButton(1, 0, i), '0 1 0');
+               }
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticHeaderLabel(_("Detail color")));
+               for(i = 0; i < 15; ++i)
+               {
+                       if(mod(i, 5) == 0)
+                               me.TR(me);
+                       me.TDNoMargin(me, 1, 0.2, e = makeXonoticColorButton(2, 1, i), '0 1 0');
+               }
++      me.gotoRC(me, me.rows - 4, 0);
++              me.TDempty(me, 2.7);
++              me.TD(me, 1, 0.3, e = makeXonoticButton("+", '0 0 0'));
++                      e.onClick = PlayerModelSelector_ZoomIn_Click;
++                      e.onClickEntity = pms;
++      me.TR(me);
++              me.TDempty(me, 2.7);
++              me.TD(me, 1, 0.3, e = makeXonoticButton("-", '0 0 0'));
++                      e.onClick = PlayerModelSelector_ZoomOut_Click;
++                      e.onClickEntity = pms;
+       // ====================
+       //  STATISTICS SECTION
+       // ====================
+       me.gotoRC(me, 0.5, 3.1); me.setFirstColumn(me, me.currentColumn); // TOP RIGHT
+       //me.gotoRC(me, 9, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM RIGHT
+       //me.gotoRC(me, 9, 0); me.setFirstColumn(me, me.currentColumn); // BOTTOM LEFT
+               me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Statistics")));
+       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")));
+       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);
+       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
+               me.TDempty(me, 0.25);
+               me.TD(me, 9, 2.5, statslist = makeXonoticStatsList());
+               //setDependent(statslist, "cl_allow_uidtracking", 1, 1);
+       // =================
+       //  COUNTRY SECTION
+       // =================
+       me.gotoRC(me, 16, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, TOP POS
+       //me.gotoRC(me, 13.5, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, TOP POS
+       //me.gotoRC(me, 0.5, 3.1); me.setFirstColumn(me, me.currentColumn); // TOP SECTION, TOP POS
+               me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Country")));
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 4.5, 2, e = makeXonoticLanguageList()); // todo: cl_country: create proper country list
+       // ================
+       //  GENDER SECTION
+       // ================
+       me.gotoRC(me, 13.5, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, TOP POS
+       //me.gotoRC(me, 19.5, 3.1); me.setFirstColumn(me, me.currentColumn); // BOTTOM SECTION, BOTTOM POS
+       //me.gotoRC(me, 6.5, 3.1); me.setFirstColumn(me, me.currentColumn); // TOP SECTION, BOTTOM POS
+       #if 0
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gender:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_gender"));
+                       e.addValue(e, ZCTX(_("GENDER^Undisclosed")), "0");
+                       e.addValue(e, ZCTX(_("GENDER^Female")), "1");
+                       e.addValue(e, ZCTX(_("GENDER^Male")), "2");
+                       e.configureXonoticTextSliderValues(e);
+       #else
+                       me.TD(me, 1, 3, e = makeXonoticHeaderLabel(_("Gender")));
+               me.TR(me);
+                       #define GENDERWIDTH_OFFSET 0.25
+                       #define GENDERWIDTH_LENGTH 2.5
+                       #define GENDERWIDTH_ITEM (GENDERWIDTH_LENGTH / 3)
+                       me.TDempty(me, GENDERWIDTH_OFFSET);
+                       me.TD(me, 1, GENDERWIDTH_ITEM, e = makeXonoticRadioButton(3, "cl_gender", "2", _("Female")));
+                       me.TD(me, 1, GENDERWIDTH_ITEM, e = makeXonoticRadioButton(3, "cl_gender", "1", _("Male")));
+                       me.TD(me, 1, GENDERWIDTH_ITEM, e = makeXonoticRadioButton(3, "cl_gender", "0", _("Undisclosed")));
+       #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));
+ }
+ #endif
index e4fedaab2a5b7147d9bc5d886143457345d99229,652c581c00f6110e3cc66785d009adcb6cb89319..96ed7e15dc93c4bc8aacfb28914c409fda790f89
@@@ -3,13 -3,9 +3,14 @@@ CLASS(XonoticPlayerModelSelector) EXTEN
        METHOD(XonoticPlayerModelSelector, configureXonoticPlayerModelSelector, void(entity))
        METHOD(XonoticPlayerModelSelector, loadCvars, void(entity))
        METHOD(XonoticPlayerModelSelector, saveCvars, void(entity))
 +      ATTRIB(XonoticPlayerModelSelector, focusable, float, 1) // mousePress and mouseDrag work only if focusable is set
 +      METHOD(XonoticPlayerModelSelector, mousePress, float(entity, vector))
 +      METHOD(XonoticPlayerModelSelector, mouseDrag, float(entity, vector))
 +      METHOD(XonoticPlayerModelSelector, mouseMove, float(entity, vector))
 +      METHOD(XonoticPlayerModelSelector, keyDown, float(entity me, float key, float ascii, float shift))
        METHOD(XonoticPlayerModelSelector, draw, void(entity))
        METHOD(XonoticPlayerModelSelector, resizeNotify, void(entity, vector, vector, vector, vector))
+       METHOD(XonoticPlayerModelSelector, showNotify, void(entity))
        ATTRIB(XonoticPlayerModelSelector, currentModel, string, string_null)
        ATTRIB(XonoticPlayerModelSelector, currentSkin, float, 0)
        ATTRIB(XonoticPlayerModelSelector, currentModelImage, string, string_null)