📄 skillobjectfactory.cpp
字号:
// SkillObjectFactory.cpp: implementation of the CSkillObjectFactory class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SkillObjectFactory.h"
#include "SkillInfo.h"
#include "SkillObject_Mine.h"
// terminator
#include "SkillObjectTerminator_Time.h"
// targetlist
#include "SkillObjectTargetList_Area.h"
#include "SkillObjectTargetList_Circle.h"
#include "SkillObjectTargetList_One.h"
// singleunit
#include "SkillObjectSingleUnit_Attack.h"
#include "SkillObjectSingleUnit_Heal.h"
#include "SkillObjectSingleUnit_Recharge.h"
// attachunit
#include "SkillObjectAttachUnit_MaxLife.h"
#include "SkillObjectAttachUnit_Defence.h"
#include "SkillObjectAttachUnit_Attack.h"
#include "SkillObjectAttachUnit_CounterAttack.h"
#include "SkillObjectAttachUnit_Immune.h"
#include "SkillObjectAttachUnit_MoveSpeed.h"
#include "SkillObjectAttachUnit_Dodge1.h"
#include "SkillObjectAttachUnit_Vampiric.h"
// FirstUnit
#include "SkillObjectFirstUnit.h"
#include "SkillObjectFirstUnit_Attack.h"
#include "SkillObjectFirstUnit_Recover.h"
// StateUnit
#include "SkillObjectStateUnit_TieUp.h"
#include "SkillObjectStateUnit_StatusAttach.h"
#include "SkillObjectStateUnit_DummyState.h"
#include "SkillObjectStateUnit_AmplifiedPower.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSkillObjectFactory::CSkillObjectFactory()
{
}
CSkillObjectFactory::~CSkillObjectFactory()
{
}
CSkillObject* CSkillObjectFactory::MakeNewSkillObject(CSkillInfo* pSkillInfo)
{
// 烙矫 窍靛 内爹
// 唱吝俊 pSkillInfo俊 嘎霸 积己窍绊 悸泼秦林绢具 窃
CSkillObjectTerminator* pTer;
CSkillObjectTargetList* pTar;
CSkillObjectSingleUnit* pSingleUnit;
CSkillObjectAttachUnit* pAttachUnit;
CSkillObjectFirstUnit* pFirstUnit;
CSkillObjectStateUnit* pStateUnit;
SKILLINFO* pInfo = pSkillInfo->GetSkillInfo();
// Terminator
pTer = new CSkillObjectTerminator_Time(pInfo);
// TargetList
if(pSkillInfo->IsMultipleTargetSkill() == TRUE)
{
if(pInfo->TargetRange == 0)
{
ASSERT(pInfo->TargetAreaIdx);
pTar = new CSkillObjectTargetList_Area(pInfo);
}
else
pTar = new CSkillObjectTargetList_Circle(pInfo);
}
else
{
pTar = new CSkillObjectTargetList_One(pInfo);
}
// firstunit
if(pInfo->AIObject == 1)
pFirstUnit = new CSkillObjectFirstUnit(pInfo);
else if(pInfo->FirstAttAttackMax[11] != 0 ||
pInfo->FirstAttAttack[11] != 0 ||
pInfo->FirstPhyAttack[11] != 0)
pFirstUnit = new CSkillObjectFirstUnit_Attack(pInfo);
else if(pInfo->FirstRecoverLife[11] != 0 || pInfo->FirstRecoverNaeRyuk[11] != 0)
pFirstUnit = new CSkillObjectFirstUnit_Recover(pInfo);
else
pFirstUnit = new CSkillObjectFirstUnit(pInfo);
CSkillObject* pSObj;
if(pInfo->AIObject == 1) // 瘤汾
pSObj = new CSkillObject_Mine(pSkillInfo,pTer,pTar,pFirstUnit);
else
pSObj = new CSkillObject(pSkillInfo,pTer,pTar,pFirstUnit);
// SingleUnit
DWORD SingleUnitNum = 0;
if(pInfo->ContinueAttAttack[11] != 0 || pInfo->ContinueAttAttackRate[11])
{
pSingleUnit = new CSkillObjectSingleUnit_Attack(SingleUnitNum++);
pSObj->AddSingleUnit(pSingleUnit);
}
if(pInfo->ContinueRecoverLife[11] != 0)
{
pSingleUnit = new CSkillObjectSingleUnit_Heal(SingleUnitNum++);
pSObj->AddSingleUnit(pSingleUnit);
}
if(pInfo->ContinueRecoverNaeRyuk[11] != 0)
{
pSingleUnit = new CSkillObjectSingleUnit_Recharge(SingleUnitNum++);
pSObj->AddSingleUnit(pSingleUnit);
}
// AttachUnit
if( pInfo->UpMaxLife[11] != 0 ||
pInfo->UpMaxNaeRyuk[11] != 0 ||
pInfo->UpMaxShield[11] != 0 ) // 弥措 积疙,郴仿 惑铰
{
pAttachUnit = new CSkillObjectAttachUnit_MaxLifeNaeRyukUp();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->UpAttDefence[11] != 0 || pInfo->UpPhyDefence[11]) // 规绢仿 惑铰
{
pAttachUnit = new CSkillObjectAttachUnit_DefenceUp();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->UpPhyAttack[11] != 0) // 拱府傍拜仿 惑铰
{
pAttachUnit = new CSkillObjectAttachUnit_AttackUp();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->CounterAttAttack[11] != 0 || pInfo->CounterPhyAttack[11] != 0) // 馆拜
{
pAttachUnit = new CSkillObjectAttachUnit_CounterAttack();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->Immune != 0) // 公利
{
pAttachUnit = new CSkillObjectAttachUnit_Immune();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->ChangeSpeedType == 1) // 捞悼加档 函拳
{
pAttachUnit = new CSkillObjectAttachUnit_MoveSpeed();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_NEGATIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->CounterDodgeKind == 2) // 雀乔
{
pAttachUnit = new CSkillObjectAttachUnit_Dodge();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->VampiricLife[11] != 0 || pInfo->VampiricNaeryuk[11] != 0) // 软扁
{
pAttachUnit = new CSkillObjectAttachUnit_Vampiric();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_POSITIVE);
pSObj->AddStateUnit(pStateUnit);
}
if( pInfo->DownMaxLife[11] != 0 ||
pInfo->DownMaxNaeRyuk[11] != 0 ||
pInfo->DownMaxShield[11] != 0 ) // 弥措 积疙,郴仿 皑家
{
pAttachUnit = new CSkillObjectAttachUnit_MaxLifeNaeRyukDown();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_NEGATIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->DownAttDefence[11] != 0 || pInfo->DownPhyDefence[11]) // 规绢仿 皑家
{
pAttachUnit = new CSkillObjectAttachUnit_DefenceDown();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_NEGATIVE);
pSObj->AddStateUnit(pStateUnit);
}
if(pInfo->DownPhyAttack[11] != 0) // 拱府傍拜仿 皑家
{
pAttachUnit = new CSkillObjectAttachUnit_AttackDown();
pStateUnit = new CSkillObjectStateUnit_StatusAttach();
((CSkillObjectStateUnit_StatusAttach*)pStateUnit)->SetAttachUnit(pAttachUnit,SKILLRESULTKIND_NEGATIVE);
pSObj->AddStateUnit(pStateUnit);
}
// StateUnit
if(pInfo->TieUpType != SKILLTIEUP_TYPE_NOTHING)
{
pStateUnit = new CSkillObjectStateUnit_TieUp();
pSObj->AddStateUnit(pStateUnit);
}
if( pInfo->ContinueAttAttack[11] != 0 ||
pInfo->ContinueAttAttackRate[11] != 0 ||
pInfo->ContinueRecoverLife[11] != 0)
{
pStateUnit = new CSkillObjectStateUnit_DummyState();
pSObj->AddStateUnit(pStateUnit);
}
if( pInfo->AmplifiedPowerPhy[11] != 0 ||
pInfo->AmplifiedPowerAtt[11] != 0 ||
pInfo->AmplifiedPowerAttRate[11] != 0 )
{
pStateUnit = new CSkillObjectStateUnit_AmplifiedPower();
pSObj->AddStateUnit(pStateUnit);
}
return pSObj;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -