170 lines
7.3 KiB
C++
170 lines
7.3 KiB
C++
#include "stdafx.h"
|
|
#include "Effectidmng.h"
|
|
|
|
#include "SGameMessage.h"
|
|
#include "SkillBaseFile.h"
|
|
#include "SAction.h"
|
|
|
|
#include "SDebug_Util.h"
|
|
|
|
const int SKILL_START_ID = 101;
|
|
|
|
CEffectIDMng& CEffectIDMng::GetInstance()
|
|
{
|
|
static CEffectIDMng EffMng;
|
|
return EffMng;
|
|
}
|
|
|
|
CEffectIDMng::CEffectIDMng(void)
|
|
{
|
|
ZeroMemory( &GetAction, sizeof( GetAction ) );
|
|
ZeroMemory( &GetActionBow, sizeof( GetActionBow ) );
|
|
|
|
Init();
|
|
}
|
|
|
|
CEffectIDMng::~CEffectIDMng(void)
|
|
{
|
|
}
|
|
|
|
void CEffectIDMng::Init()
|
|
{
|
|
//샘플 스킬용
|
|
/* GetAction[101 - SKILL_START_ID] = &CEffectIDMng::ActionAttkWeapon;
|
|
GetAction[111 - SKILL_START_ID] = &CEffectIDMng::ActionAttkShield;
|
|
GetAction[121 - SKILL_START_ID] = &CEffectIDMng::ActionMultiAttkWeapon;
|
|
GetAction[122 - SKILL_START_ID] = &CEffectIDMng::ActionAboveTwoAttk;
|
|
GetAction[123 - SKILL_START_ID] = &CEffectIDMng::ActionMultiAttkWeapon;*/
|
|
GetAction[151 - SKILL_START_ID] = &CEffectIDMng::ActionAttkAbsorber;
|
|
GetAction[171 - SKILL_START_ID] = &CEffectIDMng::ActionChargeAttk;
|
|
GetAction[201 - SKILL_START_ID] = &CEffectIDMng::ActionShootBow;
|
|
GetAction[212 - SKILL_START_ID] = &CEffectIDMng::ActionShootStrongBow;
|
|
GetAction[251 - SKILL_START_ID] = &CEffectIDMng::ActionShootAbsorberBow;
|
|
GetAction[301 - SKILL_START_ID] = &CEffectIDMng::ActionSelfSkill;
|
|
GetAction[401 - SKILL_START_ID] = &CEffectIDMng::ActionThrowSkill;
|
|
GetAction[402 - SKILL_START_ID] = &CEffectIDMng::ActionThrowAbsorberSkill;
|
|
GetAction[403 - SKILL_START_ID] = &CEffectIDMng::ActionCreatureAbsorberSkill;
|
|
GetAction[404 - SKILL_START_ID] = &CEffectIDMng::ActionThrowSkillDelay;
|
|
GetAction[411 - SKILL_START_ID] = &CEffectIDMng::ActionThrowWideAreaSkill;
|
|
GetAction[412 - SKILL_START_ID] = &CEffectIDMng::ActionThrowWideAreaMultiSkill;
|
|
GetAction[501 - SKILL_START_ID] = &CEffectIDMng::ActionFireMissle;
|
|
GetAction[502 - SKILL_START_ID] = &CEffectIDMng::ActionFireMultiMissle;
|
|
GetAction[503 - SKILL_START_ID] = &CEffectIDMng::ActionFirePenetratedMissle;
|
|
GetAction[504 - SKILL_START_ID] = &CEffectIDMng::ActionFireChainMissile; /// 2011.03.23 - prodongi
|
|
GetAction[601 - SKILL_START_ID] = &CEffectIDMng::ActionLastingWideAreaSkill;
|
|
GetAction[604 - SKILL_START_ID] = &CEffectIDMng::ActionLastingWideAreaSkill;
|
|
GetAction[701 - SKILL_START_ID] = &CEffectIDMng::ActionLastingWideAreaSkill;
|
|
GetAction[901 - SKILL_START_ID] = &CEffectIDMng::ActionPfxTest1;
|
|
GetAction[1001 - SKILL_START_ID] = &CEffectIDMng::ActionWorkingSkill;
|
|
|
|
GetActionBow[0] = &CEffectIDMng::ActionBow;
|
|
}
|
|
|
|
//해당 스킬을 호출한다
|
|
SGameAction* CEffectIDMng::GetActionSkill( _SKILL_FX* pSkillFx )
|
|
{
|
|
if( pSkillFx == NULL ) return NULL;
|
|
|
|
if( pSkillFx->nStage_Type_Id >= 0 && pSkillFx->nStage_Type_Id - SKILL_START_ID >= 0 )
|
|
{
|
|
if( GetAction[pSkillFx->nStage_Type_Id - SKILL_START_ID] != NULL )
|
|
return (this->*GetAction[pSkillFx->nStage_Type_Id - SKILL_START_ID])();
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
//해당 스킬을 호출한다
|
|
SGameAction* CEffectIDMng::GetActionBowSKill( SMSG_ATTACK* msg )
|
|
{
|
|
if( GetActionBow[msg->nTypeBow] != NULL )
|
|
return (this->*GetActionBow[msg->nTypeBow])();
|
|
return NULL;
|
|
}
|
|
|
|
/*
|
|
SGameAction* CEffectIDMng::ActionTarget( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionTarget = new SActionTarget( msg, nResultIndex );
|
|
return pActionTarget;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionTargetExplosion( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionTargetExplosion = new SActionTargetExplosion( msg, nResultIndex );
|
|
return pActionTargetExplosion;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionStraight( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionStraight = new SActionStraight( msg, nResultIndex );
|
|
return pActionStraight;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionLeech( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionLeech = new SActionLeech( msg, nResultIndex );
|
|
return pActionLeech;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionMagicArrow( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionMagicArrow = new SActionMagicArrow( msg, nResultIndex );
|
|
return pActionMagicArrow;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionParabola( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionParabola = new SActionParabola( msg, nResultIndex );
|
|
return pActionParabola;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionFall( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionFall = new SActionFall( msg, nResultIndex );
|
|
return pActionFall;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionMissile( SMSG_SKILL_EVENT* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionMissile = new SActionMissile( msg, nResultIndex );
|
|
return pActionMissile;
|
|
}
|
|
|
|
SGameAction* CEffectIDMng::ActionBow( SMSG_ATTACK* msg, int nResultIndex )
|
|
{
|
|
SGameAction* pActionBow = new SActionBow( msg, nResultIndex );
|
|
return pActionBow;
|
|
}
|
|
*/
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//////////////NEW
|
|
//////////////
|
|
|
|
SGameAction* CEffectIDMng::ActionBow() { return new SActionShootBow; }
|
|
SGameAction* CEffectIDMng::ActionRecall() { return new SActionRecall; }
|
|
SGameAction* CEffectIDMng::ActionReverseRecall() { return new SActionReverseRecall; }
|
|
SGameAction* CEffectIDMng::ActionAttkWeapon() { return new SActionAttkWeapon; }
|
|
SGameAction* CEffectIDMng::ActionAttkShield() { return new SActionAttkShield; }
|
|
SGameAction* CEffectIDMng::ActionMultiAttkWeapon() { return new SActionMultiAttkWeapon; }
|
|
SGameAction* CEffectIDMng::ActionAboveTwoAttk() { return new SActionAboveTwoAttk; }
|
|
SGameAction* CEffectIDMng::ActionAttkAbsorber() { return new SActionAttkAbsorber; }
|
|
SGameAction* CEffectIDMng::ActionChargeAttk() { return new SActionChargeAttk; }
|
|
SGameAction* CEffectIDMng::ActionShootBow() { return new SActionShootBow; }
|
|
SGameAction* CEffectIDMng::ActionShootStrongBow() { return new SActionShootStrongBow; }
|
|
SGameAction* CEffectIDMng::ActionShootAbsorberBow() { return new SActionShootAbsorberBow; }
|
|
SGameAction* CEffectIDMng::ActionSelfSkill() { return new SActionSelfSkill; }
|
|
SGameAction* CEffectIDMng::ActionThrowSkill() { return new SActionThrowSkill; }
|
|
SGameAction* CEffectIDMng::ActionThrowSkillDelay() { return new SActionThrowSkillDelay; }
|
|
SGameAction* CEffectIDMng::ActionThrowAbsorberSkill() { return new SActionThrowAbsorberSkill; }
|
|
SGameAction* CEffectIDMng::ActionCreatureAbsorberSkill(){ return new SActionCreatureAbsorberSkill;}
|
|
SGameAction* CEffectIDMng::ActionThrowWideAreaSkill() { return new SActionThrowWideAreaSkill; }
|
|
SGameAction* CEffectIDMng::ActionThrowWideAreaMultiSkill(){ return new SActionThrowWideAreaMultiSkill;}
|
|
SGameAction* CEffectIDMng::ActionFireMissle() { return new SActionFireMissle; }
|
|
SGameAction* CEffectIDMng::ActionFireMultiMissle() { return new SActionFireMultiMissle; }
|
|
SGameAction* CEffectIDMng::ActionFirePenetratedMissle() { return new SActionFirePenetratedMissle; }
|
|
SGameAction* CEffectIDMng::ActionFireChainMissile() { return new SActionFireChainMissile; } /// 2011.03.23 - prodongi
|
|
SGameAction* CEffectIDMng::ActionLastingWideAreaSkill() { return new SActionLastingWideAreaSkill; }
|
|
SGameAction* CEffectIDMng::ActionPfxTest1() { return new SActionPfxTest1; }
|
|
SGameAction* CEffectIDMng::ActionWorkingSkill() { return new SActionWorkingSkill; } |