⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 effecttriggergravitymoveunitdesc.cpp

📁 墨香最新私服
💻 CPP
字号:
// EffectTriggerGravityMoveUnitDesc.cpp: implementation of the CEffectTriggerGravityMoveUnitDesc class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "EffectTriggerGravityMoveUnitDesc.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

BOOL EFFECTPOSITIONDESC::GetEffectPos(CObject* pTarget,CObject* pOperator,MAINTARGET* pMainTarget,VECTOR3* pRtPos)
{
	VECTOR3 basisPos;
	VECTOR3 maintargetpos;
	basisPos.x = 0;
	basisPos.y = 0;
	basisPos.z = 0;
	float fRot = 0;

	CObject* pMainTargetObj = NULL;
	BOOL bMainTargetRt = GetMainTargetPos(pMainTarget,&maintargetpos,&pMainTargetObj);
	if(m_PositionBasis == 0)
	{
		if(pTarget->IsInited() == FALSE)
			return FALSE;
		pTarget->GetPosition(&basisPos);
	}
	else if(m_PositionBasis == 1)
	{
		if(pOperator->IsInited() == FALSE)
			return FALSE;
		pOperator->GetPosition(&basisPos);
	}
	else if(m_PositionBasis == 2)
	{
		if(bMainTargetRt == FALSE)
			return FALSE;
		basisPos = maintargetpos;
	}
	
	if(m_RotateBasis == 0)
		fRot = pTarget->GetAngle();
	else if(m_RotateBasis == 1)
		fRot = pOperator->GetAngle();
	else if(m_RotateBasis == 2)
		fRot = pMainTargetObj ? pMainTargetObj->GetAngle() : 0;

	TransToRelatedCoordinate(pRtPos,&m_Pos,fRot);

	
	*pRtPos = *pRtPos + basisPos;

	return TRUE;
}

// 烙矫 -_-;
BOOL IsVillage()	{ return 0;}

void CEffectTriggerGravityMoveUnitDesc::CalcGravityMoveInfo(CObject* pTarget,CObject* pOperator,MAINTARGET* pMainTarget,GRAVITYMOVEINFO* pInfo)
{
	m_PosFrom.GetEffectPos(pTarget,pOperator,pMainTarget, &pInfo->m_InitPos);
	m_Velocity.GetEffectPos(pTarget,pOperator,pMainTarget, &pInfo->m_Velocity);
	pInfo->m_Target = m_PosTo;
	pInfo->m_pTargetObj = pTarget;

	pInfo->m_RemainTime = m_Duration*0.001f;
}


CEffectTriggerGravityMoveUnitDesc::CEffectTriggerGravityMoveUnitDesc(DWORD dwTime,DWORD dwUnitNum)
:	CEffectTriggerUnitDesc(dwTime,dwUnitNum)
{
	m_bTurn = TRUE;

}

CEffectTriggerGravityMoveUnitDesc::~CEffectTriggerGravityMoveUnitDesc()
{

}

void CEffectTriggerGravityMoveUnitDesc::ParseScript(CMHFile* pFile)
{
	char buf[128];
	pFile->GetString(buf);	// skip  '{'
	if(buf[0] != '{')
	{
		ERRORBSGBOX("ERROR[%s]!! { } 啊 鞘夸茄 飘府芭涝聪促!!!",pFile->GetFileName());
		return;
	}

	while(1)
	{
		pFile->GetString(buf);
		CMD_ST(buf)
			CMD_CS("}")
				break;
			CMD_CS("#POSFROM")				
				m_PosFrom.m_PositionBasis = pFile->GetByte();
				m_PosFrom.m_RotateBasis = pFile->GetByte();

				m_PosFrom.m_Pos.x = pFile->GetFloat();
				m_PosFrom.m_Pos.y = pFile->GetFloat();
				m_PosFrom.m_Pos.z = pFile->GetFloat();
				
			CMD_CS("#POSTO")				
				m_PosTo.m_PositionBasis = pFile->GetByte();
				m_PosTo.m_RotateBasis = pFile->GetByte();

				m_PosTo.m_Pos.x = pFile->GetFloat();
				m_PosTo.m_Pos.y = pFile->GetFloat();
				m_PosTo.m_Pos.z = pFile->GetFloat();
				
			CMD_CS("#VELOCITY")				
				m_Velocity.m_PositionBasis = pFile->GetByte();
				m_Velocity.m_PositionBasis = 3;
				m_Velocity.m_RotateBasis = pFile->GetByte();

				m_Velocity.m_Pos.x = pFile->GetFloat();
				m_Velocity.m_Pos.y = pFile->GetFloat();
				m_Velocity.m_Pos.z = pFile->GetFloat();

			CMD_CS("#DURATION")	
				m_Duration = pFile->GetDword();
			
			CMD_CS("#TURN")
				m_bTurn = pFile->GetBool();
		CMD_EN
	}
}
BOOL CEffectTriggerGravityMoveUnitDesc::Operate(CEffect* pEffect)
{	
	return pEffect->GetEffectUnit(m_dwUnitNum)->GravityMove(pEffect->GetEffectParam(),this);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -