|
|
|
/****************************************************************
|
|
|
|
* *
|
|
|
|
* hudzoom.cpp *
|
|
|
|
* *
|
|
|
|
* par Julien *
|
|
|
|
* *
|
|
|
|
****************************************************************/
|
|
|
|
|
|
|
|
// code du viseur du fusil de snipe
|
|
|
|
|
|
|
|
|
|
|
|
#include "hud.h"
|
|
|
|
#include "cl_util.h"
|
|
|
|
#include "const.h"
|
|
|
|
#include "entity_state.h"
|
|
|
|
#include "cl_entity.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int CHudSniper :: Draw ( float flTime )
|
|
|
|
{
|
|
|
|
if ( gHUD.m_iFOV == 90 || gHUD.m_iFOV == 0 )
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
static const float CenterX = ScreenWidth / 2; //modif de Roy, add float
|
|
|
|
static const float CenterY = ScreenHeight / 2;
|
|
|
|
|
|
|
|
|
|
|
|
if ( ScreenWidth >= 1024 )
|
|
|
|
{
|
|
|
|
// ligne du haut
|
|
|
|
|
|
|
|
SPR_Set( m_sprHG, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128 - 256, CenterY -128 - 256, &m_wrc1024);
|
|
|
|
|
|
|
|
SPR_Set( m_sprH, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128, CenterY - 128 - 256, &m_wrc1024);
|
|
|
|
|
|
|
|
SPR_Set( m_sprHD, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX + 128, CenterY -128 - 256, &m_wrc1024);
|
|
|
|
|
|
|
|
// ligne du milieu
|
|
|
|
|
|
|
|
SPR_Set( m_sprG, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128 - 256, CenterY -128, &m_wrc1024);
|
|
|
|
|
|
|
|
SPR_Set( m_sprViseur, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128, CenterY -128, &m_wrc1024);
|
|
|
|
|
|
|
|
SPR_Set( m_sprD, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX + 128, CenterY -128, &m_wrc1024);
|
|
|
|
|
|
|
|
// ligne du bas
|
|
|
|
|
|
|
|
SPR_Set( m_sprBG, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128 - 256, CenterY + 128, &m_wrc1024);
|
|
|
|
|
|
|
|
SPR_Set( m_sprB, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128, CenterY + 128, &m_wrc1024);
|
|
|
|
|
|
|
|
SPR_Set( m_sprBD, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX + 128, CenterY + 128, &m_wrc1024);
|
|
|
|
|
|
|
|
|
|
|
|
// noir
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for ( i = 0 ; i < ScreenHeight ; i += 256 )
|
|
|
|
{
|
|
|
|
m_wrcNoir.left = 0;
|
|
|
|
m_wrcNoir.top = 0;
|
|
|
|
m_wrcNoir.right = ScreenWidth / 2 - 128 - 256;
|
|
|
|
m_wrcNoir.bottom = 256;
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, 0, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
SPR_DrawHoles( 0, ScreenWidth / 2 + 128 + 256, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( 256 * i + 256 < ScreenHeight )
|
|
|
|
{
|
|
|
|
m_wrcNoir.bottom = ScreenHeight - ( 256 * i + 256 ) ;
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, 0, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
SPR_DrawHoles( 0, ScreenWidth / 2 + 128 + 256, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// noir en haut et en bas
|
|
|
|
|
|
|
|
if ( CenterY - 128 - 256 > 0 )
|
|
|
|
{
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for ( i = 0 ; i < 3 ; i ++ )
|
|
|
|
{
|
|
|
|
m_wrcNoir.left = 0;
|
|
|
|
m_wrcNoir.top = 0;
|
|
|
|
m_wrcNoir.right = 256;
|
|
|
|
m_wrcNoir.bottom = CenterY - 128 - 256;
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128 - 256 + i * 256 , 0, &m_wrcNoir);
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 128 - 256 + i * 256 , CenterY + 128 + 256, &m_wrcNoir);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
|
|
|
|
// ligne du haut
|
|
|
|
|
|
|
|
SPR_Set( m_sprHG, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 240, CenterY -240, &m_wrc640);
|
|
|
|
|
|
|
|
SPR_Set( m_sprHD, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX, CenterY -240, &m_wrc640);
|
|
|
|
|
|
|
|
// ligne du bas
|
|
|
|
|
|
|
|
SPR_Set( m_sprBG, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 240, CenterY, &m_wrc640);
|
|
|
|
|
|
|
|
SPR_Set( m_sprBD, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX, CenterY, &m_wrc640);
|
|
|
|
|
|
|
|
// viseur
|
|
|
|
|
|
|
|
SPR_Set( m_sprViseur, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 16, CenterY - 16, &m_wrc640Viseur);
|
|
|
|
|
|
|
|
|
|
|
|
// noir
|
|
|
|
|
|
|
|
if ( CenterX - 240 > 0 )
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for ( i = 0 ; i < ScreenHeight ; i += 256 )
|
|
|
|
{
|
|
|
|
m_wrcNoir.left = 0;
|
|
|
|
m_wrcNoir.top = 0;
|
|
|
|
m_wrcNoir.right = CenterX - 240;
|
|
|
|
m_wrcNoir.bottom = 256;
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, 0, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
SPR_DrawHoles( 0, CenterX + 240, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( 256 * i + 256 < ScreenHeight )
|
|
|
|
{
|
|
|
|
m_wrcNoir.bottom = ScreenHeight - ( 256 * i + 256 ) ;
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, 0, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
SPR_DrawHoles( 0, CenterX + 240, i, &m_wrcNoir);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// noir en haut et en bas
|
|
|
|
|
|
|
|
if ( CenterY - 240 > 0 )
|
|
|
|
{
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for ( i = 0 ; i < 3 ; i ++ )
|
|
|
|
{
|
|
|
|
m_wrcNoir.left = 0;
|
|
|
|
m_wrcNoir.top = 0;
|
|
|
|
m_wrcNoir.right = 256;
|
|
|
|
m_wrcNoir.bottom = CenterY - 240;
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 240 + i * 256 , 0, &m_wrcNoir);
|
|
|
|
|
|
|
|
SPR_Set( m_sprBlack, 255, 255, 255);
|
|
|
|
SPR_DrawHoles(0, CenterX - 240 + i * 256 , CenterY + 240, &m_wrcNoir);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int CHudSniper :: Init( void )
|
|
|
|
{
|
|
|
|
|
|
|
|
if ( ScreenWidth >= 1024 )
|
|
|
|
{
|
|
|
|
|
|
|
|
m_sprHG = SPR_Load("sprites/fsniper/fsniper_1024_up_l.spr");
|
|
|
|
if(!m_sprHG) m_sprHG = SPR_Load("sprites/fsniper/fsniper_1024_up_l.SPR");
|
|
|
|
m_sprH = SPR_Load("sprites/fsniper/fsniper_1024_up.spr");
|
|
|
|
if(!m_sprH) m_sprH = SPR_Load("sprites/fsniper/fsniper_1024_up.SPR");
|
|
|
|
m_sprHD = SPR_Load("sprites/fsniper/fsniper_1024_up_r.spr");
|
|
|
|
if(!m_sprHD) m_sprHD = SPR_Load("sprites/fsniper/fsniper_1024_up_r.SPR");
|
|
|
|
|
|
|
|
m_sprBD = SPR_Load("sprites/fsniper/fsniper_1024_down_r.spr");
|
|
|
|
if(!m_sprBD) m_sprBD = SPR_Load("sprites/fsniper/fsniper_1024_down_r.SPR");
|
|
|
|
m_sprB = SPR_Load("sprites/fsniper/fsniper_1024_down.spr");
|
|
|
|
if(!m_sprB) m_sprB = SPR_Load("sprites/fsniper/fsniper_1024_down.SPR");
|
|
|
|
m_sprBG = SPR_Load("sprites/fsniper/fsniper_1024_down_l.spr");
|
|
|
|
if(!m_sprBG) m_sprBG = SPR_Load("sprites/fsniper/fsniper_1024_down_l.SPR");
|
|
|
|
|
|
|
|
m_sprG = SPR_Load("sprites/fsniper/fsniper_1024_left.spr");
|
|
|
|
if(!m_sprG) m_sprG = SPR_Load("sprites/fsniper/fsniper_1024_left.SPR");
|
|
|
|
m_sprD = SPR_Load("sprites/fsniper/fsniper_1024_right.spr");
|
|
|
|
if(!m_sprD) m_sprD = SPR_Load("sprites/fsniper/fsniper_1024_right.SPR");
|
|
|
|
|
|
|
|
m_sprViseur = SPR_Load("sprites/fsniper/fsniper_1024_cross.spr");
|
|
|
|
if(!m_sprViseur) m_sprViseur = SPR_Load("sprites/fsniper/fsniper_1024_cross.SPR");
|
|
|
|
m_sprBlack = SPR_Load("sprites/fsniper/fsniper_black.spr");
|
|
|
|
if(!m_sprBlack) m_sprBlack = SPR_Load("sprites/fsniper/fsniper_black.SPR");
|
|
|
|
|
|
|
|
|
|
|
|
m_wrc1024.left = 0;
|
|
|
|
m_wrc1024.top = 0;
|
|
|
|
m_wrc1024.right = 256;
|
|
|
|
m_wrc1024.bottom = 256;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else /* if ( ScreenWidth <= 640 )*/
|
|
|
|
{
|
|
|
|
|
|
|
|
m_sprHG = SPR_Load("sprites/fsniper/fsniper_640_up_l.spr");
|
|
|
|
if(!m_sprHG) m_sprHG = SPR_Load("sprites/fsniper/fsniper_640_up_l.SPR");
|
|
|
|
m_sprHD = SPR_Load("sprites/fsniper/fsniper_640_up_r.spr");
|
|
|
|
if(!m_sprHD) m_sprHD = SPR_Load("sprites/fsniper/fsniper_640_up_r.SPR");
|
|
|
|
m_sprBD = SPR_Load("sprites/fsniper/fsniper_640_down_r.spr");
|
|
|
|
if(!m_sprBD) m_sprBD = SPR_Load("sprites/fsniper/fsniper_640_down_r.SPR");
|
|
|
|
m_sprBG = SPR_Load("sprites/fsniper/fsniper_640_down_l.spr");
|
|
|
|
if(!m_sprBG) m_sprBG = SPR_Load("sprites/fsniper/fsniper_640_down_l.SPR");
|
|
|
|
|
|
|
|
m_sprViseur = SPR_Load("sprites/fsniper/fsniper_640_cross.spr");
|
|
|
|
if(!m_sprViseur) m_sprViseur = SPR_Load("sprites/fsniper/fsniper_640_cross.SPR");
|
|
|
|
m_sprBlack = SPR_Load("sprites/fsniper/fsniper_black.spr");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_wrc640.left = 0;
|
|
|
|
m_wrc640.top = 0;
|
|
|
|
m_wrc640.right = 240;
|
|
|
|
m_wrc640.bottom = 240;
|
|
|
|
|
|
|
|
m_wrc640Viseur.left = 0;
|
|
|
|
m_wrc640Viseur.top = 0;
|
|
|
|
m_wrc640Viseur.right = 32;
|
|
|
|
m_wrc640Viseur.bottom = 32;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_iFlags |= HUD_ACTIVE;
|
|
|
|
|
|
|
|
gHUD.AddHudElem(this);
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int CHudSniper :: VidInit( void )
|
|
|
|
{
|
|
|
|
|
|
|
|
if ( ScreenWidth >= 1024 )
|
|
|
|
{
|
|
|
|
|
|
|
|
m_sprHG = SPR_Load("sprites/fsniper/fsniper_1024_up_l.spr");
|
|
|
|
if(!m_sprHG) m_sprHG = SPR_Load("sprites/fsniper/fsniper_1024_up_l.SPR");
|
|
|
|
m_sprH = SPR_Load("sprites/fsniper/fsniper_1024_up.spr");
|
|
|
|
if(!m_sprH) m_sprH = SPR_Load("sprites/fsniper/fsniper_1024_up.SPR");
|
|
|
|
m_sprHD = SPR_Load("sprites/fsniper/fsniper_1024_up_r.spr");
|
|
|
|
if(!m_sprHD) m_sprHD = SPR_Load("sprites/fsniper/fsniper_1024_up_r.SPR");
|
|
|
|
|
|
|
|
m_sprBD = SPR_Load("sprites/fsniper/fsniper_1024_down_r.spr");
|
|
|
|
if(!m_sprBD) m_sprBD = SPR_Load("sprites/fsniper/fsniper_1024_down_r.SPR");
|
|
|
|
m_sprB = SPR_Load("sprites/fsniper/fsniper_1024_down.spr");
|
|
|
|
if(!m_sprB) m_sprB = SPR_Load("sprites/fsniper/fsniper_1024_down.SPR");
|
|
|
|
m_sprBG = SPR_Load("sprites/fsniper/fsniper_1024_down_l.spr");
|
|
|
|
if(!m_sprBG) m_sprBG = SPR_Load("sprites/fsniper/fsniper_1024_down_l.SPR");
|
|
|
|
|
|
|
|
m_sprG = SPR_Load("sprites/fsniper/fsniper_1024_left.spr");
|
|
|
|
if(!m_sprG) m_sprG = SPR_Load("sprites/fsniper/fsniper_1024_left.SPR");
|
|
|
|
m_sprD = SPR_Load("sprites/fsniper/fsniper_1024_right.spr");
|
|
|
|
if(!m_sprD) m_sprD = SPR_Load("sprites/fsniper/fsniper_1024_right.SPR");
|
|
|
|
|
|
|
|
m_sprViseur = SPR_Load("sprites/fsniper/fsniper_1024_cross.spr");
|
|
|
|
if(!m_sprViseur) m_sprViseur = SPR_Load("sprites/fsniper/fsniper_1024_cross.SPR");
|
|
|
|
m_sprBlack = SPR_Load("sprites/fsniper/fsniper_black.spr");
|
|
|
|
if(!m_sprBlack) m_sprBlack = SPR_Load("sprites/fsniper/fsniper_black.SPR");
|
|
|
|
|
|
|
|
|
|
|
|
m_wrc1024.left = 0;
|
|
|
|
m_wrc1024.top = 0;
|
|
|
|
m_wrc1024.right = 256;
|
|
|
|
m_wrc1024.bottom = 256;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else /*if ( ScreenWidth <= 640 )*/
|
|
|
|
{
|
|
|
|
|
|
|
|
m_sprHG = SPR_Load("sprites/fsniper/fsniper_640_up_l.spr");
|
|
|
|
if(!m_sprHG) m_sprHG = SPR_Load("sprites/fsniper/fsniper_640_up_l.SPR");
|
|
|
|
m_sprHD = SPR_Load("sprites/fsniper/fsniper_640_up_r.spr");
|
|
|
|
if(!m_sprHD) m_sprHD = SPR_Load("sprites/fsniper/fsniper_640_up_r.SPR");
|
|
|
|
m_sprBD = SPR_Load("sprites/fsniper/fsniper_640_down_r.spr");
|
|
|
|
if(!m_sprBD) m_sprBD = SPR_Load("sprites/fsniper/fsniper_640_down_r.SPR");
|
|
|
|
m_sprBG = SPR_Load("sprites/fsniper/fsniper_640_down_l.spr");
|
|
|
|
if(!m_sprBG) m_sprBG = SPR_Load("sprites/fsniper/fsniper_640_down_l.SPR");
|
|
|
|
|
|
|
|
m_sprViseur = SPR_Load("sprites/fsniper/fsniper_640_cross.spr");
|
|
|
|
if(!m_sprViseur) m_sprViseur = SPR_Load("sprites/fsniper/fsniper_640_cross.SPR");
|
|
|
|
m_sprBlack = SPR_Load("sprites/fsniper/fsniper_black.spr");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_wrc640.left = 0;
|
|
|
|
m_wrc640.top = 0;
|
|
|
|
m_wrc640.right = 240;
|
|
|
|
m_wrc640.bottom = 240;
|
|
|
|
|
|
|
|
m_wrc640Viseur.left = 0;
|
|
|
|
m_wrc640Viseur.top = 0;
|
|
|
|
m_wrc640Viseur.right = 32;
|
|
|
|
m_wrc640Viseur.bottom = 32;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_iFlags |= HUD_ACTIVE;
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|