/************************************************************************
* *
* vgui_OrdiControl . cpp , par Julien *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// menu vgui pour le contr
# include "vgui_int.h"
# include "VGUI_Font.h"
# include "VGUI_ScrollPanel.h"
# include "VGUI_TextImage.h"
# include "hud.h"
# include "cl_util.h"
# include "vgui_TeamFortressViewport.h"
# include "crutches.h" //Load some code crutches for HLINVASION, modif de Roy
# ifndef CRASHFIXPATH_INVASION_VGUI
class CHandler_Conveyor : public InputSignal
# else
class CHandler_Conveyor : public ActionSignal
# endif
{
private :
int m_iConveyor ;
COrdiControlPanel * p ;
public :
CHandler_Conveyor ( COrdiControlPanel * pPanel , int i )
{
p = pPanel ;
m_iConveyor = i ;
}
# ifdef DOUBLECLICKFIXPATH_INVASION_VGUI
int skipTime = 0 ; //Just an integer to store double-press fix, modif de Roy
# endif
void cursorEntered ( Panel * panel ) { } ;
void mouseReleased ( MouseCode code , Panel * panel ) { } ;
void mouseDoublePressed ( MouseCode code , Panel * panel ) { } ;
void cursorExited ( Panel * panel ) { } ;
void mouseWheeled ( int delta , Panel * panel ) { } ;
void keyPressed ( KeyCode code , Panel * panel ) { } ;
void keyTyped ( KeyCode code , Panel * panel ) { } ;
void keyReleased ( KeyCode code , Panel * panel ) { } ;
void keyFocusTicked ( Panel * panel ) { } ;
void cursorMoved ( int x , int y , Panel * panel ) { } ;
# ifndef CRASHFIXPATH_INVASION_VGUI
void mousePressed ( MouseCode code , Panel * panel ) ;
# else
void actionPerformed ( Panel * panel ) ;
# endif
} ;
# ifndef CRASHFIXPATH_INVASION_VGUI
void CHandler_Conveyor : : mousePressed ( MouseCode code , Panel * panel )
# else
void CHandler_Conveyor : : actionPerformed ( Panel * panel ) // fonction declenchee lors de l'appui sur un boutton
# endif
{
# ifdef DOUBLECLICKFIXPATH_INVASION_VGUI
if ( skipTime > 0 ) {
skipTime - - ;
return ;
}
skipTime = 1 ; //Skip every second press modif de Roy
# endif
if ( p - > m_ibitConveyor & ( 1 < < m_iConveyor ) )
{
p - > m_ibitConveyor & = ~ ( 1 < < m_iConveyor ) ;
}
else
{
p - > m_ibitConveyor | = ( 1 < < m_iConveyor ) ;
}
p - > Initialize ( ) ;
gEngfuncs . pfnClientCmd ( " ordimenu 1 " ) ;
}
COrdiControlPanel : : COrdiControlPanel ( int iTrans , int iRemoveMe , int x , int y , int wide , int tall ) : CMenuPanel ( iTrans , iRemoveMe , x , y , wide , tall )
{
//constructeur du vgui - initialise les elements sans les afficher
//fonction appel
//return; //CRASHFIXPATH trying to diagnose the crash.
//===================================
// chargement des polices
//===================================
pSchemes = gViewPort - > GetSchemeManager ( ) ;
hTitleScheme = pSchemes - > getSchemeHandle ( " Title Font " ) ;
hInfoText = pSchemes - > getSchemeHandle ( " Briefing Text " ) ;
pTitleFont = pSchemes - > getFont ( hTitleScheme ) ;
pTextFont = pSchemes - > getFont ( hInfoText ) ;
pSchemes - > getFgColor ( hTitleScheme , r [ 0 ] , g [ 0 ] , b [ 0 ] , a [ 0 ] ) ;
pSchemes - > getBgColor ( hTitleScheme , r [ 1 ] , g [ 1 ] , b [ 1 ] , a [ 1 ] ) ;
pSchemes - > getFgColor ( hInfoText , r [ 2 ] , g [ 2 ] , b [ 2 ] , a [ 2 ] ) ;
pSchemes - > getBgColor ( hInfoText , r [ 3 ] , g [ 3 ] , b [ 3 ] , a [ 3 ] ) ;
//return; //CRASHFIXPATH
//====================================
//
//====================================
// fenetre
m_pWindow = new CTransparentPanel ( 255 , XRES ( 10 ) , YRES ( 10 ) , XRES ( 620 ) , YRES ( 460 ) ) ;
m_pWindow - > setParent ( this ) ;
m_pWindow - > setBorder ( new LineBorder ( Color ( 178 , 119 , 0 , 0 ) ) ) ; //Precalculated. Hates floats.
//m_pWindow->setBorder( new LineBorder( Color(255*0.7,170*0.7,0,0 )) );
// boutton quitter
m_pCancelButton = new CommandButton ( " Appliquer " , XRES ( 20 ) , YRES ( 400 ) , XRES ( 150 ) , YRES ( 20 ) ) ;
m_pCancelButton - > setParent ( m_pWindow ) ;
// m_pCancelButton->addActionSignal( new CMenuHandler_TextWindow(HIDE_TEXTWINDOW) );
m_pCancelButton - > addActionSignal ( new CMenuHandler_OrdiControl ( this ) ) ;
// image
m_pImage = new CImageLabel ( " conveyor " , XRES ( 0 ) , YRES ( 0 ) ) ;
m_pImage - > setParent ( m_pWindow ) ;
// boutons
int posY = XRES ( 60 ) ;
for ( int i = 0 ; i < 4 ; i + + )
{
char sz [ 16 ] ;
sprintf ( sz , " Tapis %i " , i + 1 ) ;
m_pButton [ i ] = new TextPanel ( sz , XRES ( 450 ) , posY , XRES ( 120 ) , YRES ( 20 ) ) ;
m_pButton [ i ] - > setParent ( m_pWindow ) ;
m_pButton [ i ] - > setFont ( pTextFont ) ;
m_pButton [ i ] - > setFgColor ( r [ 2 ] , g [ 2 ] , b [ 2 ] , a [ 2 ] ) ;
m_pButton [ i ] - > setBgColor ( r [ 3 ] , g [ 3 ] , b [ 3 ] , a [ 3 ] ) ;
posY + = 70 ;
}
posY = XRES ( 55 ) ;
for ( int i = 0 ; i < 4 ; i + + )
{
# ifndef CRASHFIXPATH_INVASION_VGUI
m_pFleche [ i ] = new CImageLabel ( " boutR " , XRES ( 500 ) , posY ) ;
# else
m_pFleche [ i ] = new CommandButton ( " > " , XRES ( 500 ) , posY , XRES ( 20 ) , YRES ( 20 ) ) ;
# endif
m_pFleche [ i ] - > setParent ( m_pWindow ) ;
# ifndef CRASHFIXPATH_INVASION_VGUI
m_pFleche [ i ] - > addInputSignal ( new CHandler_Conveyor ( this , i ) ) ;
# else
m_pFleche [ i ] - > addActionSignal ( new CHandler_Conveyor ( this , i ) ) ;
# endif
posY + = 70 ;
}
// texte
m_pText = new TextPanel ( " PANNEAU DE CONTROLE \n GENERAL \n \n Veuillez avertir le responsable du personnel avant de changer la direction des tapis menant au compresseur. " , XRES ( 380 ) , YRES ( 320 ) , XRES ( 200 ) , YRES ( 80 ) ) ;
m_pText - > setParent ( m_pWindow ) ;
m_pText - > setFont ( pTextFont ) ;
m_pText - > setFgColor ( r [ 2 ] , g [ 2 ] , b [ 2 ] , a [ 2 ] ) ;
m_pText - > setBgColor ( r [ 3 ] , g [ 3 ] , b [ 3 ] , a [ 3 ] ) ;
//m_pText->setBorder( new LineBorder( Color(255*0.7,170*0.7,0,0 )) );
m_pText - > setBorder ( new LineBorder ( Color ( 178 , 119 , 0 , 0 ) ) ) ; //Precalculated. Hates floats.
// bordure du texte
/*
m_pBorder = new TextPanel ( " " , XRES ( 370 ) , YRES ( 310 ) , XRES ( 200 ) , YRES ( 95 ) ) ;
m_pBorder - > setParent ( m_pWindow ) ;
m_pBorder - > setBorder ( new LineBorder ( Color ( 178 , 119 , 0 , 0 ) ) ) ; //Precalculated. Hates floats.
//m_pBorder->setBorder( new LineBorder( Color(255*0.7,170*0.7,0,0 )) );
m_pBorder - > setFgColor ( r [ 2 ] , g [ 2 ] , b [ 2 ] , a [ 2 ] ) ;
m_pBorder - > setBgColor ( r [ 3 ] , g [ 3 ] , b [ 3 ] , a [ 3 ] ) ;
*/
Initialize ( ) ; // ?
}
void CMenuHandler_OrdiControl : : actionPerformed ( Panel * panel ) // fonction declenchee lors de l'appui sur un boutton
{
char sz [ 16 ] ;
sprintf ( sz , " ordicontrol %i " , m_pPanel - > m_ibitConveyor ) ;
gEngfuncs . pfnClientCmd ( sz ) ; // conveyor
gEngfuncs . pfnClientCmd ( " ordimenu 2 " ) ; // blip
gViewPort - > HideTopMenu ( ) ;
}
//===============
//====================================================
void COrdiControlPanel : : Initialize ( void )
{
for ( int i = 0 ; i < 4 ; i + + )
{
if ( m_pFleche [ i ] = = NULL ) break ; //If they aren't initialized yet, break the loop. We're probably debugging, modif de Roy.
if ( m_ibitConveyor & ( 1 < < i ) )
{
# ifndef CRASHFIXPATH_INVASION_VGUI
m_pFleche [ i ] - > m_pTGA = LoadTGA ( " boutR " ) ;
m_pFleche [ i ] - > setImage ( m_pFleche [ i ] - > m_pTGA ) ;
# else
m_pFleche [ i ] - > setText ( " > " ) ;
# endif
}
else
{
# ifndef CRASHFIXPATH_INVASION_VGUI
m_pFleche [ i ] - > m_pTGA = LoadTGA ( " boutL " ) ;
m_pFleche [ i ] - > setImage ( m_pFleche [ i ] - > m_pTGA ) ;
# else
m_pFleche [ i ] - > setText ( " < " ) ;
# endif
}
}
}
void COrdiControlPanel : : Reset ( void )
{
CMenuPanel : : Reset ( ) ;
}