mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-02-08 21:14:14 +00:00
Move global menu to new menu interface
This commit is contained in:
parent
16c9ac26ed
commit
7eda9d88d0
@ -329,23 +329,6 @@ void UTIL_CoopApplyData( void )
|
||||
|
||||
int g_iMenu;
|
||||
|
||||
|
||||
void UTIL_CoopLocalConfirmMenu(CBasePlayer *pPlayer)
|
||||
{
|
||||
const char *menu[] = {
|
||||
"No",
|
||||
"Cancel",
|
||||
"Do not confirm",
|
||||
"Don't confirm",
|
||||
"Единая Россия"
|
||||
};
|
||||
|
||||
menu[pPlayer->gravgunmod_data.m_iConfirmKey = RANDOM_LONG(2,4)] = "Confirm";
|
||||
UTIL_CoopShowMenu(pPlayer, "Confirm changing map BACK (NOT RECOMMENDED)?", ARRAYSIZE(menu), menu);
|
||||
pPlayer->gravgunmod_data.m_iMenuState = MENUSTATE_LOCAL_CONFIRM;
|
||||
}
|
||||
|
||||
|
||||
void GlobalMenu::Process( CBasePlayer *pPlayer, int imenu )
|
||||
{
|
||||
if( pPlayer->pev->flags & FL_SPECTATOR )
|
||||
@ -386,37 +369,12 @@ void GlobalMenu::Process( CBasePlayer *pPlayer, int imenu )
|
||||
UTIL_CoopKickPlayer( m_pPlayer );
|
||||
}
|
||||
break;
|
||||
case 2: // vote by request
|
||||
UTIL_CoopPrintMessage( "%s^7 selected ^3%s\n", UTIL_CoopPlayerName( pPlayer ), maps[imenu - 1] );
|
||||
|
||||
if( imenu < m_iConfirm )
|
||||
{
|
||||
votes[imenu-1]++;
|
||||
m_iVoteCount++;
|
||||
|
||||
if( votes[1] >= 2 )
|
||||
{
|
||||
// two players vote for ban
|
||||
UTIL_CoopKickPlayer( m_pPlayer );
|
||||
}
|
||||
|
||||
if( m_iVoteCount >= m_iMaxCount )
|
||||
{
|
||||
for( int i = 0; i <= m_iConfirm; i++ )
|
||||
if( votes[i] >= m_iMaxCount )
|
||||
{
|
||||
UTIL_CoopActivateChangeLevel( triggers[i] );
|
||||
g_iMenu = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
void GlobalMenu::ShowGlobalMenu( const char *title, int count, const char **menu )
|
||||
{
|
||||
int count2 = 0;
|
||||
|
||||
for( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
CBaseEntity *plr = UTIL_PlayerByIndex( i );
|
||||
@ -425,8 +383,14 @@ void GlobalMenu::ShowGlobalMenu( const char *title, int count, const char **menu
|
||||
{
|
||||
count2++;
|
||||
CBasePlayer *player = (CBasePlayer *) plr;
|
||||
UTIL_CoopShowMenu( player, title, count, menu, 30 );
|
||||
player->gravgunmod_data.m_iMenuState = MENUSTATE_GLOBAL;
|
||||
GGM_PlayerMenu &m = player->gravgunmod_data.menu.New( title );
|
||||
for( int j = 0; j < count; j++ )
|
||||
{
|
||||
char cmd[32];
|
||||
sprintf(cmd, "votemenu %d", i );
|
||||
m.Add( menu[j], cmd );
|
||||
}
|
||||
m.Show();
|
||||
|
||||
}
|
||||
}
|
||||
@ -496,28 +460,7 @@ void UTIL_CoopNewCheckpoint( entvars_t *pevPlayer )
|
||||
UTIL_CoopHudMessage( 1, 5, 0xFF0000FF, 0xFF0000FF, 0, 0.7, "New checkpoint by %s!\n", STRING( pevPlayer->netname ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
void UTIL_CoopVoteMenu( CBasePlayer *pPlayer )
|
||||
{
|
||||
int count = 0;
|
||||
for( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
CBaseEntity *plr = UTIL_PlayerByIndex( i );
|
||||
|
||||
if( plr && plr->IsPlayer() )
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if( count < 4 )
|
||||
{
|
||||
UTIL_CoopPlayerMessage( pPlayer, 1, 5, 0xFFFFFFFF, 0xFFFFFFFF, 0, 0.7, "Need at least 4 players to vote changelevel!\n");
|
||||
return;
|
||||
}
|
||||
g_GlobalMenu.VoteMenu(pPlayer);
|
||||
}
|
||||
|
||||
/*
|
||||
void UTIL_CoopMenu( CBasePlayer *pPlayer )
|
||||
{
|
||||
if( pPlayer->gravgunmod_data.m_state == STATE_SPAWNED )
|
||||
@ -551,7 +494,7 @@ void UTIL_CoopMenu( CBasePlayer *pPlayer )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
bool UTIL_CoopPlayerDeath( CBasePlayer *pPlayer )
|
||||
{
|
||||
@ -567,7 +510,7 @@ bool UTIL_CoopPlayerDeath( CBasePlayer *pPlayer )
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
void UTIL_CoopProcessMenu( CBasePlayer *pPlayer, int imenu )
|
||||
{
|
||||
switch( pPlayer->gravgunmod_data.m_iMenuState )
|
||||
@ -649,6 +592,7 @@ void UTIL_CoopProcessMenu( CBasePlayer *pPlayer, int imenu )
|
||||
}
|
||||
//pPlayer->gravgunmod_data.m_iMenuState = MENUSTATE_NONE;
|
||||
}
|
||||
*/
|
||||
|
||||
bool UTIL_CoopRestorePlayerCoords(CBaseEntity *player, Vector *origin, Vector *angles )
|
||||
{
|
||||
@ -1020,6 +964,11 @@ bool COOP_ClientCommand( edict_t *pEntity )
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else if( FStrEq( pcmd, "votemenu" ) )
|
||||
{
|
||||
int i = atoi( CMD_ARGV(1) );
|
||||
g_GlobalMenu.Process(pPlayer, i);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -92,10 +92,8 @@ public:
|
||||
float m_flTime;
|
||||
const char *maps[5];
|
||||
int votes[5];
|
||||
CBaseEntity *triggers[5];
|
||||
EHANDLE m_pTrigger;
|
||||
EHANDLE m_pPlayer;
|
||||
void VoteMenu( CBasePlayer *pPlayer );
|
||||
void ConfirmMenu( CBasePlayer *pPlayer, CBaseEntity *trigger, const char *mapname );
|
||||
void ShowGlobalMenu( const char *title, int count, const char **menu );
|
||||
void Process( CBasePlayer *pPlayer, int imenu );
|
||||
|
@ -483,11 +483,32 @@ void GGM_PlayerMenu::Show()
|
||||
char buf[256];
|
||||
#define MENU_STR(VAR) (#VAR)
|
||||
sprintf( buf, MENU_STR(slot10\ntouch_hide _coops*\ntouch_show _coops\ntouch_addbutton "_coopst" "#%s" "" 0.16 0.11 0.41 0.3 0 255 0 255 78 1.5\n), m_sTitle);
|
||||
|
||||
if( pPlayer )
|
||||
CLIENT_COMMAND( pPlayer->edict(), buf);
|
||||
/*else
|
||||
{
|
||||
for( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
CBaseEntity *plr = UTIL_PlayerByIndex( i );
|
||||
if( plr && plr->IsPlayer() )
|
||||
CLIENT_COMMAND( plr->edict(), buf);
|
||||
}
|
||||
}*/
|
||||
for( int i = 0; i < m_iCount; i++ )
|
||||
{
|
||||
sprintf( buf, MENU_STR(touch_settexture _coops%d "#%d. %s"\ntouch_show _coops%d\n), i+1, i+1, m_items[i].name, i + 1 );
|
||||
if( pPlayer )
|
||||
CLIENT_COMMAND( pPlayer->edict(), buf);
|
||||
/*else
|
||||
{
|
||||
for( int i = 1; i <= gpGlobals->maxClients; i++ )
|
||||
{
|
||||
CBaseEntity *plr = UTIL_PlayerByIndex( i );
|
||||
if( plr && plr->IsPlayer() )
|
||||
CLIENT_COMMAND( plr->edict(), buf);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -500,6 +521,9 @@ void GGM_PlayerMenu::Show()
|
||||
pbuf += sprintf( pbuf, "^3%d.^7 %s\n", i+1, m_items[i].name);
|
||||
flags |= 1<<i;
|
||||
}
|
||||
/*if( !pPlayer )
|
||||
MESSAGE_BEGIN( MSG_ALL, gmsgShowMenu, NULL );
|
||||
else*/
|
||||
MESSAGE_BEGIN( MSG_ONE, gmsgShowMenu, NULL, pPlayer->pev );
|
||||
WRITE_SHORT( flags ); // slots
|
||||
WRITE_CHAR( 255 ); // show time
|
||||
|
@ -132,8 +132,8 @@ BOOL CHalfLifeMultiplay::ClientCommand( CBasePlayer *pPlayer, const char *pcmd )
|
||||
{
|
||||
int imenu = atoi( CMD_ARGV( 1 ) );
|
||||
|
||||
if( mp_coop.value )
|
||||
UTIL_CoopProcessMenu( pPlayer, imenu );
|
||||
// if( mp_coop.value )
|
||||
// UTIL_CoopProcessMenu( pPlayer, imenu );
|
||||
|
||||
return pPlayer->gravgunmod_data.menu.MenuSelect(imenu);
|
||||
}
|
||||
|
@ -1502,36 +1502,6 @@ void UTIL_CoopActivateChangeLevel( CBaseEntity *pTrigger )
|
||||
trigger->ChangeLevelNow( NULL );
|
||||
}
|
||||
|
||||
void GlobalMenu::VoteMenu( CBasePlayer *pPlayer )
|
||||
{
|
||||
if( g_iMenu && gpGlobals->time - m_flTime < 30 )
|
||||
return; // wait 30s befor new confirm vote
|
||||
CBaseEntity *pTrigger = NULL;
|
||||
int i = 0;
|
||||
g_iMenu = 2;
|
||||
m_flTime = gpGlobals->time;
|
||||
maps[i++] = "Keep this map";
|
||||
maps[i++] = "BAN";
|
||||
while( (pTrigger = UTIL_FindEntityByClassname( pTrigger, "trigger_changelevel" )) && (i < 5) )
|
||||
{
|
||||
CChangeLevel *ent = (CChangeLevel *)pTrigger;
|
||||
votes[i] = 0;
|
||||
triggers[i] = ent;
|
||||
maps[i++] = ent->m_szMapName;
|
||||
|
||||
|
||||
}
|
||||
votes[i] = 0;
|
||||
triggers[i] = NULL;
|
||||
m_iConfirm = i;
|
||||
m_iVoteCount = 0;
|
||||
m_pPlayer = pPlayer;
|
||||
UTIL_CoopPrintMessage( "%s^7 opened vote menu\n", UTIL_CoopPlayerName( pPlayer ) );
|
||||
ShowGlobalMenu(UTIL_VarArgs("%s requested to force change map", UTIL_CoopPlayerName( pPlayer ) ), i, maps);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void UTIL_CoopValidateOffset( void )
|
||||
{
|
||||
if( !g_SavedCoords.validoffset)
|
||||
|
Loading…
x
Reference in New Issue
Block a user