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