Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

207 lines
5.5 KiB

//========= Copyright � 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#if !defined( MOVIESLOT_H_ )
#define MOVIESLOT_H_
class ScaleformUIImpl;
#include "UtlStringMap.h"
class BaseSlot
{
public:
SF::GFx::MovieDef* m_pMovieDef;
SF::GFx::Movie* m_pMovieView;
SF::GFx::Value m_GlobalValue;
SF::GFx::Value m_GameAPI;
CUtlStringMap< SF::GFx::Value * > m_mapGlobalObjects;
int m_iSlot;
int m_iRefCount;
bool m_bControllerUI;
float m_fChangeControllerTimeout;
protected:
enum CVAR_TYPE_WANTED
{
CVAR_WANT_NUMBER,
CVAR_WANT_NUMBER_MIN,
CVAR_WANT_NUMBER_MAX,
CVAR_WANT_STRING,
CVAR_WANT_BOOL,
};
void GetConvar( SF::GFx::FunctionHandler::Params* params, CVAR_TYPE_WANTED typeWanted );
bool ConvertValue( SF::GFx::Value *value, KeyValues* kv );
void PopulateObject( SF::GFx::Value* value, KeyValues* kv );
const char* PopulateArray( SF::GFx::Value* value, KeyValues* kv );
public:
BaseSlot();
void CreateKeyTable();
void Init( const char* movieName, int slot );
void UpdateSafeZone( void );
void UpdateTint( void );
void AddRef( void );
bool Release( void );
void LoadKVFile( SCALEFORM_CALLBACK_ARGS_DECL );
void SaveKVFile( SCALEFORM_CALLBACK_ARGS_DECL );
void GetConvarNumber( SCALEFORM_CALLBACK_ARGS_DECL );
void GetConvarNumberMin( SCALEFORM_CALLBACK_ARGS_DECL );
void GetConvarNumberMax( SCALEFORM_CALLBACK_ARGS_DECL );
void GetConvarString( SCALEFORM_CALLBACK_ARGS_DECL );
void GetConvarBoolean( SCALEFORM_CALLBACK_ARGS_DECL );
void GetPlayerColorObject( SCALEFORM_CALLBACK_ARGS_DECL );
void SetConvar( SCALEFORM_CALLBACK_ARGS_DECL );
void Translate( SCALEFORM_CALLBACK_ARGS_DECL );
void ReplaceGlyphs( SCALEFORM_CALLBACK_ARGS_DECL );
void GetPAXAvatarFromName(SCALEFORM_CALLBACK_ARGS_DECL);
void SendUIEvent( SCALEFORM_CALLBACK_ARGS_DECL );
void GetClipboardText( SCALEFORM_CALLBACK_ARGS_DECL );
void SetClipboardText( SCALEFORM_CALLBACK_ARGS_DECL );
void MakeStringSafe( SCALEFORM_CALLBACK_ARGS_DECL );
bool HandleCharTyped( const wchar_t* typed, int slost );
bool HandleKeyEvent( bool keyDown, ButtonCode_t code, ButtonCode_t vkey, const char* binding, int slot );
void LockInputToSlot( int slot );
void UnlockInput( void );
bool SetToControllerUI( bool value, bool isKeyOrButtonPress );
bool IsSetToControllerUI( void );
void Advance( float time );
void LockMostRecentInputDevice( void );
void ConsoleCommand( SCALEFORM_CALLBACK_ARGS_DECL );
void ConsoleCommandExecute( SCALEFORM_CALLBACK_ARGS_DECL );
void ForceCollectGarbage( void );
virtual void RequestElement( const char* elementName, ScaleformUIFunctionHandlerObject* object, const IScaleformUIFunctionHandlerDefinitionTable* tableObject )
{
}
virtual void RemoveElement( SF::GFx::Value* element )
{
}
virtual void InstallGlobalObject( const char* elementName, ScaleformUIFunctionHandlerObject* object, const IScaleformUIFunctionHandlerDefinitionTable* tableObject, SF::GFx::Value* *pInstalledGlobalObjectResult )
{
}
virtual void RemoveGlobalObject( SF::GFx::Value* element )
{
}
virtual const ScaleformUIFunctionHandlerDefinition* GetSlotAPITable( void )
{
return NULL;
}
virtual bool ConsumesInputEvents( void )
{
return true;
}
// SF4 TODO
// We create slot 2 while loading the map and start calling advance on it. However, the qms doesn't call
// render very often during this phase so the advance gets too far ahead of the renderer which causes SF
// internal buffers to fill up. This is a hack to work around this and might need to be done differently
volatile uint32 m_advanceCount;
protected:
virtual void Unload( void );
};
class MovieSlot: public BaseSlot
{
public:
int m_iNumInputConsumers;
bool m_bDisableAnalogNavigation;
public:
MovieSlot();
public:
void RequestElement( const char* elementName, ScaleformUIFunctionHandlerObject* object, const IScaleformUIFunctionHandlerDefinitionTable* tableObject );
void RemoveElement( SF::GFx::Value* element );
void InstallGlobalObject( const char* elementName, ScaleformUIFunctionHandlerObject* object, const IScaleformUIFunctionHandlerDefinitionTable* tableObject, SF::GFx::Value* *pInstalledGlobalObjectResult );
void RemoveGlobalObject( SF::GFx::Value* element );
const ScaleformUIFunctionHandlerDefinition* GetSlotAPITable();
bool ConsumesInputEvents( void )
{
return m_iNumInputConsumers > 0;
}
public:
void AddInputConsumer( SCALEFORM_CALLBACK_ARGS_DECL );
void RemoveInputConsumer( SCALEFORM_CALLBACK_ARGS_DECL );
void DenyInputToGameFromFlash( SCALEFORM_CALLBACK_ARGS_DECL );
void SetCursorShape( SCALEFORM_CALLBACK_ARGS_DECL );
void ShowCursor( SCALEFORM_CALLBACK_ARGS_DECL );
void HideCursor( SCALEFORM_CALLBACK_ARGS_DECL );
void PlaySoundScaleform( SCALEFORM_CALLBACK_ARGS_DECL );
void DisableAnalogStickNavigation( SCALEFORM_CALLBACK_ARGS_DECL );
bool AnalogStickNavigationDisabled( void );
#if defined( _PS3 )
void PS3UseMoveCursor( SCALEFORM_CALLBACK_ARGS_DECL );
void PS3UseStandardCursor( SCALEFORM_CALLBACK_ARGS_DECL );
void PS3ForceCursorStart( SCALEFORM_CALLBACK_ARGS_DECL );
void PS3ForceCursorEnd( SCALEFORM_CALLBACK_ARGS_DECL );
#endif
};
class CursorSlot: public BaseSlot
{
bool m_bUIHidden;
public:
CursorSlot() :
m_bUIHidden( true )
{
}
void SetCursorShape( int shape );
void Hide( void );
void Show( void );
virtual bool IsHidden( void )
{
return m_bUIHidden;
}
virtual bool IsVisible( void )
{
return !m_bUIHidden;
}
};
#endif /* MOVIESLOT_H_ */