651 lines
21 KiB
C++
651 lines
21 KiB
C++
|
|
#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 );
|
|||
|
|
}
|
|||
|
|
}
|