From d8e215ecc4bee1671cdc938f8026196deb93c6f5 Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 8 Mar 2013 04:38:52 +1100 Subject: [PATCH] Add a (very) basic temporary turret spawning GUI for tower defense --- commands.cfg | 1 + defaultXonotic.cfg | 2 ++ qcsrc/menu/classes.c | 1 + qcsrc/menu/xonotic/dialog_towerdefense.c | 39 ++++++++++++++++++++++++ qcsrc/menu/xonotic/mainwindow.c | 4 +++ 5 files changed, 47 insertions(+) create mode 100644 qcsrc/menu/xonotic/dialog_towerdefense.c diff --git a/commands.cfg b/commands.cfg index 039fc6dd4..a01ffc9c6 100644 --- a/commands.cfg +++ b/commands.cfg @@ -104,6 +104,7 @@ alias menu_showhudexit "menu_cmd directmenu HUDExit" alias menu_showhudoptions "menu_cmd directpanelhudmenu ${* ?}" alias menu_showsandboxtools "menu_cmd directmenu SandboxTools" alias menu_showquitdialog "menu_cmd directmenu Quit" +alias menu_showtdtools "menu_cmd directmenu TowerDefense" // command executed before loading a map by the menu // makes sure maxplayers is at least minplayers or bot_number + 1 diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index 23329b718..9debede48 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -442,6 +442,8 @@ seta menu_monsters_edit_skin 0 seta menu_monsters_edit_color "" seta menu_monsters_edit_movetarget 1 +seta menu_td_edit_spawn "" + set g_playerclip_collisions 1 "0 = disable collision testing against playerclips, might be useful on some defrag maps" set g_botclip_collisions 1 "0 = disable collision testing against botclips, might be useful on some defrag maps" diff --git a/qcsrc/menu/classes.c b/qcsrc/menu/classes.c index 4e563e950..4a50f1db8 100644 --- a/qcsrc/menu/classes.c +++ b/qcsrc/menu/classes.c @@ -38,6 +38,7 @@ #include "xonotic/dialog_settings_misc.c" #include "xonotic/dialog_multiplayer.c" #include "xonotic/dialog_multiplayer_playersetup.c" +#include "xonotic/dialog_towerdefense.c" #include "xonotic/tabcontroller.c" #include "xonotic/textlabel.c" #include "xonotic/slider.c" diff --git a/qcsrc/menu/xonotic/dialog_towerdefense.c b/qcsrc/menu/xonotic/dialog_towerdefense.c new file mode 100644 index 000000000..fcf52089a --- /dev/null +++ b/qcsrc/menu/xonotic/dialog_towerdefense.c @@ -0,0 +1,39 @@ +#ifdef INTERFACE +CLASS(XonoticTowerDefenseDialog) EXTENDS(XonoticRootDialog) + METHOD(XonoticTowerDefenseDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls + ATTRIB(XonoticTowerDefenseDialog, title, string, _("Tower Defense Control Panel")) + ATTRIB(XonoticTowerDefenseDialog, color, vector, SKINCOLOR_DIALOG_SANDBOXTOOLS) + ATTRIB(XonoticTowerDefenseDialog, intendedWidth, float, 0.8) + ATTRIB(XonoticTowerDefenseDialog, rows, float, 4) + ATTRIB(XonoticTowerDefenseDialog, columns, float, 2) + ATTRIB(XonoticTowerDefenseDialog, name, string, "TowerDefense") +ENDCLASS(XonoticTowerDefenseDialog) +#endif + +#ifdef IMPLEMENTATION +void XonoticTowerDefenseDialog_fill(entity me) +{ + entity e; + + me.TR(me); + me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Turret:"))); + me.TR(me); + me.TD(me, 1, 0.2, e = makeXonoticRadioButton(2, "menu_td_edit_spawn", "plasma", _("Plasma"))); + me.TD(me, 1, 0.2, e = makeXonoticRadioButton(2, "menu_td_edit_spawn", "mlrs", _("MLRS"))); + me.TD(me, 1, 0.2, e = makeXonoticRadioButton(2, "menu_td_edit_spawn", "flac", _("FLAC"))); + me.TD(me, 1, 0.2, e = makeXonoticRadioButton(2, "menu_td_edit_spawn", "barricade", _("Barricade"))); + me.TD(me, 1, 0.2, e = makeXonoticRadioButton(2, "menu_td_edit_spawn", "walker", _("Walker"))); + me.TR(me); + me.TDempty(me, 0.5); + me.TD(me, 1, 0.5, e = makeXonoticCommandButton(_("Spawn"), '0 0 0', "spawnturret $menu_td_edit_spawn", 0)); + me.TD(me, 1, 0.5, e = makeXonoticCommandButton(_("Remove"), '0 0 0', "rmturret", 0)); + me.TR(me); + + 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 + +/* Click. The c-word is here so you can grep for it :-) */ diff --git a/qcsrc/menu/xonotic/mainwindow.c b/qcsrc/menu/xonotic/mainwindow.c index 120d80213..32c1034c8 100644 --- a/qcsrc/menu/xonotic/mainwindow.c +++ b/qcsrc/menu/xonotic/mainwindow.c @@ -193,6 +193,10 @@ void MainWindow_configureMainWindow(entity me) i.configureDialog(i); me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z * SKINALPHA_DIALOG_SANDBOXTOOLS); + i = spawnXonoticTowerDefenseDialog(); + i.configureDialog(i); + me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z * SKINALPHA_DIALOG_SANDBOXTOOLS); + // miscellaneous dialogs i = spawnXonoticTeamSelectDialog(); -- 2.39.2