Move local confirm menu to new menu implementation

This commit is contained in:
mittorn 2018-07-30 01:06:50 +07:00
parent b498e9170c
commit 16c9ac26ed
3 changed files with 56 additions and 4 deletions

View File

@ -436,15 +436,15 @@ void GlobalMenu::ShowGlobalMenu( const char *title, int count, const char **menu
void GlobalMenu::ConfirmMenu( CBasePlayer *pPlayer, CBaseEntity *trigger, const char *mapname )
{
if( g_iMenu && gpGlobals->time - m_flTime < 30 )
return; // wait 30s befor new confirm vote
/*if( g_iMenu && gpGlobals->time - m_flTime < 30 )
return; // wait 30s before new confirm vote
if( pPlayer->gravgunmod_data.m_iMenuState == MENUSTATE_LOCAL_CONFIRM )
return;
if( pPlayer->gravgunmod_data.m_iLocalConfirm < 3 )
{
UTIL_CoopLocalConfirmMenu( pPlayer );
return;
}
}*/
g_iMenu = 1;
m_flTime = gpGlobals->time;
m_pTrigger = trigger;
@ -861,6 +861,50 @@ bool UTIL_CoopConfirmMenu(CBaseEntity *pTrigger, CBaseEntity *pActivator, int co
return true;
}
bool COOP_ConfirmMenu(CBaseEntity *pTrigger, CBaseEntity *pActivator, int count2, char *mapname )
{
if( gpGlobals->time - g_GlobalMenu.m_flTime > 30 )
{
g_iMenu = 0;
g_GlobalMenu.m_iConfirm = 0;
}
if( g_iMenu != 1 )
{
if( !UTIL_CoopIsBadPlayer( pActivator ) )
{
CBasePlayer *pPlayer = (CBasePlayer*)pActivator;
if( pPlayer->gravgunmod_data.m_iLocalConfirm == 0 )
pPlayer->gravgunmod_data.m_iLocalConfirm = 1;
if( pPlayer->gravgunmod_data.m_iLocalConfirm < 3 )
{
pPlayer->gravgunmod_data.menu.New("This will change map back. Are you sure?")
.Add("Confirm", "confirmchangelevel")
.Add("Cancel", "")
.Show();
}
else
g_GlobalMenu.ConfirmMenu(pPlayer, pTrigger, mapname );
}
return false;
}
if( g_GlobalMenu.m_iConfirm < count2 )
return false;
if( mp_coop_strongcheckpoints.value )
{
// do not allow go back if there are checkpoints, but not near changelevel
if( g_checkpoints[0].time && (g_checkpoints[0].origin - VecBModelOrigin(pTrigger->pev)).Length() > 150 )
{
g_GlobalMenu.m_iConfirm = 0;
UTIL_CoopPlayerMessage( pActivator, 1, 5, 0xFF0000FF, 0xFF0000FF, 0, 0.7, "Changelevel back locked by checkpoint\nCheckpoint here to activate trigger!");
return false;
}
//if( count2 < 2 )
//return;
}
return true;
}
void COOP_CheckpointMenu( CBasePlayer *pPlayer )
{
int i;
@ -969,6 +1013,13 @@ bool COOP_ClientCommand( edict_t *pEntity )
return false;
return true;
}
else if( FStrEq( pcmd, "confirmchangelevel" ) )
{
if( pPlayer->gravgunmod_data.m_iLocalConfirm )
pPlayer->gravgunmod_data.m_iLocalConfirm++;
else
return false;
}
return false;
}

View File

@ -64,6 +64,7 @@ void UTIL_CoopPlayerMessage( CBaseEntity *pPlayer, int channel, float time, unsi
bool UTIL_CoopPlayerDeath( CBasePlayer *pPlayer );
void COOP_RegisterCVars( void );
bool COOP_ClientCommand( edict_t *pEntity );
bool COOP_ConfirmMenu(CBaseEntity *pTrigger, CBaseEntity *pActivator, int count2, char *mapname );
#ifdef PLAYER_H
void UTIL_CoopKickPlayer(CBaseEntity *pPlayer);

View File

@ -1722,7 +1722,7 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator )
// return;
if( m_fIsBack )
if( !UTIL_CoopConfirmMenu( this, pActivator, count2, m_szMapName ) )
if( !COOP_ConfirmMenu( this, pActivator, count2, m_szMapName ) )
return;
}