Files
2026-06-01 12:46:52 +02:00

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; }