Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.
 
 
 
 
 
 

76 lines
2.0 KiB

//============ Copyright (c) Valve Corporation, All rights reserved. ============
//
// Root panel of a layout system definition (aka mission)
//
//===============================================================================
#include "KeyValues.h"
#include "vgui_controls/Button.h"
#include "layout_system_editor/state_node_panel.h"
#include "layout_system_editor/rule_instance_node_panel.h"
#include "layout_system_editor/mission_panel.h"
using namespace vgui;
CMissionPanel::CMissionPanel( Panel *pParent, const char *pName ) :
BaseClass( pParent, pName )
{
EnableNameEditBox( true );
SetChildIndent( 10 );
}
void CMissionPanel::PerformLayout()
{
BaseClass::PerformLayout();
int x, y;
GetSizer()->GetMinSize( x, y );
SetSize( MAX( x, 450 ), y );
SetBgColor( Color( 48, 48, 48, 255 ) );
}
void CMissionPanel::CreatePanelContents()
{
KeyValues *pNodeKV = GetData();
if ( pNodeKV == NULL )
{
return;
}
int nIndex = 0;
for ( KeyValues *pSubKey = pNodeKV->GetFirstSubKey(); pSubKey != NULL; pSubKey = pSubKey->GetNextKey() )
{
bool bIsState = ( Q_stricmp( pSubKey->GetName(), "state" ) == 0 );
bool bIsRuleInstance = ( Q_stricmp( pSubKey->GetName(), "rule_instance" ) == 0 );
if ( bIsState || bIsRuleInstance )
{
AddNewElementPanel( nIndex, true, false );
CNodePanel *pPanel = CreateChild( pSubKey );
pPanel->EnableDeleteButton( true );
AddChild( pPanel, 10 );
if ( bIsRuleInstance )
{
CRuleInstanceNodePanel *pRuleInstancePanel = ( CRuleInstanceNodePanel * )pPanel;
pRuleInstancePanel->AddAllowableRuleType( "state" );
pRuleInstancePanel->AddAllowableRuleType( "global_action" );
pRuleInstancePanel->AddAllowableRuleType( "option_block" );
}
}
++ nIndex;
}
AddNewElementPanel( nIndex, true, false );
}
void CMissionPanel::UpdateState()
{
KeyValues *pNodeKV = GetData();
if ( pNodeKV != NULL )
{
Q_strncpy( m_NodeLabel, "Mission", m_nNameLength );
Q_strncpy( m_NodeName, pNodeKV->GetString( "name", "<unnamed>"), m_nNameLength );
}
BaseClass::UpdateState();
}