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.
68 lines
1.5 KiB
68 lines
1.5 KiB
//===== Copyright © 1996-2009, Valve Corporation, All rights reserved. ======//
|
|
//
|
|
// Purpose:
|
|
//
|
|
//===========================================================================//
|
|
|
|
#ifndef EXT_KEYVALUES_H
|
|
#define EXT_KEYVALUES_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "mm_framework.h"
|
|
|
|
#include "matchmaking/mm_helpers.h"
|
|
|
|
#define KeyValuesAddDefaultValue( kv, szKeyName, defValue, fnSet ) \
|
|
( (kv)->FindKey( szKeyName ) ? (1) : ( (kv)->fnSet( szKeyName, defValue ), 1 ) )
|
|
|
|
#define KeyValuesAddDefaultString( kv, szKeyName, defValue ) \
|
|
KeyValuesAddDefaultValue( kv, szKeyName, defValue, SetString )
|
|
|
|
|
|
//
|
|
// ContextValue_t allows for quick mapping from strings to title-defined values
|
|
// in title specific code.
|
|
//
|
|
// static ContextValue_t values[] = {
|
|
// { "=INGAME", CONTEXT_GAME_STATE_INGAME },
|
|
// { "=INFINALE", CONTEXT_GAME_STATE_INFINALE },
|
|
// { NULL, CONTEXT_GAME_STATE_INLOBBY },
|
|
// };
|
|
// SetAllUsersContext( CONTEXT_GAME_STATE, values->ScanValues( szValue ) );
|
|
|
|
struct ContextValue_t
|
|
{
|
|
char const *m_szValue;
|
|
unsigned int m_dwValue;
|
|
|
|
inline unsigned int ScanValues( char const *szValue )
|
|
{
|
|
ContextValue_t const *p = this;
|
|
for ( ; p->m_szValue; ++ p )
|
|
{
|
|
if ( !Q_stricmp( p->m_szValue, szValue ) )
|
|
break;
|
|
}
|
|
return p->m_dwValue;
|
|
}
|
|
};
|
|
|
|
|
|
//
|
|
// Rule evaluation
|
|
//
|
|
|
|
class IPropertyRule
|
|
{
|
|
public:
|
|
virtual bool ApplyRuleUint64( uint64 uiBase, uint64 &uiNew ) = 0;
|
|
virtual bool ApplyRuleFloat( float flBase, float &flNew ) = 0;
|
|
};
|
|
|
|
IPropertyRule * GetRuleByName( char const *szRuleName );
|
|
|
|
|
|
|
|
#endif
|