2024-12-21 10:04:04 +08:00
# include "StdAfx.h"
# include "skill_data_test.h"
# include "EtActionBase.h"
# include "EtActionSignal.h"
# include "SignalHeader.h"
const int MAX_STATE_EFEFCT_COUNT = 5 ;
const int MAX_PROCESSOR = 5 ;
DNTableFileFormat * skill_data_test : : s_pSkillTable = NULL ;
DNTableFileFormat * skill_data_test : : s_pSkillLevelTable = NULL ;
DNTableFileFormat * skill_data_test : : s_pItemTable = NULL ;
set < int > skill_data_test : : s_setSkillBookItemID ;
CEtActionBase * skill_data_test : : s_pWarrior = NULL ;
CEtActionBase * skill_data_test : : s_pArcher = NULL ;
CEtActionBase * skill_data_test : : s_pCleric = NULL ;
CEtActionBase * skill_data_test : : s_pSoceress = NULL ;
# define SKILL_T skill_data_test::s_pSkillTable
# define SKILL_LEVEL_T skill_data_test::s_pSkillLevelTable
skill_data_test : : skill_data_test ( void )
{
}
skill_data_test : : ~ skill_data_test ( void )
{
}
void skill_data_test : : SetUpTestCase ( void )
{
s_pSkillTable = LoadExtFile ( " SkillTable.dnt " ) ;
s_pSkillLevelTable = LoadExtFile ( " SkillLevelTable.dnt " , " _SkillIndex " ) ;
s_pItemTable = LoadExtFile ( " ItemTable.dnt " ) ;
for ( int i = 0 ; i < s_pItemTable - > GetItemCount ( ) ; + + i )
{
int iItemID = s_pItemTable - > GetItemID ( i ) ;
// <20> <> ų<EFBFBD> <C5B3> Ÿ<> <C5B8> <EFBFBD> <EFBFBD> 10
if ( 10 = = s_pItemTable - > GetFieldFromLablePtr ( iItemID , " _Type " ) - > GetInteger ( ) )
{
s_setSkillBookItemID . insert ( iItemID ) ;
}
}
s_pWarrior = new CEtActionBase ;
s_pWarrior - > LoadAction ( ( g_strResourcePathA + " \\ Resource \\ Char \\ Player \\ Warrior \\ Warrior.act " ) . c_str ( ) ) ;
s_pArcher = new CEtActionBase ;
s_pArcher - > LoadAction ( ( g_strResourcePathA + " \\ Resource \\ Char \\ Player \\ Archer \\ Archer.act " ) . c_str ( ) ) ;
s_pCleric = new CEtActionBase ;
s_pCleric - > LoadAction ( ( g_strResourcePathA + " \\ Resource \\ Char \\ Player \\ Cleric \\ Cleric.act " ) . c_str ( ) ) ;
s_pSoceress = new CEtActionBase ;
s_pSoceress - > LoadAction ( ( g_strResourcePathA + " \\ Resource \\ Char \\ Player \\ Soceress \\ Soceress.act " ) . c_str ( ) ) ;
}
void skill_data_test : : TearDownTestCase ( void )
{
SAFE_DELETE ( s_pSkillTable ) ;
SAFE_DELETE ( s_pSkillLevelTable ) ;
// <20> <> <EFBFBD> α <CEB1> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ActionCoreMng <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> Ф<EFBFBD>
// <20> ϴ<EFBFBD> delete <20> <> <EFBFBD> <EFBFBD> <20> ʰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ..
//SAFE_DELETE( s_pWarrior );
//SAFE_DELETE( s_pArcher );
//SAFE_DELETE( s_pCleric );
//SAFE_DELETE( s_pSoceress );
}
void skill_data_test : : SetUp ( void )
{
//m_pTestActionLoad = shared_ptr<CEtActionBase>(new CEtActionBase);
//m_pTestActionLoad->LoadAction( "R:/GameRes/Resource/Char/Player/Cleric/Cleric.act" );
}
void skill_data_test : : TearDown ( void )
{
}
TEST_F ( skill_data_test , PASSIVESKILL_MUST_NOT_HAVE_PLAYANI_PROCESSOR )
{
int iNumItemCount = SKILL_T - > GetItemCount ( ) ;
for ( int iSkill = 0 ; iSkill < iNumItemCount ; + + iSkill )
{
int iSkillTableID = SKILL_T - > GetItemID ( iSkill ) ;
int iSkillType = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , " _SkillType " ) - > GetInteger ( ) ;
TCHAR atcBuf [ 512 ] ;
char acLabel [ 64 ] ;
// 1<> <31> <20> нú<D0BD> <20> <> ų<EFBFBD> <C5B3>
if ( 1 = = iSkillType )
{
int iProcessor = - 1 ;
for ( int i = 0 ; i < MAX_PROCESSOR ; + + i )
{
sprintf_s ( acLabel , " _Processor%d " , i + 1 ) ;
iProcessor = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , acLabel ) - > GetInteger ( ) ;
// 1 <20> <> <EFBFBD> <EFBFBD> PlayAni
ZeroMemory ( atcBuf , sizeof ( atcBuf ) ) ;
_stprintf_s ( atcBuf , _T ( " {TableName:SkillTable, Index:%d, Note:<3A> нú<D0BD> <20> <> ų<EFBFBD> <C5B3> <20> <EFBFBD> <D7BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> InputHasPassiveSkill <20> <> ó<> <C3B3> <EFBFBD> ˴ ϴ<CBB4> ...} " ) , iSkillTableID ) ;
SCOPED_TRACE ( atcBuf ) ;
EXPECT_NE ( 1 , iProcessor ) ;
}
}
}
}
void ValidateProcessArgument ( int iLevelTableID , int iArgument )
{
char acBuf [ 64 ] ;
sprintf_s ( acBuf , " _ProcessParam%d " , iArgument + 1 ) ;
const char * pArgument = SKILL_LEVEL_T - > GetFieldFromLablePtr ( iLevelTableID , acBuf ) - > GetString ( ) ;
//EXPECT_STRNE( "0", pArgument );
EXPECT_STRNE ( " " , pArgument ) ;
}
// PlayAni <20> <> <EFBFBD> <EFBFBD> Ÿ<> Կ<EFBFBD> <20> <> <EFBFBD> ڰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
TEST_F ( skill_data_test , PROCESSOR_ARGUMENT_VERIFY )
{
const char * apProcessTypeName [ ] = { " PlayAni " , " TimePlay " , " ChangePrj " , " DivideSEArgByTargetNum " , " ImpactBlow " , " Aura " , " ChangeAction " , " RangeStateEffect " } ;
int iNumItemCount = SKILL_T - > GetItemCount ( ) ;
for ( int iSkill = 0 ; iSkill < iNumItemCount ; + + iSkill )
{
int iSkillTableID = SKILL_T - > GetItemID ( iSkill ) ;
// PlayAni <20> <> <EFBFBD> <EFBFBD> Ÿ<> <C5B8> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
int aiUseProcessorType [ 5 ] ;
ZeroMemory ( aiUseProcessorType , sizeof ( aiUseProcessorType ) ) ;
for ( int iProcessor = 0 ; iProcessor < MAX_PROCESSOR ; + + iProcessor )
{
char acBuf [ 64 ] ;
sprintf_s ( acBuf , " _Processor%d " , iProcessor + 1 ) ;
int iUseType = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , acBuf ) - > GetInteger ( ) ;
aiUseProcessorType [ iProcessor ] = iUseType ;
}
vector < int > vlSkillLevelList ;
if ( SKILL_LEVEL_T - > GetItemIDListFromField ( " _SkillIndex " , iSkillTableID , vlSkillLevelList ) = = 0 )
FAIL ( ) ;
int iNumSkillLevel = ( int ) vlSkillLevelList . size ( ) ;
for ( int iLevel = 0 ; iLevel < iNumSkillLevel ; + + iLevel )
{
bool bChangeActionStr = false ; // <20> <EFBFBD> <20> <> <EFBFBD> ڿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ÿ<EFBFBD> <C5B8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڱ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȵ<EFBFBD> .
int iNowProcessor = 0 ;
int iSkillLevelID = vlSkillLevelList . at ( iLevel ) ;
for ( int iArgument = 0 ; iArgument < 10 ; )
{
// <20> <> <EFBFBD> <EFBFBD> Ÿ<EFBFBD> <C5B8> <20> <> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 5<> <35> <EFBFBD> <EFBFBD> .
if ( MAX_PROCESSOR = = iNowProcessor )
break ;
// NONE <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> õǾ<C3B5> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <20> н<EFBFBD>
if ( 0 = = aiUseProcessorType [ iNowProcessor ] )
{
+ + iNowProcessor ;
continue ;
}
TCHAR atcTraceBuf [ 1024 ] ;
if ( bChangeActionStr )
{
_stprintf_s ( atcTraceBuf , _T ( " {TableName:SkillTable, Index:%d, Level:%d, Note:ChangeActionStr <20> <> <EFBFBD> <EFBFBD> Ÿ<> <C5B8> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ٸ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ÿ<EFBFBD> <C5B8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ȵ˴ ϴ<CBB4> .} " ) , iSkillTableID , iLevel + 1 ) ;
EXPECT_TRUE ( bChangeActionStr ) ;
}
ZeroMemory ( atcTraceBuf , sizeof ( atcTraceBuf ) ) ;
const char * pNowProcessorTypeName = NULL ;
int iNumArgument = 0 ;
switch ( aiUseProcessorType [ iNowProcessor ] )
{
// playani <20> <> <EFBFBD> ڴ<EFBFBD> 1<> <31>
case 1 :
iNumArgument = 1 ;
pNowProcessorTypeName = apProcessTypeName [ 0 ] ;
break ;
// timeplay <20> <> <EFBFBD> ڴ<EFBFBD> 5<> <35>
case 2 :
iNumArgument = 5 ;
pNowProcessorTypeName = apProcessTypeName [ 1 ] ;
break ;
// changeproj <20> <> <EFBFBD> ڴ<EFBFBD> 2<> <32>
case 3 :
iNumArgument = 2 ;
pNowProcessorTypeName = apProcessTypeName [ 2 ] ;
break ;
// divideseargbytargetnum <20> <> <EFBFBD> ڴ<EFBFBD> 1<> <31>
case 4 :
iNumArgument = 1 ;
pNowProcessorTypeName = apProcessTypeName [ 3 ] ;
break ;
// impactblow <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
case 5 :
iNumArgument = 0 ;
pNowProcessorTypeName = apProcessTypeName [ 4 ] ;
break ;
// aura <20> <> <EFBFBD> ڴ<EFBFBD> 1<> <31>
case 6 :
iNumArgument = 1 ;
pNowProcessorTypeName = apProcessTypeName [ 5 ] ;
break ;
// change action <20> <> <EFBFBD> ڴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
// <20> <> <EFBFBD> ڰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̱<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ڿ<EFBFBD> <20> ٸ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ÿ<> <C5B8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȵȴ<C8B5> .
case 7 :
bChangeActionStr = true ;
//iNumArgument = 7;
//pNowProcessorTypeName = apProcessTypeName[ 6 ];
break ;
// RangeStateEffect <20> <> <EFBFBD> ڴ<EFBFBD> 4<> <34>
case 8 :
iNumArgument = 4 ;
pNowProcessorTypeName = apProcessTypeName [ 7 ] ;
break ;
default :
break ;
}
TCHAR atcProcessorTypeName [ 256 ] ;
MultiByteToWideChar ( CP_ACP , 0 , pNowProcessorTypeName , - 1 , atcProcessorTypeName , 256 ) ;
for ( int i = 0 ; i < iNumArgument ; + + i )
{
_stprintf_s ( atcTraceBuf , _T ( " {TableName:SkillTable, Index:%d, Level:%d, Note:<3A> <> <EFBFBD> <EFBFBD> Ÿ<EFBFBD> <C5B8> (%s) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ε<EFBFBD> <CEB5> <EFBFBD> (%d) <20> <> <EFBFBD> ڰ<EFBFBD> <DAB0> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> .} " ) , iSkillTableID , iLevel + 1 , atcProcessorTypeName , iArgument + 1 ) ;
SCOPED_TRACE ( atcTraceBuf ) ;
ValidateProcessArgument ( iSkillLevelID , iArgument ) ;
+ + iArgument ;
}
+ + iNowProcessor ;
}
}
}
}
void ValidateSemiColonDivide ( const char * pArgumentString , int iNumArgument )
{
int iOffset = 0 ;
int iSemiColonIndex = 0 ;
string strArgument ( pArgumentString ) ;
for ( int i = 0 ; i < iNumArgument ; + + i )
{
iOffset = iSemiColonIndex + 1 ;
iSemiColonIndex = ( int ) strArgument . find_first_of ( ' ; ' , iOffset ) ;
bool bInvalid = false ;
if ( i ! = iNumArgument - 1 )
bInvalid = ( string : : npos = = iSemiColonIndex ) ; // <20> ߰<EFBFBD> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȿ<EFBFBD> ؾ<EFBFBD> <D8BE> ϰ<EFBFBD> ,
else
bInvalid = ( strArgument . at ( strArgument . length ( ) - 1 ) = = ' ; ' ) ; // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> ; <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȵȴ<C8B5> .
EXPECT_FALSE ( bInvalid ) ;
if ( bInvalid )
break ;
}
}
// <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ڰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ..
TEST_F ( skill_data_test , STATE_EFFECT_ARGUMENT_VERIFY )
{
int iNumItemCount = SKILL_T - > GetItemCount ( ) ;
for ( int iSkill = 0 ; iSkill < iNumItemCount ; + + iSkill )
{
int iSkillTableID = SKILL_T - > GetItemID ( iSkill ) ;
// <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ... <20> ִ<EFBFBD> 5<> <35>
bool abUseStateEffect [ MAX_STATE_EFEFCT_COUNT ] ;
ZeroMemory ( abUseStateEffect , sizeof ( abUseStateEffect ) ) ;
for ( int iStateEffect = 0 ; iStateEffect < MAX_STATE_EFEFCT_COUNT ; + + iStateEffect )
{
char acBuf [ 64 ] ;
sprintf_s ( acBuf , " _EffectClass%d " , iStateEffect + 1 ) ;
if ( SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , acBuf ) - > GetInteger ( ) ! = 0 )
abUseStateEffect [ iStateEffect ] = true ;
}
vector < int > vlSkillLevelList ;
if ( SKILL_LEVEL_T - > GetItemIDListFromField ( " _SkillIndex " , iSkillTableID , vlSkillLevelList ) = = 0 )
FAIL ( ) ;
int iNumSkillLevel = ( int ) vlSkillLevelList . size ( ) ;
for ( int iLevel = 0 ; iLevel < iNumSkillLevel ; + + iLevel )
{
int iSkillLevelID = vlSkillLevelList . at ( iLevel ) ;
for ( int iStateEffect = 0 ; iStateEffect < 5 ; + + iStateEffect )
{
if ( abUseStateEffect [ iStateEffect ] )
{
char acBuf [ 64 ] ;
sprintf_s ( acBuf , " _EffectClass%d " , iStateEffect + 1 ) ;
int iStateEffectIndex = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , acBuf ) - > GetInteger ( ) ;
sprintf_s ( acBuf , " _EffectClassValue%d " , iStateEffect + 1 ) ;
const char * pArgument = SKILL_LEVEL_T - > GetFieldFromLablePtr ( iSkillLevelID , acBuf ) - > GetString ( ) ;
TCHAR atcBuf [ 256 ] = { 0 } ;
// <20> <> <EFBFBD> <EFBFBD> <20> ݷ<EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ´ <EFBFBD> <C2B4> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> Ѵ <EFBFBD> .
switch ( iStateEffectIndex )
{
// <20> <> <EFBFBD> <EFBFBD> (41) - 2<> <32>
case 41 :
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillLevelTable, Index:%d, Level:%d, Note:<3A> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> ڰ<EFBFBD> <20> ߸<EFBFBD> <DFB8> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> ϴ<EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> (;) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> Ȯ<EFBFBD> <C8AE> (0.0~1.0);<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƚ<EFBFBD> <C8BD> ) <20> <> <20> ´ <EFBFBD> <C2B4> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> <EFBFBD> <EFBFBD> ֽʽ ÿ<CABD> .} " ) , iSkillTableID , iLevel + 1 ) ;
SCOPED_TRACE ( atcBuf ) ;
ValidateSemiColonDivide ( pArgument , 2 ) ;
}
break ;
// ü<> ΰ<EFBFBD> <CEB0> <EFBFBD> (60) - 3<> <33>
case 60 :
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillLevelTable, Index:%d, Level:%d, Note:ü<> ΰ<EFBFBD> <CEB0> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> ڰ<EFBFBD> <20> ߸<EFBFBD> <DFB8> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> ϴ<EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> (;) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> ;<3B> ִ<EFBFBD> <D6B4> <EFBFBD> Ʈī<C6AE> <C4AB> Ʈ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )<29> <> <20> ´ <EFBFBD> <C2B4> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> <EFBFBD> <EFBFBD> ֽʽ ÿ<CABD> .} " ) , iSkillTableID , iLevel + 1 ) ;
SCOPED_TRACE ( atcBuf ) ;
ValidateSemiColonDivide ( pArgument , 3 ) ;
}
break ;
// <20> <> <EFBFBD> ̹<EFBFBD> <20> <> <EFBFBD> <EFBFBD> (68) - 2<> <32>
case 68 :
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillLevelTable, Index:%d, Level:%d, Note:<3A> <> <EFBFBD> ̹<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> ڰ<EFBFBD> <20> ߸<EFBFBD> <DFB8> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> ϴ<EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> (;) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> Ȯ<EFBFBD> <C8AE> (0.0~1.0);<3B> Ҹ<EFBFBD> MP <20> <> <EFBFBD> Һ<EFBFBD> <D2BA> <EFBFBD> (0.0-1.0)) <20> <> <20> ´ <EFBFBD> <C2B4> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> <EFBFBD> <EFBFBD> ֽʽ ÿ<CABD> .} " ) , iSkillTableID , iLevel + 1 ) ;
SCOPED_TRACE ( atcBuf ) ;
ValidateSemiColonDivide ( pArgument , 2 ) ;
}
break ;
// <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> 鿪(77) - 2<> <32>
case 77 :
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillLevelTable, Index:%d, Level:%d, Note:<3A> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> 鿪 <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> ڰ<EFBFBD> <20> ߸<EFBFBD> <DFB8> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> ϴ<EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> (;) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> 鿪<EFBFBD> <E9BFAA> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ε<EFBFBD> <CEB5> <EFBFBD> ;<3B> 鿪Ȯ<E9BFAA> <C8AE> (0.0~1.0) <20> <> <20> ´ <EFBFBD> <C2B4> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> <EFBFBD> <EFBFBD> ֽʽ ÿ<CABD> .) " ) , iSkillTableID , iLevel + 1 ) ;
SCOPED_TRACE ( atcBuf ) ;
ValidateSemiColonDivide ( pArgument , 2 ) ;
}
break ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> (136) - 2<> <32>
case 136 :
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillLevelTable, Index:%d, Level:%d, Note:<3A> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> ڰ<EFBFBD> <20> ߸<EFBFBD> <DFB8> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> ϴ<EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ݷ<EFBFBD> (;) <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (0.0~1.0);<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ݰ<EFBFBD> )<29> <> <20> ´ <EFBFBD> <C2B4> <EFBFBD> Ȯ<> <C8AE> <EFBFBD> <EFBFBD> <EFBFBD> ֽʽ ÿ<CABD> .) " ) , iSkillTableID , iLevel + 1 ) ;
SCOPED_TRACE ( atcBuf ) ;
ValidateSemiColonDivide ( pArgument , 2 ) ;
}
break ;
default :
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillLevelTable, Index:%d, Level:%d, Note:<3A> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> ڰ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> } " ) , iSkillTableID , iLevel + 1 ) ;
SCOPED_TRACE ( atcBuf ) ;
//EXPECT_STRNE( "0", pArgument );
EXPECT_STRNE ( " " , pArgument ) ;
}
break ;
}
}
}
}
}
}
void ValidateSelfApplySESignal ( CEtActionBase * pActor , const vector < int > & vlSkills )
{
int iNumSkill = ( int ) vlSkills . size ( ) ;
for ( int iSkill = 0 ; iSkill < iNumSkill ; + + iSkill )
{
int iSkillTableID = vlSkills . at ( iSkill ) ;
// <20> <> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> .
deque < int > dqSelfApplyStateEffect ;
// <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ܾ<EFBFBD> <DCBE> <EFBFBD> . <20> ִ<EFBFBD> 5<> <35>
bool abUseStateEffect [ MAX_STATE_EFEFCT_COUNT ] ;
ZeroMemory ( abUseStateEffect , sizeof ( abUseStateEffect ) ) ;
for ( int iStateEffect = 0 ; iStateEffect < MAX_STATE_EFEFCT_COUNT ; + + iStateEffect )
{
char StateEffectName [ 64 ] ;
char StateEffectTarget [ 64 ] ;
sprintf_s ( StateEffectName , " _EffectClass%d " , iStateEffect + 1 ) ;
sprintf_s ( StateEffectTarget , " _EffectClass%dApplyType " , iStateEffect + 1 ) ;
int iStateEffectIndex = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , StateEffectName ) - > GetInteger ( ) ;
if ( iStateEffectIndex ! = 0 )
{
//<2F> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (CDnSkill::StateEffectApplyType::ApplySelf or CDnSkill::StateEffectApplyType::ApplyAll)
if ( SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , StateEffectTarget ) - > GetInteger ( ) = = 0 | |
SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , StateEffectTarget ) - > GetInteger ( ) = = 2 )
{
abUseStateEffect [ iStateEffect ] = true ;
dqSelfApplyStateEffect . push_back ( iStateEffectIndex ) ;
}
}
}
int aiUseProcessorType [ 5 ] ;
ZeroMemory ( aiUseProcessorType , sizeof ( aiUseProcessorType ) ) ;
for ( int iProcessor = 0 ; iProcessor < MAX_PROCESSOR ; + + iProcessor )
{
char acBuf [ 64 ] ;
sprintf_s ( acBuf , " _Processor%d " , iProcessor + 1 ) ;
int iUseType = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , acBuf ) - > GetInteger ( ) ;
aiUseProcessorType [ iProcessor ] = iUseType ;
}
vector < int > vlSkillLevelList ;
if ( SKILL_LEVEL_T - > GetItemIDListFromField ( " _SkillIndex " , iSkillTableID , vlSkillLevelList ) = = 0 )
FAIL ( ) ;
int iNumSkillLevel = ( int ) vlSkillLevelList . size ( ) ;
if ( 0 = = iNumSkillLevel )
continue ;
for ( int iLevel = 0 ; iLevel < 1 ; + + iLevel ) // <20> ̰<EFBFBD> <20> <> ų <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϱ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
{
bool abUseStateEffectInLevel [ MAX_STATE_EFEFCT_COUNT ] ;
memcpy ( abUseStateEffectInLevel , abUseStateEffect , sizeof ( abUseStateEffect ) ) ;
int iNowProcessor = 0 ;
int iSkillLevelID = vlSkillLevelList . at ( iLevel ) ;
for ( int iArgument = 0 ; iArgument < 10 ; )
{
if ( MAX_STATE_EFEFCT_COUNT = = iNowProcessor )
break ;
if ( 0 = = aiUseProcessorType [ iNowProcessor ] )
{
+ + iNowProcessor ;
continue ;
}
int iNumArgument = 0 ;
switch ( aiUseProcessorType [ iNowProcessor ] )
{
// playani <20> <> <EFBFBD> ڴ<EFBFBD> 1<> <31>
case 1 :
{
iNumArgument + = 1 ;
char acBuf [ 128 ] ;
sprintf_s ( acBuf , " _ProcessParam%d " , iArgument + 1 ) ;
const char * pArgument = SKILL_LEVEL_T - > GetFieldFromLablePtr ( iSkillLevelID , acBuf ) - > GetString ( ) ;
CEtActionBase : : ActionElementStruct * pActionElement = pActor - > GetElement ( pArgument ) ;
//EXPECT_TRUE( NULL != pActionElement );
if ( NULL = = pActionElement )
break ;
TCHAR atcBuf [ 512 ] ;
int iApplyStateEffectSignalCount = 0 ;
bool bHasApplySelfStateSignal = false ;
int iNumSignal = ( int ) pActionElement - > pVecSignalList . size ( ) ;
for ( int iSignal = 0 ; iSignal < iNumSignal ; + + iSignal )
{
// <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> Ÿ<> ̹<EFBFBD> <20> ñ׳ <C3B1> <D7B3> <EFBFBD> <20> ϳ <EFBFBD> <CFB3> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ڸ<EFBFBD> <DAB8> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ǵ<EFBFBD> <20> <> <EFBFBD> ̹Ƿ<CCB9> <20> <> <EFBFBD> <EFBFBD> .
CEtActionSignal * pSignal = pActionElement - > pVecSignalList . at ( iSignal ) ;
if ( STE_ApplyStateEffect = = pSignal - > GetSignalIndex ( ) )
{
+ + iApplyStateEffectSignalCount ;
bHasApplySelfStateSignal = true ;
void * pData = pSignal - > GetData ( ) ;
ApplyStateEffectStruct * pSESignal = static_cast < ApplyStateEffectStruct * > ( pData ) ;
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillTable, Index:%d, SkillLevel:%d, <20> Է°<D4B7> :%d, Note:<3A> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ε<EFBFBD> <CEB5> <EFBFBD> <20> <> <EFBFBD> .} " ) , iSkillTableID , iLevel + 1 , pSESignal - > StateEffectIndex ) ;
SCOPED_TRACE ( atcBuf ) ;
EXPECT_LT ( pSESignal - > StateEffectIndex , MAX_STATE_EFEFCT_COUNT ) ;
}
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillTable, Index:%d, SkillLevel:%d, <20> Է°<D4B7> :%d, Note:<3A> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> Էµ<D4B7> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ū <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> .} " ) , iSkillTableID , iLevel + 1 , pSESignal - > StateEffectIndex ) ;
SCOPED_TRACE ( atcBuf ) ;
EXPECT_LT ( pSESignal - > StateEffectIndex , ( int ) dqSelfApplyStateEffect . size ( ) ) ;
}
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillTable, Index:%d, SkillLevel:%d, <20> Է°<D4B7> :%d, Note:<3A> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ε<EFBFBD> <CEB5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> .} " ) , iSkillTableID , iLevel + 1 , pSESignal - > StateEffectIndex ) ;
SCOPED_TRACE ( atcBuf ) ;
EXPECT_EQ ( true , abUseStateEffectInLevel [ pSESignal - > StateEffectIndex ] ) ;
}
if ( abUseStateEffectInLevel [ pSESignal - > StateEffectIndex ] )
abUseStateEffectInLevel [ pSESignal - > StateEffectIndex ] = false ;
}
}
if ( bHasApplySelfStateSignal )
{
_stprintf_s ( atcBuf , _T ( " {TableName:SkillTable, Index:%d, SkillLevel:%d, Note:<3A> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .} " ) , iSkillTableID , iLevel + 1 ) ;
//_stprintf_s( atcBuf,_T("[<5B> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> SkillID: %d, SkillLevel: %d] <20> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ."), iSkillTableID, iLevel+1 );
SCOPED_TRACE ( atcBuf ) ;
EXPECT_EQ ( iApplyStateEffectSignalCount , ( int ) dqSelfApplyStateEffect . size ( ) ) ;
}
}
break ;
// timeplay <20> <> <EFBFBD> ڴ<EFBFBD> 5<> <35>
case 2 :
iNumArgument + = 5 ;
break ;
// changeproj <20> <> <EFBFBD> ڴ<EFBFBD> 2<> <32>
case 3 :
iNumArgument + = 2 ;
break ;
// divideseargbytargetnum <20> <> <EFBFBD> ڴ<EFBFBD> 1<> <31>
case 4 :
iNumArgument + = 1 ;
break ;
// impactblow <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
case 5 :
iNumArgument + = 0 ;
break ;
// aura <20> <> <EFBFBD> ڴ<EFBFBD> 1<> <31>
case 6 :
iNumArgument + = 1 ;
break ;
// change action <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 7<> <37> <EFBFBD> <EFBFBD>
case 7 :
iNumArgument + = 7 ;
break ;
default :
break ;
}
+ + iNowProcessor ;
}
}
}
}
// <20> ڱ<EFBFBD> <20> ڽſ <DABD> <C5BF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> <EFBFBD> <D7BC> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> Ǿ<EFBFBD> <C7BE> ִ<EFBFBD> <D6B4> <EFBFBD> .
TEST_F ( skill_data_test , SELF_STATE_EFFECT_SIGNAL_VERIFY )
{
// <20> <> <20> ÷<EFBFBD> <C3B7> ̾<EFBFBD> ij<> <C4B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> Ȯ<> <C8AE> .
// <20> ش<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> PlayAni <20> <> <EFBFBD> <EFBFBD> Ÿ<> <C5B8> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> ų<EFBFBD> <C5B3> <EFBFBD> ߿<EFBFBD> ,
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ų <20> <> <EFBFBD> ̵<EFBFBD> 0~
// <20> <> <EFBFBD> Ĵ<EFBFBD> 1000~
// <20> Ҽ<EFBFBD> <D2BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 2000~
// Ŭ<> <C5AC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3000~
vector < int > vlPlayAniSkills [ 4 ] ;
int iNowPlayerTypeIndex = 0 ;
int iNumItemCount = SKILL_T - > GetItemCount ( ) ;
for ( int iSkill = 0 ; iSkill < iNumItemCount ; + + iSkill )
{
int iSkillTableID = SKILL_T - > GetItemID ( iSkill ) ;
iNowPlayerTypeIndex = iSkillTableID / 1000 ;
if ( 4 < = iNowPlayerTypeIndex )
break ;
// PlayAni <20> <> <EFBFBD> <EFBFBD> Ÿ<> <C5B8> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
int aiUseProcessorType [ 5 ] ;
ZeroMemory ( aiUseProcessorType , sizeof ( aiUseProcessorType ) ) ;
for ( int iProcessor = 0 ; iProcessor < MAX_PROCESSOR ; + + iProcessor )
{
char acBuf [ 64 ] ;
sprintf_s ( acBuf , " _Processor%d " , iProcessor + 1 ) ;
int iUseType = SKILL_T - > GetFieldFromLablePtr ( iSkillTableID , acBuf ) - > GetInteger ( ) ;
if ( 1 = = iUseType )
vlPlayAniSkills [ iNowPlayerTypeIndex ] . push_back ( iSkillTableID ) ;
}
}
ValidateSelfApplySESignal ( skill_data_test : : s_pWarrior , vlPlayAniSkills [ 0 ] ) ;
ValidateSelfApplySESignal ( skill_data_test : : s_pArcher , vlPlayAniSkills [ 1 ] ) ;
ValidateSelfApplySESignal ( skill_data_test : : s_pSoceress , vlPlayAniSkills [ 2 ] ) ;
ValidateSelfApplySESignal ( skill_data_test : : s_pCleric , vlPlayAniSkills [ 3 ] ) ;
}
TEST_F ( skill_data_test , SKILLBOOK_ITEM_ID_VERIFY )
{
// <20> <> <EFBFBD> <EFBFBD> <20> ÷<EFBFBD> <C3B7> ̾<EFBFBD> <20> <> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 鼭 <20> ߸<EFBFBD> <DFB8> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> itemid <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ֳ<EFBFBD> Ȯ<> <C8AE> <EFBFBD> Ѵ <EFBFBD> .
// <20> ÷<EFBFBD> <C3B7> ̾<EFBFBD> <20> <> ų ID <20> <> 4000 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̹Ƿ<CCB9> 4000 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
TCHAR atcBuf [ 512 ] ;
for ( int i = 0 ; i < SKILL_T - > GetItemCount ( ) ; + + i )
{
int iSkillID = SKILL_T - > GetItemID ( i ) ;
if ( iSkillID > 4000 )
break ;
int iSkillBookItemID = SKILL_T - > GetFieldFromLablePtr ( iSkillID , " _UnlockSkillBookItemID " ) - > GetInteger ( ) ;
if ( 0 ! = iSkillBookItemID )
{
set < int > : : iterator iter = skill_data_test : : s_setSkillBookItemID . find ( iSkillBookItemID ) ;
if ( skill_data_test : : s_setSkillBookItemID . end ( ) ! = iter )
skill_data_test : : s_setSkillBookItemID . erase ( iter ) ;
else
{
// <20> <> ¥<EFBFBD> <C2A5> <20> ش<EFBFBD> <20> <> ų<EFBFBD> <C5B3> Ǫ<> <C7AA> <20> <> ų <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ̺<EFBFBD> <CCBA> <EFBFBD> <20> ִٸ<D6B4>
// <20> <> ų <20> <> <EFBFBD> ̺<EFBFBD> <CCBA> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <20> <> <20> ̻<EFBFBD> <20> ߺ <EFBFBD> <DFBA> Ǿ<EFBFBD> <C7BE> ִٴ<D6B4> <20> ̾߱<CCBE> .
_stprintf_s ( atcBuf , _T ( " {TableName:SkillTable, Index:%d, Note:<3A> ش<EFBFBD> <20> <> ų<EFBFBD> <C5B3> Ǫ<> <C7AA> <20> <> ų<EFBFBD> <C5B3> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> .} " ) , iSkillID ) ;
SCOPED_TRACE ( atcBuf ) ;
EXPECT_TRUE ( false ) ;
}
}
}
for ( set < int > : : iterator iter = skill_data_test : : s_setSkillBookItemID . begin ( ) ;
iter ! = skill_data_test : : s_setSkillBookItemID . end ( ) ; + + iter )
{
_stprintf_s ( atcBuf , _T ( " {TableName:ItemTable, Index:%d, Note:<3A> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʴ<EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ID.} " ) , * iter ) ;
SCOPED_TRACE ( atcBuf ) ;
EXPECT_TRUE ( false ) ;
}
}