#include "xonotic/dialog_settings_video.c"
#include "xonotic/dialog_settings_effects.c"
#include "xonotic/dialog_settings_audio.c"
+#include "xonotic/dialog_settings_game.c"
#include "xonotic/dialog_settings_user.c"
#include "xonotic/dialog_settings_misc.c"
#include "xonotic/dialog_multiplayer.c"
#include "xonotic/dialog_hudpanel_physics.c"
#include "xonotic/dialog_hudpanel_centerprint.c"
#include "xonotic/slider_picmip.c"
+#include "xonotic/dialog_multiplayer_playersetup_notification.c"
me.TR(me);
me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"), makeXonoticServerListTab()));
me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"), makeXonoticServerCreateTab()));
- me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab()));
- me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"), makeXonoticPlayerSettingsTab()));
+ //me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Players"), makeXonoticDemoBrowserTab()));
+ me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Media"), makeXonoticDemoBrowserTab()));
+ me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Profile"), makeXonoticPlayerSettingsTab()));
me.TR(me);
me.TR(me);
CLASS(XonoticPlayerSettingsTab) EXTENDS(XonoticTab)
METHOD(XonoticPlayerSettingsTab, fill, void(entity))
METHOD(XonoticPlayerSettingsTab, draw, void(entity))
- ATTRIB(XonoticPlayerSettingsTab, title, string, _("Player Setup"))
+ ATTRIB(XonoticPlayerSettingsTab, title, string, _("Profile"))
ATTRIB(XonoticPlayerSettingsTab, intendedWidth, float, 0.9)
ATTRIB(XonoticPlayerSettingsTab, rows, float, 22)
ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.2) // added extra .2 for center space
me.TR(me);
me.TR(me);
me.TR(me);
-
+
+ // Statistic Stuff -Debugger
me.TR(me);
- me.TDempty(me, 1);
- me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Model:")));
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Player Statistics:")));
+ me.TR(me);
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Join time:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Total playing time:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Last played:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Games played:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Win / Losses:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Kills / Deaths:")));
me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("CTF elo:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("DM elo:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("TDM elo:")));
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("DUEL elo:")));
+ me.TR(me);
+
+
+ me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
me.TDempty(me, 1);
+ me.TD(me, 1, 3, e = makeXonoticTextLabel(0.5, _("Model:")));
+ me.TR(me);
pms = makeXonoticPlayerModelSelector();
me.TD(me, 1, 0.3, e = makeXonoticButton("<<", '0 0 0'));
e.onClick = PlayerModelSelector_Prev_Click;
e.onClickEntity = pms;
- me.TD(me, me.rows - (me.currentRow + 2), 1.4, pms);
+ me.TD(me, 13, 2.4, pms);
me.TD(me, 1, 0.3, e = makeXonoticButton(">>", '0 0 0'));
e.onClick = PlayerModelSelector_Next_Click;
e.onClickEntity = pms;
+
+ me.gotoRC(me, 14, 3.533); me.setFirstColumn(me, me.currentColumn);
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticTextLabel(0.5, _("Glowing color:")));
for(i = 0; i < 15; ++i)
me.TR(me);
me.TDNoMargin(me, 1, 0.2, e = makeXonoticColorButton(1, 0, i), '0 1 0');
}
- me.TR(me);
+ me.gotoRC(me, 14, 4.866); me.setFirstColumn(me, me.currentColumn);
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticTextLabel(0.5, _("Detail color:")));
for(i = 0; i < 15; ++i)
me.TDNoMargin(me, 1, 0.2, e = makeXonoticColorButton(2, 1, i), '0 1 0');
}
+ /*
// crosshair_enabled: 0 = no crosshair options, 1 = no crosshair selection, but everything else enabled, 2 = all crosshair options enabled
// FIXME: In the future, perhaps make one global crosshair_type cvar which has 0 for disabled, 1 for custom, 2 for per weapon, etc?
me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
e.onClickEntity = main.hudDialog;
// TODO: show hud config name with text here
+ */
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));
}
--- /dev/null
+#ifdef INTERFACE
+CLASS(XonoticNotificationDialog) EXTENDS(XonoticDialog)
+ METHOD(XonoticNotificationDialog, toString, string(entity))
+ METHOD(XonoticNotificationDialog, fill, void(entity))
+ METHOD(XonoticNotificationDialog, showNotify, void(entity))
+ ATTRIB(XonoticNotificationDialog, title, string, _("Notification settings"))
+ ATTRIB(XonoticNotificationDialog, color, vector, SKINCOLOR_DIALOG_MODEL)
+ ATTRIB(XonoticNotificationDialog, intendedWidth, float, 0.6)
+ ATTRIB(XonoticNotificationDialog, rows, float, 19)
+ ATTRIB(XonoticNotificationDialog, columns, float, 3)
+ENDCLASS(XonoticNotificationDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticNotificationDialog_showNotify(entity me)
+{
+ loadAllCvars(me);
+}
+string XonoticNotificationDialog_toString(entity me)
+{
+ return "hi"; // TODO: show csqc model settings like forcemyplayer and deglowing/ghosting bodies with text here
+}
+void XonoticNotificationDialog_fill(entity me)
+{
+ entity e;
+
+ // General settings for the player
+ me.TR(me);
+ me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("General Settings:")));
+
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "notification_allow_chatboxprint", _("Print all notifications into the chatbox")));
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Notice connecting players:")));
+ me.TR(me);
+ me.TDempty(me, 0.3);
+ me.TD(me, 1, 3, e = makeXonoticTextSlider("notification_INFO_QUIT_DISCONNECT"));
+ //makeMulti(me, "notification_INFO_QUIT_KICK_IDLING notification_INFO_QUIT_KICK_SPECTATING notification_INFO_JOIN_PLAY notification_INFO_JOIN_CONNECT_TEAM_BLUE notification_INFO_JOIN_CONNECT_TEAM_PINK notification_INFO_JOIN_CONNECT_TEAM_RED notification_INFO_JOIN_CONNECT_TEAM_YELLOW");
+ e.addValue(e, ZCTX(_("off")), "0");
+ e.addValue(e, ZCTX(_("only console")), "1");
+ e.addValue(e, ZCTX(_("console & chat")), "2");
+ e.configureXonoticTextSliderValues(e);
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "notification_ITEM_WEAPON_DONTHAVE", _("Item notifications")));
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "notification_CENTER_POWERUP_INVISIBILITY", _("Powerup notifications")));
+ //makeMulti(e, "notification_CENTER_POWERUP_SHIELD notification_CENTER_POWERUP_SPEED notification_CENTER_POWERUP_STRENGTH notification_CENTER_POWERDOWN_INVISIBILITY notification_CENTER_POWERDOWN_SHIELD notification_CENTER_POWERDOWN_SPEED notification_CENTER_POWERDOWN_STRENGTH notification_CENTER_SUPERWEAPON_BROKEN notification_CENTER_SUPERWEAPON_LOST notification_CENTER_SUPERWEAPON_PICKUP");
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "notification_frag_verbose", _("Additional information on frags")));
+ me.TR(me);
+ me.TR(me);
+
+ // Gamemode specific notifications
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Gamemode notifications:")));
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "notification_CENTER_ARENA_BEGIN", _("Centerprint for gamemode notifications")));
+ //makeMulti(me, "notification_CENTER_ARENA_NEEDPLAYER notification_CENTER_ARENA_ROUNDSTART notification_CENTER_ASSAULT_ATTACKING notification_CENTER_ASSAULT_DEFENDING notification_CENTER_CTF_PICKUP_BLUE notification_CENTER_CTF_PICKUP_ENEMY notification_CENTER_CTF_PICKUP_RED notification_CENTER_CTF_PICKUP_TEAM notification_CENTER_FREEZETAG_FREEZE notification_CENTER_FREEZETAG_FROZEN notification_CENTER_FREEZETAG_REVIVE notification_CENTER_FREEZETAG_REVIVED notification_CENTER_FREEZETAG_ROUND_WIN_BLUE notification_CENTER_FREEZETAG_ROUND_WIN_PINK notification_CENTER_FREEZETAG_ROUND_WIN_RED notification_CENTER_FREEZETAG_ROUND_WIN_YELLOW notification_CENTER_FREEZETAG_SELF notification_CENTER_FREEZETAG_SPAWN_LATE notification_CENTER_KEEPAWAY_DROPPED notification_CENTER_KEEPAWAY_PICKUP notification_CENTER_KEEPAWAY_WARN notification_CENTER_KEYHUNT_HELP notification_CENTER_KEYHUNT_INTERFERE_BLUE notification_CENTER_KEYHUNT_INTERFERE_PINK notification_CENTER_KEYHUNT_INTERFERE_RED notification_CENTER_KEYHUNT_INTERFERE_YELLOW notification_CENTER_KEYHUNT_MEET notification_CENTER_KEYHUNT_SCAN notification_CENTER_KEYHUNT_START_BLUE notification_CENTER_KEYHUNT_START_PINK notification_CENTER_KEYHUNT_START_RED notification_CENTER_KEYHUNT_START_YELLOW notification_CENTER_KEYHUNT_WAIT notification_CENTER_LMS_CAMPCHECK");
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "notification_ctf_capture_verbose", _("Additional information on flag captures")));
+ me.TR(me);
+
+ // Information on killingsprees
+ me.TR(me);
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Information on killingsprees:")));
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "notification_show_sprees", _("Print information on sprees")));
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Show spree information:")));
+ me.TR(me);
+ me.TDempty(me, 0.3);
+ me.TD(me, 1, 3, e = makeXonoticTextSlider("notification_show_sprees_info"));
+ e.addValue(e, ZCTX(_("off")), "0");
+ e.addValue(e, ZCTX(_("target")), "1");
+ e.addValue(e, ZCTX(_("attacker")), "2");
+ e.addValue(e, ZCTX(_("target & attacker")), "3");
+ e.configureXonoticTextSliderValues(e);
+ me.TR(me);
+ me.TDempty(me, 0.1);
+ me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "notification_show_sprees_info_newline", _("Print spree information in a new line")));
+
+ // Close this dialog
+ me.gotoRC(me, me.rows - 1, 0);
+ me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+ e.onClick = Dialog_Close;
+ e.onClickEntity = me;
+}
+#endif
\ No newline at end of file
ATTRIB(XonoticSettingsDialog, title, string, _("Settings"))
ATTRIB(XonoticSettingsDialog, color, vector, SKINCOLOR_DIALOG_SETTINGS)
ATTRIB(XonoticSettingsDialog, intendedWidth, float, 0.96)
- ATTRIB(XonoticSettingsDialog, rows, float, 19)
+ ATTRIB(XonoticSettingsDialog, rows, float, 20)
ATTRIB(XonoticSettingsDialog, columns, float, 6)
ENDCLASS(XonoticSettingsDialog)
#endif
void XonoticSettingsDialog_fill(entity me)
{
entity mc;
- mc = makeXonoticTabController(me.rows - 2);
+ mc = makeXonoticTabController(me.rows - 3);
me.TR(me);
- me.TD(me, 1, 1, mc.makeTabButton(mc, _("Input"), makeXonoticInputSettingsTab()));
- me.TD(me, 1, 1, mc.makeTabButton(mc, _("Video"), makeXonoticVideoSettingsTab()));
- me.TD(me, 1, 1, mc.makeTabButton(mc, _("Effects"), makeXonoticEffectsSettingsTab()));
- me.TD(me, 1, 1, mc.makeTabButton(mc, _("Audio"), makeXonoticAudioSettingsTab()));
- me.TD(me, 1, 1, mc.makeTabButton(mc, _("User"), makeXonoticUserSettingsTab()));
- me.TD(me, 1, 1, mc.makeTabButton(mc, _("Misc"), makeXonoticMiscSettingsTab()));
+ me.TD(me, 1, 2, mc.makeTabButton(mc, _("Video"), makeXonoticVideoSettingsTab()));
+ me.TD(me, 1, 2, mc.makeTabButton(mc, _("Effects"), makeXonoticEffectsSettingsTab()));
+ me.TD(me, 1, 2, mc.makeTabButton(mc, _("Audio"), makeXonoticAudioSettingsTab()));
me.TR(me);
+ me.TD(me, 1, 1.5, mc.makeTabButton(mc, _("Game"), makeXonoticGameSettingsTab()));
+ me.TD(me, 1, 1.5, mc.makeTabButton(mc, _("Input"), makeXonoticInputSettingsTab()));
+ me.TD(me, 1, 1.5, mc.makeTabButton(mc, _("User"), makeXonoticUserSettingsTab()));
+ me.TD(me, 1, 1.5, mc.makeTabButton(mc, _("Misc"), makeXonoticMiscSettingsTab()));
me.TR(me);
- me.TD(me, me.rows - 2, me.columns, mc);
+ me.TR(me);
+ me.TD(me, me.rows - 3, me.columns, mc);
}
#endif
--- /dev/null
+#ifdef INTERFACE
+CLASS(XonoticGameSettingsTab) EXTENDS(XonoticTab)
+ METHOD(XonoticGameSettingsTab, fill, void(entity))
+ ATTRIB(XonoticGameSettingsTab, title, string, _("Game"))
+ ATTRIB(XonoticGameSettingsTab, intendedWidth, float, 0.9)
+ ATTRIB(XonoticGameSettingsTab, rows, float, 17)
+ ATTRIB(XonoticGameSettingsTab, columns, float, 6)
+ENDCLASS(XonoticGameSettingsTab)
+entity makeXonoticGameSettingsTab();
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeXonoticGameSettingsTab()
+{
+ entity me;
+ me = spawnXonoticGameSettingsTab();
+ me.configureDialog(me);
+ return me;
+}
+
+void XonoticGameSettingsTab_fill(entity me)
+{
+ entity e;
+
+
+ me.TR(me);
+ me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects and harsh language"))); // also set sv_gentle
+
+ me.gotoRC(me, 2, 3); me.setFirstColumn(me, me.currentColumn);
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticButton(_("Crosshair"), '0 0 0'));
+ e.onClick = DialogOpenButton_Click;
+ e.onClickEntity = main.crosshairDialog;
+ setDependent(e, "crosshair_enabled", 1, 2);
+ // TODO: show status of crosshair dot and hittest and pickups and such here with text
+ me.TR(me);
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticButton(_("HUD"), '0 0 0'));
+ e.onClick = DialogOpenButton_Click;
+ e.onClickEntity = main.hudDialog;
+ // TODO: show hud config name with text here
+ me.TR(me);
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticButton(_("Notification"), '0 0 0'));
+ e.onClick = DialogOpenButton_Click;
+ e.onClickEntity = main.notificationDialog;
+ // TODO: Show all the notification stuff here
+ me.TR(me);
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticButton(_("Playermodel"), '0 0 0'));
+ e.onClick = DialogOpenButton_Click;
+ e.onClickEntity = main.modelDialog;
+ // TODO: show csqc model settings like forcemyplayer and deglowing/ghosting bodies with text here
+ me.TR(me);
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticButton(_("View"), '0 0 0'));
+ e.onClick = DialogOpenButton_Click;
+ e.onClickEntity = main.viewDialog;
+ // TODO: show fov and other settings with text here
+ me.TR(me);
+ me.TDempty(me, 0.5);
+ me.TD(me, 1, 2, e = makeXonoticButton(_("Weapon"), '0 0 0'));
+ e.onClick = DialogOpenButton_Click;
+ e.onClickEntity = main.weaponsDialog;
+ // I don't really think this is useful as is, and especially it doesn't look very clean...
+ // In the future, if ALL of these buttons had some information, then it would be justified/clean
+ //me.TD(me, 1, 1, e0 = makeXonoticTextLabel(0, string_null));
+ // e0.textEntity = main.weaponsDialog;
+ // e0.allowCut = 1;
+
+ //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.gotoRC(me, me.rows - 1, 0);
+ me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "sendcvar cl_gentle; sendcvar cl_allow_uidtracking; sendcvar cl_allow_uid2name;", COMMANDBUTTON_APPLY));
+}
+#endif
ATTRIB(MainWindow, mainNexposee, entity, NULL)
ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
ATTRIB(MainWindow, dialogToShow, entity, NULL)
+ ATTRIB(MainWindow, notificationDialog, entity, NULL)
ENDCLASS(MainWindow)
#endif
i.configureDialog(i);
me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+ me.notificationDialog = i = spawnXonoticNotificationDialog();
+ i.configureDialog(i);
+ me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
// mutator dialogs
i = spawnXonoticSandboxToolsDialog();