mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-13 12:19:13 +00:00
1
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
#include "dme_controls/AttributeSurfacePropertyPickerPanel.h"
|
||||
#include "dme_controls/AttributeTextEntry.h"
|
||||
#include "tier1/KeyValues.h"
|
||||
#include "filesystem.h"
|
||||
|
||||
|
||||
using namespace vgui;
|
||||
|
||||
|
||||
const char *SURFACEPROP_MANIFEST_FILE = "scripts/surfaceproperties_manifest.txt";
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CAttributeSurfacePropertyPickerPanel::CAttributeSurfacePropertyPickerPanel( vgui::Panel *parent, const AttributeWidgetInfo_t &info ) :
|
||||
BaseClass( parent, info )
|
||||
{
|
||||
}
|
||||
|
||||
CAttributeSurfacePropertyPickerPanel::~CAttributeSurfacePropertyPickerPanel()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Reads the surface properties
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAttributeSurfacePropertyPickerPanel::AddSurfacePropertiesToList( PickerList_t &list )
|
||||
{
|
||||
KeyValues *manifest = new KeyValues( SURFACEPROP_MANIFEST_FILE );
|
||||
if ( manifest->LoadFromFile( g_pFullFileSystem, SURFACEPROP_MANIFEST_FILE, "GAME" ) )
|
||||
{
|
||||
for ( KeyValues *sub = manifest->GetFirstSubKey(); sub != NULL; sub = sub->GetNextKey() )
|
||||
{
|
||||
if ( Q_stricmp( sub->GetName(), "file" ) )
|
||||
continue;
|
||||
|
||||
KeyValues *file = new KeyValues( SURFACEPROP_MANIFEST_FILE );
|
||||
if ( file->LoadFromFile( g_pFullFileSystem, sub->GetString(), "GAME" ) )
|
||||
{
|
||||
for ( KeyValues *pTrav = file; pTrav; pTrav = pTrav->GetNextKey() )
|
||||
{
|
||||
int i = list.AddToTail();
|
||||
list[i].m_pChoiceString = pTrav->GetName();
|
||||
list[i].m_pChoiceValue = pTrav->GetName();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Warning( "Unable to load surface properties file '%s'\n", sub->GetString() );
|
||||
}
|
||||
file->deleteThis();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Warning( "Unable to load manifest file '%s'\n", SURFACEPROP_MANIFEST_FILE );
|
||||
}
|
||||
|
||||
manifest->deleteThis();
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Called when it's time to show the picker
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAttributeSurfacePropertyPickerPanel::ShowPickerDialog()
|
||||
{
|
||||
CPickerFrame *pSurfacePropPickerDialog = new CPickerFrame( this, "Select Surface Property", "Surface Property", "surfacePropertyName" );
|
||||
PickerList_t surfacePropList;
|
||||
AddSurfacePropertiesToList( surfacePropList );
|
||||
pSurfacePropPickerDialog->AddActionSignalTarget( this );
|
||||
pSurfacePropPickerDialog->DoModal( surfacePropList );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Called by the picker dialog if a asset was selected
|
||||
//-----------------------------------------------------------------------------
|
||||
void CAttributeSurfacePropertyPickerPanel::OnPicked( KeyValues *pKeyValues )
|
||||
{
|
||||
// Get the asset name back
|
||||
const char *pSurfacePropertyName = pKeyValues->GetString( "choice", NULL );
|
||||
if ( !pSurfacePropertyName || !pSurfacePropertyName[ 0 ] )
|
||||
return;
|
||||
|
||||
// Apply to text panel
|
||||
m_pData->SetText( pSurfacePropertyName );
|
||||
SetDirty(true);
|
||||
if ( IsAutoApply() )
|
||||
{
|
||||
Apply();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user