]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Relocate the guide to Singleplayer
authorotta8634 <k9wolf@pm.me>
Tue, 7 Jan 2025 17:07:11 +0000 (01:07 +0800)
committerotta8634 <k9wolf@pm.me>
Tue, 7 Jan 2025 17:11:01 +0000 (01:11 +0800)
Added a button for it alongside the 'Instant action' button.
Converted it to a XonoticDialog from a XonoticTab, renamed the class to XonoticGuideDialog.
Renamed the Singleplayer menu to Singleplayer / Guide.
Slightly changed some Singleplayer menu strings.

13 files changed:
gfx/menu/luma/skinvalues.txt
gfx/menu/luminos/skinvalues.txt
gfx/menu/wickedx/skinvalues.txt
gfx/menu/xaw/skinvalues.txt
qcsrc/menu/skin-customizables.inc
qcsrc/menu/xonotic/dialog_multiplayer_media.qc
qcsrc/menu/xonotic/dialog_multiplayer_media.qh
qcsrc/menu/xonotic/dialog_multiplayer_media_guide.qc
qcsrc/menu/xonotic/dialog_multiplayer_media_guide.qh
qcsrc/menu/xonotic/dialog_singleplayer.qc
qcsrc/menu/xonotic/dialog_singleplayer.qh
qcsrc/menu/xonotic/mainwindow.qc
qcsrc/menu/xonotic/mainwindow.qh

index 1bf37b98b845915987fa4838bc3a3c7ee8408279..47e20a6c39be7b5d0d87550039be6ebe140bfc44 100644 (file)
@@ -84,6 +84,7 @@ COLOR_DIALOG_QUIT             '1 1 1'
 COLOR_DIALOG_ADVANCED         '1 1 1'
 COLOR_DIALOG_MUTATORS         '1 1 1'
 COLOR_DIALOG_MAPINFO          '1 1 1'
+COLOR_DIALOG_GUIDE            '1 1 1'
 COLOR_DIALOG_USERBIND         '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER     '1 1 1'
 COLOR_DIALOG_CREDITS          '1 1 1'
index d4fdef1cd5196031984803396f96beb9464cc814..e5928ad70667e204d80789069b2fd26b0b85fdd3 100755 (executable)
@@ -183,6 +183,7 @@ COLOR_DIALOG_QUIT               '1 1 1'
 COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
+COLOR_DIALOG_GUIDE              '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
 COLOR_DIALOG_CREDITS            '1 1 1'
index ca5e303dac811c1737caeab11e8347f1a163a5d1..5441d1300f3956a11a5f7595070a0de8cba2713f 100644 (file)
@@ -183,6 +183,7 @@ COLOR_DIALOG_QUIT               '1 1 1'
 COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
+COLOR_DIALOG_GUIDE              '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
 COLOR_DIALOG_CREDITS            '1 1 1'
index aa4350cc56b49fe61f27e2884a0214d1226ab1ef..bf4f68270ec49b8ac728248c4f706dba9e065a3a 100644 (file)
@@ -27,6 +27,7 @@ COLOR_DIALOG_QUIT               '1 0 0'
 COLOR_DIALOG_ADVANCED           '1 1 1'
 COLOR_DIALOG_MUTATORS           '1 1 1'
 COLOR_DIALOG_MAPINFO            '1 1 1'
+COLOR_DIALOG_GUIDE              '1 1 1'
 COLOR_DIALOG_USERBIND           '1 1 1'
 COLOR_DIALOG_SINGLEPLAYER       '1 1 1'
 COLOR_DIALOG_CREDITS            '1 1 1'
index 15bd5356b883a7905309d44506ed9ff9bc79f491..cbc7e27427403e68751826d90bb1d505ea96408d 100644 (file)
@@ -61,6 +61,7 @@ SKINBEGIN
        SKINVECTOR(COLOR_DIALOG_ADVANCED, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_MUTATORS, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_MAPINFO, '0.7 0.7 1');
+       SKINVECTOR(COLOR_DIALOG_GUIDE, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_USERBIND, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7');
        SKINVECTOR(COLOR_DIALOG_CREDITS, '0.7 0.7 1');
index 3203e3ec5916f8e81aa60cbc94b53b7ba7961c36..bc379d3b93adbb0e43646d4a92c38c11b7ba3593 100644 (file)
@@ -1,7 +1,6 @@
 #include "dialog_multiplayer_media.qh"
 
 #include "demolist.qh"
-#include "dialog_multiplayer_media_guide.qh"
 #include "dialog_multiplayer_media_demo.qh"
 #include "dialog_multiplayer_media_screenshot.qh"
 #include "dialog_multiplayer_media_musicplayer.qh"
@@ -23,7 +22,6 @@ void XonoticMediaTab_fill(entity me)
        mc = makeXonoticTabController(me.rows - 2);
 
        me.gotoRC(me, 0.5, 0);
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Guide"), NEW(XonoticGuideTab)));
                me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab()));
                me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Screenshots"), makeXonoticScreenshotBrowserTab()));
                me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Music Player"), makeXonoticMusicPlayerTab()));
index 0c445511107ce8edc18fd6f764090115e2014944..9713e82c2da595fc6833dc287021a00cae5f7f00 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticMediaTab, XonoticTab)
        METHOD(XonoticMediaTab, fill, void(entity));
        ATTRIB(XonoticMediaTab, intendedWidth, float, 0.9);
        ATTRIB(XonoticMediaTab, rows, float, 23);
-       ATTRIB(XonoticMediaTab, columns, float, 4);
+       ATTRIB(XonoticMediaTab, columns, float, 3);
        ATTRIB(XonoticMediaTab, name, string, "Media");
 ENDCLASS(XonoticMediaTab)
 entity makeXonoticMediaTab();
index 74f9fe479130e4dbaa25752a1b01d2d89fcd3b88..ebf24543fec757d44c0be441da31f7ae104eb999 100644 (file)
@@ -4,7 +4,7 @@
 #include "textlabel.qh"
 #include <menu/xonotic/guide/entries.qh>
 
-void XonoticGuideTab_fill(entity me)
+void XonoticGuideDialog_fill(entity me)
 {
        entity e;
 
@@ -13,7 +13,7 @@ void XonoticGuideTab_fill(entity me)
                me.TD(me, 1, width, makeXonoticHeaderLabel(_("Topic")));
        me.TR(me);
                me.TD(me, me.rows - 1, width, e = me.topicList);
-                       e.onChange = XonoticGuideTab_topicChangeNotify;
+                       e.onChange = XonoticGuideDialog_topicChangeNotify;
                        e.onChangeEntity = me;
 
        col += width, width = 2;
@@ -21,7 +21,7 @@ void XonoticGuideTab_fill(entity me)
                me.TD(me, 1, width, makeXonoticHeaderLabel(_("Entry")));
        me.TR(me);
                me.TD(me, me.rows - 1 - 1, width, e = me.entryList);
-                       e.onChange = XonoticGuideTab_entryChangeNotify;
+                       e.onChange = XonoticGuideDialog_entryChangeNotify;
                        e.onChangeEntity = me;
        me.gotoRC(me, me.rows - 1, col);
                me.entryList.stringFilterBox = makeXonoticInputBox_T(false, string_null,
@@ -41,7 +41,7 @@ void XonoticGuideTab_fill(entity me)
        me.topicChangeNotify(me.topicList, me);
 }
 
-void XonoticGuideTab_topicChangeNotify(entity, entity me)
+void XonoticGuideDialog_topicChangeNotify(entity, entity me)
 {
        entity topics = me.topicList;
        entity entries = me.entryList;
@@ -63,8 +63,7 @@ void XonoticGuideTab_topicChangeNotify(entity, entity me)
        entries.refilter(entries);
        entries.setSelected(entries, 0);
 }
-
-void XonoticGuideTab_entryChangeNotify(entity, entity me)
+void XonoticGuideDialog_entryChangeNotify(entity, entity me)
 {
        entity desc = me.descriptionPane;
        entity entries = me.entryList;
index e630e5c8ac84367fc8ef0955ec9ce6550f24a4ef..311935c58138103a54c95d408fd2288d4f830456 100644 (file)
@@ -2,21 +2,19 @@
 
 #include <menu/xonotic/guide/_mod.qh>
 
-#include "tab.qh"
-CLASS(XonoticGuideTab, XonoticTab)
-       ATTRIB(XonoticGuideTab, rows, float, 21);
-       ATTRIB(XonoticGuideTab, columns, float, 6);
-       ATTRIB(XonoticGuideTab, intendedWidth, float, 1);
-       METHOD(XonoticGuideTab, fill, void(entity));
-       METHOD(XonoticGuideTab, topicChangeNotify, void(entity, entity));
-       METHOD(XonoticGuideTab, entryChangeNotify, void(entity, entity));
+#include "dialog.qh"
+CLASS(XonoticGuideDialog, XonoticDialog)
+       ATTRIB(XonoticGuideDialog, title, string, _("Guide"));
+       ATTRIB(XonoticGuideDialog, name, string, "guide");
+       ATTRIB(XonoticGuideDialog, color, vector, SKINCOLOR_DIALOG_GUIDE);
+       ATTRIB(XonoticGuideDialog, rows, float, 21);
+       ATTRIB(XonoticGuideDialog, columns, float, 6);
+       ATTRIB(XonoticGuideDialog, intendedWidth, float, 0.9);
+       METHOD(XonoticGuideDialog, fill, void(entity));
+       METHOD(XonoticGuideDialog, topicChangeNotify, void(entity, entity));
+       METHOD(XonoticGuideDialog, entryChangeNotify, void(entity, entity));
 
-       ATTRIB(XonoticGuideTab, controlledTextbox, entity);
-       ATTRIB(XonoticGuideTab, topicList, entity, NEW(XonoticTopicList, NEW(TopicSource)));
-       ATTRIB(XonoticGuideTab, entryList, entity, NEW(XonoticEntryList, NULL));
-       ATTRIB(XonoticGuideTab, descriptionPane, entity, NEW(XonoticGuideDescription));
-
-       INIT(XonoticGuideTab) {
-               this.configureDialog(this);
-       }
-ENDCLASS(XonoticGuideTab)
+       ATTRIB(XonoticGuideDialog, topicList, entity, NEW(XonoticTopicList, NEW(TopicSource)));
+       ATTRIB(XonoticGuideDialog, entryList, entity, NEW(XonoticEntryList, NULL));
+       ATTRIB(XonoticGuideDialog, descriptionPane, entity, NEW(XonoticGuideDescription));
+ENDCLASS(XonoticGuideDialog)
index ded656605c58829cdc79be4ddc2c928e8bc3e1e4..69de8c089b77b78cf36abce1413e682b68a1cba1 100644 (file)
@@ -6,6 +6,7 @@
 #include "leavematchbutton.qh"
 #include "radiobutton.qh"
 #include "textlabel.qh"
+#include "mainwindow.qh"
 #include "campaign.qh"
 
 void InstantAction_LoadMap(entity btn, entity dummy)
@@ -145,10 +146,13 @@ void XonoticSingleplayerDialog_fill(entity me)
        entity e, btnPrev, btnNext, lblTitle;
 
        me.TR(me);
-               me.TDempty(me, (me.columns - 3) / 2);
-               me.TD(me, 2, 3, e = makeXonoticBigButton(_("Instant action! (random map with bots)"), '0 0 0'));
+               me.TDempty(me, (me.columns / 2) - 2);
+               me.TD(me, 2, 2, e = makeXonoticBigButton(_("Instant action with bots!"), '0 0 0'));
                        e.onClick = InstantAction_LoadMap;
                        e.onClickEntity = NULL;
+               me.TD(me, 2, 2, e = makeXonoticBigButton(_("Guide"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.guideDialog;
        me.TR(me);
        me.TR(me);
        me.TR(me);
index c7691fbba4e16ba81eb483b8c0f748c9e6d4f2ba..a7a5bca8a0a0567a23d8f7dceb6ecdf107cf56da 100644 (file)
@@ -3,8 +3,8 @@
 #include "dialog.qh"
 CLASS(XonoticSingleplayerDialog, XonoticDialog)
        METHOD(XonoticSingleplayerDialog, fill, void(entity));
-       ATTRIB(XonoticSingleplayerDialog, title, string, _("Singleplayer"));
-       ATTRIB(XonoticSingleplayerDialog, tooltip, string, _("Play the singleplayer campaign or instant action matches against bots"));
+       ATTRIB(XonoticSingleplayerDialog, title, string, _("Singleplayer / Guide"));
+       ATTRIB(XonoticSingleplayerDialog, tooltip, string, _("Play the singleplayer campaign or instant action matches against bots, or read the guide"));
        ATTRIB(XonoticSingleplayerDialog, color, vector, SKINCOLOR_DIALOG_SINGLEPLAYER);
        ATTRIB(XonoticSingleplayerDialog, intendedWidth, float, 0.80);
        ATTRIB(XonoticSingleplayerDialog, rows, float, 24);
index 039d3452fd0038762f728159950f26807c1ee9ae..7ebd9d3ebde6da151dfa1db1759e0c5e849b05ee 100644 (file)
@@ -37,6 +37,7 @@
 #include "dialog_settings_game_hudconfirm.qh"
 #include "dialog_singleplayer_winner.qh"
 #include "dialog_multiplayer_join_serverinfo.qh"
+#include "dialog_multiplayer_media_guide.qh"
 #include "dialog_multiplayer_media_demo_startconfirm.qh"
 #include "dialog_multiplayer_media_demo_timeconfirm.qh"
 #include "dialog_multiplayer_media_screenshot_viewer.qh"
@@ -213,11 +214,15 @@ void MainWindow_configureMainWindow(entity me)
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
 
 
-       // dialog used by singleplayer
+       // dialog used by singleplayer / guide
        me.winnerDialog = i = NEW(XonoticWinnerDialog);
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
 
+       me.guideDialog = i = NEW(XonoticGuideDialog);
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+
 
        // dialog used by multiplayer/join
        me.serverInfoDialog = i = NEW(XonoticServerInfoDialog);
index 24adc370173b077a014941f16cca2aad7677eb09..7b0b86c2a171ce93a7519d3512b96983cc3f4b9b 100644 (file)
@@ -10,6 +10,7 @@ CLASS(MainWindow, ModalController)
        ATTRIB(MainWindow, advancedDialog, entity);
        ATTRIB(MainWindow, mutatorsDialog, entity);
        ATTRIB(MainWindow, mapInfoDialog, entity);
+       ATTRIB(MainWindow, guideDialog, entity);
        ATTRIB(MainWindow, userbindEditDialog, entity);
        ATTRIB(MainWindow, bindingsResetDialog, entity);
        ATTRIB(MainWindow, winnerDialog, entity);