Browse Source

game(client): make touch more transparent in cutscenes

pull/133/head
nillerusr 2 years ago
parent
commit
653e08bce4
  1. 45
      game/client/touch.cpp
  2. 4
      game/client/touch.h

45
game/client/touch.cpp

@ -32,6 +32,7 @@ extern IMatSystemSurface *g_pMatSystemSurface;
extern ConVar sensitivity; extern ConVar sensitivity;
#define TOUCH_DEFAULT_CFG "touch_default.cfg" #define TOUCH_DEFAULT_CFG "touch_default.cfg"
#define MIN_ALPHA_IN_CUTSCENE 20
ConVar touch_enable( "touch_enable", TOUCH_DEFAULT, FCVAR_ARCHIVE ); ConVar touch_enable( "touch_enable", TOUCH_DEFAULT, FCVAR_ARCHIVE );
ConVar touch_draw( "touch_draw", "1", FCVAR_ARCHIVE ); ConVar touch_draw( "touch_draw", "1", FCVAR_ARCHIVE );
@ -75,7 +76,6 @@ CTouchPanel::CTouchPanel( vgui::VPANEL parent ) : BaseClass( NULL, "TouchPanel"
SetVisible( true ); SetVisible( true );
} }
void CTouchPanel::Paint() void CTouchPanel::Paint()
{ {
gTouch.Frame(); gTouch.Frame();
@ -374,6 +374,7 @@ void CTouchControls::Init()
m_flPreviousYaw = m_flPreviousPitch = 0.f; m_flPreviousYaw = m_flPreviousPitch = 0.f;
gridcolor = rgba_t(255, 0, 0, 50); gridcolor = rgba_t(255, 0, 0, 50);
m_bCutScene = false;
showtexture = hidetexture = resettexture = closetexture = joytexture = 0; showtexture = hidetexture = resettexture = closetexture = joytexture = 0;
configchanged = false; configchanged = false;
@ -419,6 +420,7 @@ void CTouchControls::Init()
textureList.AddToTail(texture); textureList.AddToTail(texture);
CreateAtlasTexture(); CreateAtlasTexture();
m_flHideTouch = 0.f;
initialized = true; initialized = true;
} }
@ -621,10 +623,29 @@ void CTouchControls::Frame()
if (!initialized) if (!initialized)
return; return;
C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
if( pPlayer && (pPlayer->GetFlags() & FL_FROZEN || g_pIntroData != NULL) )
{
if( !m_bCutScene )
{
m_bCutScene = true;
m_AlphaDiff = 0;
}
}
else if( !pPlayer )
{
m_bCutScene = false;
m_AlphaDiff = 0;
m_flHideTouch = 0;
}
else
m_bCutScene = false;
if( touch_enable.GetBool() && touch_draw.GetBool() && !enginevgui->IsGameUIVisible() ) Paint(); if( touch_enable.GetBool() && touch_draw.GetBool() && !enginevgui->IsGameUIVisible() ) Paint();
} }
void CTouchControls::Paint( ) void CTouchControls::Paint()
{ {
if (!initialized) if (!initialized)
return; return;
@ -680,7 +701,10 @@ void CTouchControls::Paint( )
m_pMesh = pRenderContext->GetDynamicMesh( true, NULL, NULL, g_pMatSystemSurface->DrawGetTextureMaterial(t->textureID) ); m_pMesh = pRenderContext->GetDynamicMesh( true, NULL, NULL, g_pMatSystemSurface->DrawGetTextureMaterial(t->textureID) );
meshBuilder.Begin( m_pMesh, MATERIAL_QUADS, 1 ); meshBuilder.Begin( m_pMesh, MATERIAL_QUADS, 1 );
rgba_t color(btn->color.r, btn->color.g, btn->color.b, btn->color.a);
int alpha = (btn->color.a > MIN_ALPHA_IN_CUTSCENE) ? max(MIN_ALPHA_IN_CUTSCENE, btn->color.a-m_AlphaDiff) : btn->color.a;
rgba_t color(btn->color.r, btn->color.g, btn->color.b, alpha);
meshBuilder.Position3f( btn->x1*screen_w, btn->y1*screen_h, 0 ); meshBuilder.Position3f( btn->x1*screen_w, btn->y1*screen_h, 0 );
meshBuilder.Color4ubv( color ); meshBuilder.Color4ubv( color );
meshBuilder.TexCoord2f( 0, 0, 0 ); meshBuilder.TexCoord2f( 0, 0, 0 );
@ -724,7 +748,9 @@ void CTouchControls::Paint( )
{ {
CTouchTexture *t = btn->texture; CTouchTexture *t = btn->texture;
rgba_t color(btn->color.r, btn->color.g, btn->color.b, btn->color.a); int alpha = (btn->color.a > MIN_ALPHA_IN_CUTSCENE) ? max(MIN_ALPHA_IN_CUTSCENE, btn->color.a-m_AlphaDiff) : btn->color.a;
rgba_t color(btn->color.r, btn->color.g, btn->color.b, alpha);
meshBuilder.Position3f( btn->x1*screen_w, btn->y1*screen_h, 0 ); meshBuilder.Position3f( btn->x1*screen_w, btn->y1*screen_h, 0 );
meshBuilder.Color4ubv( color ); meshBuilder.Color4ubv( color );
meshBuilder.TexCoord2f( 0, t->X0, t->Y0 ); meshBuilder.TexCoord2f( 0, t->X0, t->Y0 );
@ -749,6 +775,17 @@ void CTouchControls::Paint( )
meshBuilder.End(); meshBuilder.End();
m_pMesh->Draw(); m_pMesh->Draw();
if( m_flHideTouch < gpGlobals->curtime )
{
if( m_bCutScene && m_AlphaDiff < 255-MIN_ALPHA_IN_CUTSCENE )
m_AlphaDiff++;
else if( !m_bCutScene && m_AlphaDiff > 0 )
m_AlphaDiff--;
m_flHideTouch = gpGlobals->curtime + 0.002f;
}
} }
void CTouchControls::AddButton( const char *name, const char *texturefile, const char *command, float x1, float y1, float x2, float y2, rgba_t color, int round, float aspect, int flags ) void CTouchControls::AddButton( const char *name, const char *texturefile, const char *command, float x1, float y1, float x2, float y2, rgba_t color, int round, float aspect, int flags )

4
game/client/touch.h

@ -238,6 +238,10 @@ private:
bool config_loaded; bool config_loaded;
vgui::HFont textfont; vgui::HFont textfont;
int mouse_events; int mouse_events;
bool m_bCutScene;
float m_flHideTouch;
int m_AlphaDiff;
}; };
extern CTouchControls gTouch; extern CTouchControls gTouch;

Loading…
Cancel
Save