Files
Sun1602/Client/GameClient/SkillEventEffectInfo.cpp
T
2022-10-26 12:25:11 +08:00

170 lines
6.6 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "SkillEventEffectInfo.h"
cSkillEventEffectInfoData::cSkillEventEffectInfoData()
: m_EventType( EVENT_TYPE_MAX )
, m_PositionType( POSITION_TYPE_MAX )
, m_ScaleType( SCALE_TYPE_NONE )
, m_PositionData( eSKILLEFFECT_POS_NONE, 0 )
, m_StaticRotate(FALSE)
, m_CameraViberationType(Camera::VIBE_TYPE_NONE)
, m_CameraViberationPower(0.0f)
, m_ActiveDelayTime(0)
{
}
cSkillEventEffectInfo::cSkillEventEffectInfo()
{
}
cSkillEventEffectInfoData* cSkillEventEffectInfo::AddData( const std::string& EventType, const std::string& PositionType, const std::string& ScaleType, LPCTSTR EventCode )
{
cSkillEventEffectInfoData* data = new cSkillEventEffectInfoData();
if( EventType == "START" )
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_START );
else if( EventType == "END" )
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_END );
else if( EventType == "BUFF" )
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_BUFF );
else if( EventType == "DAMAGE" )
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_DAMAGE );
else if( EventType == "ANIMATION_EVENT" )
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_ANIMATION_EVENT );
else if( EventType == "FIELD" )
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_FIELD );
else if( EventType.find( "EVENT_" ) == 0 )
{
std::string temp = EventType.c_str() + strlen("EVENT_");
int number = atoi(temp.c_str());
data->SetEventType( cSkillEventEffectInfoData::EVENT_TYPE_ANIMATION_EVENT );
data->SetHitEventNumber( number );
}
if( PositionType == "TARGET_ARROW" )
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_TARGET_ARROW );
else if( PositionType == "TARGET_POSITION" )
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_TARGET_POSITION );
else if( PositionType == "USER_POSITION" )
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_USER_POSITION );
else if( PositionType == "USER_ARROW" )
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_USER_ARROW_POSITION );
else if( PositionType == "POS_HEAD" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_HEAD, 0 ) );
}
else if( PositionType == "POS_BODY" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_BODY, 0 ) );
}
else if( PositionType == "POS_FOOT" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_FOOT, 0 ) );
}
else if( PositionType == "POS_RHAND" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_RHAND, 0 ) );
}
else if( PositionType == "POS_LHAND" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_LHAND, 0 ) );
}
else if( PositionType == "POS_WEAPON" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_WEAPON, 0 ) );
}
else if( PositionType == "POS_LRHAND" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_HEAD, 0 ) );
}
else if( PositionType == "POS_BUST" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_BUST, 0 ) );
}
else if( PositionType == "POS_BOTTOM" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_BOTTOM, 0 ) );
}
else if( PositionType == "POS_LAND" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_ONLY_POS, 0 ) );
}
else if( PositionType == "POS_TARGET" )
{
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_TARGET_POS, 0 ) );
}
else if( PositionType.find( "POS_BONE_" ) == 0 )
{
std::string temp = PositionType.c_str() + strlen("POS_BONE_");
int number = atoi(temp.c_str());
data->SetPositionType( cSkillEventEffectInfoData::POSITION_TYPE_CUSTOM );
data->SetPositionData( cSkillPositionData( eSKILLEFFECT_POS_BONE_INDEX, number ) );
}
if( ScaleType == "USER" )
data->SetScaleType( cSkillEventEffectInfoData::SCALE_TYPE_USER );
else if( ScaleType == "TARGET" )
data->SetScaleType( cSkillEventEffectInfoData::SCALE_TYPE_TARGET );
if( PositionType.find( "CAMERA_V_" ) == 0 )
{
std::string temp = PositionType.c_str() + strlen("CAMERA_V_");
int number = atoi(temp.c_str());
data->SetCameraViberationType( Camera::VIBE_TYPE_VERTICAL );
data->SetCameraViberationPower( (float)(number) * 0.01f );
data->SetActionType( cSkillEventEffectInfoData::ACTION_TYPE_SHAKE_CAMERA );
}
else if( PositionType.find( "CAMERA_H_" ) == 0 )
{
std::string temp = PositionType.c_str() + strlen("CAMERA_H_");
int number = atoi(temp.c_str());
data->SetCameraViberationType( Camera::VIBE_TYPE_HORISONTAL );
data->SetCameraViberationPower( (float)(number) * 0.01f );
data->SetActionType( cSkillEventEffectInfoData::ACTION_TYPE_SHAKE_CAMERA );
}
else if( PositionType.find( "CAMERA_A_" ) == 0 )
{
std::string temp = PositionType.c_str() + strlen("CAMERA_A_");
int number = atoi(temp.c_str());
data->SetCameraViberationType( Camera::VIBE_TYPE_ALL );
data->SetCameraViberationPower( (float)(number) * 0.01f );
data->SetActionType( cSkillEventEffectInfoData::ACTION_TYPE_SHAKE_CAMERA );
}
if( EventCode != "NULL")
data->SetActionType( cSkillEventEffectInfoData::ACTION_TYPE_CREATEEFFECT );
data->SetEventCode( StrToWzID(EventCode) );
m_DataArray.push_back( data );
return data;
}
cSkillEventEffectInfo::~cSkillEventEffectInfo()
{
//¸Þ¸ð¸®¸¯ Á¤¸®.
for (int i = 0 ; i < (int)m_DataArray.size() ; ++i)
{
delete m_DataArray[i];
m_DataArray[i] = NULL;
}
m_DataArray.clear();
}