55985e0b1676c2ffb07b5a88eb98072aabcd5568
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / dialog_firstrun.c
1 #ifdef INTERFACE
2 CLASS(XonoticFirstRunDialog) EXTENDS(XonoticRootDialog)
3         METHOD(XonoticFirstRunDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls
4         ATTRIB(XonoticFirstRunDialog, title, string, _("Welcome"))
5         ATTRIB(XonoticFirstRunDialog, color, vector, SKINCOLOR_DIALOG_FIRSTRUN)
6         ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.6)
7         ATTRIB(XonoticFirstRunDialog, rows, float, 15)
8         ATTRIB(XonoticFirstRunDialog, columns, float, 3)
9         ATTRIB(XonoticFirstRunDialog, name, string, "FirstRun")
10         ATTRIB(XonoticFirstRunDialog, playerNameLabel, entity, NULL)
11         ATTRIB(XonoticFirstRunDialog, playerNameLabelAlpha, float, 0)
12
13         ATTRIB(XonoticFirstRunDialog, closable, float, 0)
14 ENDCLASS(XonoticFirstRunDialog)
15 #endif
16
17 #ifdef IMPLEMENTATION
18 float CheckFirstRunButton(entity me)
19 {
20         if(cvar_string("_cl_name") != "Player")
21                 return 1;
22         if(cvar_string("prvm_language") != prvm_language)
23                 return 1; // OK will then reopen the dialog in another language
24         return 0;
25 }
26
27 void XonoticFirstRunDialog_fill(entity me)
28 {
29         entity e;
30         entity label, box;
31         me.TR(me);
32                 me.TD(me, 2, 3, e = makeXonoticTextLabel(0, _("Please answer a few initial questions to enhance the game experience.")));
33                 e.allowWrap = 1;
34         me.TR(me);
35         me.TR(me);
36                 me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:")));
37         me.TR(me);
38                 me.TD(me, 3, 3, e = makeXonoticLanguageList());
39                         e.name = "languageselector_firstrun";
40                         e.doubleClickCommand = "saveconfig; menu_restart; togglemenu";
41         me.TR(me);
42         me.TR(me);
43
44         me.TR(me);
45                 me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:")));
46                         me.playerNameLabelAlpha = me.playerNameLabel.alpha;
47                 me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null));
48                         label.allowCut = 1;
49                         label.allowColors = 1;
50                         label.alpha = 1;
51         me.TR(me);
52                 me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name"));
53                         box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved
54                         box.maxLength = -127; // negative means encoded length in bytes
55                         box.saveImmediately = 1;
56                         label.textEntity = box;
57         me.TR(me);
58                 me.TD(me, 5, 1, e = makeXonoticColorpicker(box));
59                 me.TD(me, 5, 2, e = makeXonoticCharmap(box));
60         me.TR(me);
61         me.TR(me);
62         me.TR(me);
63         me.TR(me);
64
65         // because of the language selector, this is a menu_restart!
66         me.gotoRC(me, me.rows - 1, 0);
67                 me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY));
68                 setDependentWeird(e, CheckFirstRunButton);
69 }
70 #endif