From 4c017abc4afcbe42f09b8d4b6869bd170ba02976 Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 17 Jan 2008 06:44:01 +0000 Subject: [PATCH] Tell the player when he is WINNER. WINNER image not included (gfx/winner.tga is where it should be). git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3158 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/maps/aneurysm.mapinfo | 2 +- data/qcsrc/menu-div0test/classes.c | 1 + data/qcsrc/menu-div0test/menu.qc | 26 +++++++++++++++++++ .../nexuiz/dialog_singleplayer_winner.c | 25 ++++++++++++++++++ data/qcsrc/menu-div0test/nexuiz/mainwindow.c | 5 ++++ 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 data/qcsrc/menu-div0test/nexuiz/dialog_singleplayer_winner.c diff --git a/data/maps/aneurysm.mapinfo b/data/maps/aneurysm.mapinfo index f262fcb14..c9c1b45b1 100644 --- a/data/maps/aneurysm.mapinfo +++ b/data/maps/aneurysm.mapinfo @@ -9,4 +9,4 @@ type dom 200 20 type rune 200 20 type lms 9 20 type arena 10 20 -type kh 1000 30 3 +type kh 1000 30 2 diff --git a/data/qcsrc/menu-div0test/classes.c b/data/qcsrc/menu-div0test/classes.c index d6d606ce9..d6d4f0cb0 100644 --- a/data/qcsrc/menu-div0test/classes.c +++ b/data/qcsrc/menu-div0test/classes.c @@ -60,3 +60,4 @@ #include "nexuiz/slider_decibels.c" #include "nexuiz/dialog_singleplayer.c" #include "nexuiz/campaign.c" +#include "nexuiz/dialog_singleplayer_winner.c" diff --git a/data/qcsrc/menu-div0test/menu.qc b/data/qcsrc/menu-div0test/menu.qc index 27b98a502..02ddd8516 100644 --- a/data/qcsrc/menu-div0test/menu.qc +++ b/data/qcsrc/menu-div0test/menu.qc @@ -15,6 +15,9 @@ float prevMenuAlpha; float menuLoadedMaplist; float menuNotTheFirstFrame; +string campaign_name_previous; +float campaign_won_previous; + void SUB_Null() { }; void() m_init = @@ -188,6 +191,29 @@ void() m_draw = menuPrevTime = t; time += frametime; + if not(campaign_name_previous) + campaign_name_previous = strzone(strcat(campaign_name, "x")); // force unequal + if(campaign_name == campaign_name_previous) + { + if(cvar(strcat("g_campaign", campaign_name, "_won"))) + { + if(!campaign_won_previous) + { + m_display(); + DialogOpenButton_Click_withCoords(NULL, main.winnerDialog, '0 0 0', '1 1 0'); + } + campaign_won_previous = 1; + } + else + campaign_won_previous = 0; + } + else + { + strunzone(campaign_name_previous); + campaign_name_previous = strzone(campaign_name); + campaign_won_previous = cvar(strcat("g_campaign", campaign_name, "_won")); + } + if(Menu_Active) { if(getmousetarget() == MT_MENU && (getkeydest() == KEY_MENU || getkeydest() == KEY_MENU_GRABBED)) diff --git a/data/qcsrc/menu-div0test/nexuiz/dialog_singleplayer_winner.c b/data/qcsrc/menu-div0test/nexuiz/dialog_singleplayer_winner.c new file mode 100644 index 000000000..817584600 --- /dev/null +++ b/data/qcsrc/menu-div0test/nexuiz/dialog_singleplayer_winner.c @@ -0,0 +1,25 @@ +#ifdef INTERFACE +CLASS(NexuizWinnerDialog) EXTENDS(NexuizDialog) + METHOD(NexuizWinnerDialog, fill, void(entity)) + ATTRIB(NexuizWinnerDialog, title, string, "Winner") + ATTRIB(NexuizWinnerDialog, color, vector, SKINCOLOR_DIALOG_MULTIPLAYER) + ATTRIB(NexuizWinnerDialog, intendedWidth, float, 0.64) + ATTRIB(NexuizWinnerDialog, rows, float, 12) + ATTRIB(NexuizWinnerDialog, columns, float, 3) +ENDCLASS(NexuizWinnerDialog) +#endif + +#ifdef IMPLEMENTATION +void fillNexuizWinnerDialog(entity me) +{ + entity mc, e; + + me.TR(me); + me.TD(me, me.rows - 2, me.columns, e = makeNexuizImage("/gfx/winner", 1.0)); + + me.gotoXY(me, me.rows - 1, 0); + me.TD(me, 1, me.columns, e = makeNexuizButton("OK", '0 0 0')); + e.onClick = Dialog_Close; + e.onClickEntity = me; +} +#endif diff --git a/data/qcsrc/menu-div0test/nexuiz/mainwindow.c b/data/qcsrc/menu-div0test/nexuiz/mainwindow.c index 2a0f60d00..648364c97 100644 --- a/data/qcsrc/menu-div0test/nexuiz/mainwindow.c +++ b/data/qcsrc/menu-div0test/nexuiz/mainwindow.c @@ -4,6 +4,7 @@ CLASS(MainWindow) EXTENDS(ModalController) ATTRIB(MainWindow, mutatorsDialog, entity, NULL) ATTRIB(MainWindow, mapInfoDialog, entity, NULL) ATTRIB(MainWindow, userbindEditDialog, entity, NULL) + ATTRIB(MainWindow, winnerDialog, entity, NULL) ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND) ENDCLASS(MainWindow) #endif @@ -38,6 +39,10 @@ void configureMainWindowMainWindow(entity me) i.configureDialog(i); me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); + me.winnerDialog = i = spawnNexuizWinnerDialog(); + i.configureDialog(i); + me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); + n = spawnNexuizNexposee(); /* if(checkextension("DP_GECKO_SUPPORT")) -- 2.39.2