Files
2022-10-26 12:25:11 +08:00

363 lines
9.1 KiB
C

/**
발사체 or 추가 데미지 객체 처리
@author
-준태,지완
@since
@remarks
-2005.7.22 화살 이외의 오브젝트 가능하게 정리 시작
-2005.09.17 Todo:교통 정리! 짱지저분 하다.
*/
#pragma once
//
//#include "../Utility/Narray.h"
//#define MAX_MULTITARGET 10
//#include "ObjectEffectData.h"
//#include "character.h"
//namespace PROJECTILE
//{
// enum PROJECTILEID
// {
// PROJECTILEID_ARROW = 0,
// PROJECTILEID_POISON_THORN,
// PROJECTILEID_POISON_RAIN,
// //PROJECTILEID_POWER_WAVE, // 사용하지 마시오!!!!!
// PROJECTILEID_SONY_VINE,
//
// ////연출용 발사체
// //PROJECTILEID_SWORD_WAVE,
// //일반 발사체
// PROJECTILEID_COMMON,
// //곡면 발사체
// PROJECTILEID_BEZIER,
//
// //에어블로우
// PROJECTILEID_AIRBLOW,
// //타겟에 붙어 다닐것들
// PROJECTILEID_CHASE_TARGET,
// PROJECTILEID_SWORD_TRAIL,
// PROJECTILEID_ATTACHMENT_WEAPON,
// PROJECTILEID_PORTAL,
// PROJECTILEID_QUEST_POTAL,
//
// //연출용 발사체
// PROJECTILEID_BEZIER_TORCH,
//
// //포이즌대거
// PROJECTILEID_POISONDAGGER,
// PROJECTILEID_VITAL_SUCTION,
// PROJECTILEID_HPMP_SUCTION,
//
// };
//};
//
//typedef struct _PROJECTILE_PARAM
//{
// WzVector vStartPos; //시작점
// WzVector vTargetPos; //목표점
// DWORD dwLifeTime; //생명주기 :목표지점에 도달 하면 가만히 있고 시간이 다됐을경우 사라지는 것들 사용
// DWORD dwMoveTime; //이동시간 :목표 지점에 맞으면 사라지는것들 사용
//
// DWORD dwOwner;
// DWORD dwTargetID;
// float fHeight;
// DWORD dwAttackSerial;
// DWORD dwType; //발사체 타입
// DWORD dwImageCode; //리소스 이미지 코드
// WzID effectID;
// float fSpeed; //속도
// float fAccelate; //가속도
// bool bAllDamage; //결과를 한꺼번에 뺄것인가
// bool bGroupDamage; //종료시에 그룹으로 결과를 뺄것인가
// bool bNotMove;
// DWORD dwActiveDelayTime; //딜레이를 가지고 있다가 활동 할때
// bool bAddNextSerial; //결과를 처리 할때 시리얼을 증가 시킬것인가
// bool bCameraShake; //카메라를 흔들것인가
//
// DWORD dwDamageTime; //데미지를 먹일 시간..event를 잡아낼 방법이 없을까...
// bool bDamageLoop; //주기마다 계속 뺄것인가
// bool bFadeOut; //유닛 스르륵
// WzID EndeffectID; //끝날때 출력할 이펙트 루핑이면 안된다.
//
// WzVector vScale;
// WzVector vDir;
//
//
// BYTE bR; //궤적 관련 색상
// BYTE bG;
// BYTE bB;
// BOOL bMakeTrail; //궤적을 만들것인가
// float fTrailLength;
// DWORD dwTrailEffectDelay;
// ENUM_ALPHABLEND AlphaMode;
//
// struct
// {
// DWORD dwTargetObjectKey;
// TOAIR_INFO TOAIR;
// } AIR_BLOW;
//
//
// union
// {
// struct
// {
// DWORD dwTrailEffectDelay;
// } UPPERWAVE;
//
// struct
// {
// DWORD dwTargetObjectKey;
// WzVector vPostion;
// eSKILLEFFECT_POS dwPosType;
// DWORD dwBoneIndex;
// BOOL bRot;
// } CHASE_TARGET;
//
// struct
// {
// WzID aniIDStart;
// WzID aniIDEnd;
// float fDirZ;
// BOOL bAniChange;
//
// } POISON_RAIN;
//
// struct
// {
// DWORD dwEffectDelay;
// } POWER_WAVE;
//
// struct
// {
// WzID aniID;
// float fDirZ;
// BOOL bDeBuff;
// } SONYVINE;
//
// struct
// {
// WzID aniID;
// } POISON_THORN;
//
//
// struct
// {
// WzVector vPos0;
// WzVector vPos1;
// DWORD dwPos0Delay;
// }BEZIER;
//
// struct
// {
// WzVector vStartPos;//검기 윗부분
// WzVector vEndPos; //검기 아랫부분
// WzVector vDir; //진행할 방향
// DWORD dwTrailEffectDelay;
//
// WzVector vAdditionalStartPos;
// WzVector vAdditionalEndPos;
//
// } SWORD_TRAIL;
//
// struct
// {
// WzVector vCtrl0;
// WzVector vCtrl1;
// DWORD dwSecondTime;
// BOOL bReturn;
// }POISON_DAGGER;
//
// struct
// {
// WzVector vPos; //현재 발사체 위치
// BOOL bMove; //발사체 움직일지 여부
// }VITAL_SUCTION;
//
// struct
// {
// PORTALKEY portalKey; // 포탈키
// MAPCODE enterableMapCode; // 맵코드
// }QUEST_POTAL;
// };
//
//} PROJECTILE_PARAM;
//
//
//
//class Projectile
//{
//public:
// Projectile(void);
// virtual ~Projectile(void);
//
// //Common
// virtual void Create( const PROJECTILE_PARAM & param );
// virtual void Destroy();
//
// virtual BOOL Process(DWORD dwTick);
// virtual BOOL Render();
//
// virtual BOOL ProcessDamage();
// virtual BOOL ProcessDamageGroup();
//
// virtual BOOL ProcessDamage(DWORD dwTarget);
//
// void ProcessEffect(DWORD dwTick);
// void SetKey(DWORD dwKey);
// DWORD GetKey();
//
// void SetUnitDraw(CWzUnitDraw *pDraw);
// CWzUnitDraw * GetUnitDraw();
//
// //ARROW
// BOOL ProcessArrow(DWORD dwTick);
//
// //Sony
// BOOL ProcessSonyVine(DWORD dwTick);
//
// //PoisonThorn
// BOOL ProcessPoisonThorn(DWORD dwTick);
//
// //Poison
// BOOL ProcessPoisonRain(DWORD dwTick);
//
// //common
// BOOL ProcessCommon(DWORD dwTick);
//
// //Weapon
// BOOL ProcessAttachmentWeapon(DWORD dwTick);
//
// //bezier
// BOOL ProcessBezier(DWORD dwTick);
//
// BOOL ProcessTroch(DWORD dwTick);
//
// //PoisonDagger
// BOOL ProcessPoisonDagger(DWORD dwTick);
//
// BOOL ProcessAirBlow(DWORD dwTick);
//
// BOOL ProcessChaseTarget(DWORD dwTick);
//
// BOOL ProcessPortal(DWORD dwTick);
//
// BOOL ProcessQuestPortal(DWORD dwTick);
//
// BOOL ProcessVitalSuction(DWORD dwTick);
// void SetVitalSuctionMove(BOOL bVal){m_Param.VITAL_SUCTION.bMove = bVal;}
// DWORD GetProjectileType(){return m_Param.dwType;}
// DWORD GetOwnerKey(){return m_Param.dwOwner;}
// DWORD GetTargetKey(){return m_Param.dwTargetID;}
// DWORD GetPortalKey(){ return ((m_Param.dwType!=PROJECTILE::PROJECTILEID_QUEST_POTAL) ? 0:m_Param.QUEST_POTAL.portalKey);}
//
// BOOL ProcessHPMPSuction(DWORD dwTick);
//
//#ifdef _KIKI_DELETE_PROJECTILEID_POWER_WAVE_
// // empty
//#else
// //번개 효과 관련
// BOOL ProcessLighting(DWORD dwTick);
// void CreateEffect( const WzVector & vPos );
//#endif
//
// //검기
// BOOL ProcessSwordWave(DWORD dwTick);
//
// BOOL ProcessSwordTrail(DWORD dwTick);
//
// //연출용 물결
// BOOL ProcessUpperBlowWave(DWORD dwTick);
//
// void SetMultiTarget(int iTargetNum,DWORD *pdwTargetList); // 멀티 타겟 설정
// void SetTexture(HANDLE hTexture); // simpleMesh에 입힐 택스쳐
// //물결효과용
// void GenerateWave(WzVector vPos);
//
// void CreateEffect( const PROJECTILE_PARAM * pParam );
//
//
//
//
// //화살 꼬리
// void CreateTrail(PROJECTILE_PARAM param);
// BOOL RenderTrail();
//
// //유닛용 내부 이펙트
// void InitializeEffect();
// void DestroyAllEffect();
// void DestroyObjectEffect(int index);
// void UpdateEffectPos();
//
// void SetAni(WzID aniId, BOOL bLoop = FALSE);
//
//protected:
// BYTE m_bR,m_bG,m_bB;
// ENUM_ALPHABLEND m_AlphaMode;
// HANDLE m_hEffect;
// DWORD m_dwDelay;
// PROJECTILE_PARAM m_Param;
// WzSimpleMesh * m_pMesh;
// CWzUnitDraw * m_pUnitDraw;
// float m_fRate;
// BOOL m_bUpdated;
// BOOL m_bDamageProcessed;
//
//
// // 멀티 타겟 처리용 변수
// BOOL m_bMultiTarget;
// int m_iCurTargetIndex; // 현재 목표 인덱스
// int m_iTargetNum; // 목표 수
// DWORD m_pdwMultiTargetID[MAX_MULTITARGET]; // 목표 ID
// // 임시
// DWORD m_dwTrailEffectCount;
// BOOL m_bActive; // 활성화
// DWORD m_dwCurrentTime; // 흐른시간
//
//#ifdef _KIKI_DELETE_PROJECTILEID_POWER_WAVE_
// // empty
//#else //_KIKI_DELETE_PROJECTILEID_POWER_WAVE_
// nArray<HANDLE> m_hEffectArray; // 여러개의 이펙트를 다룰경우
//#endif
//
// BOOL m_bStart;
//
// WzColor m_wzColor; //유닛 디퓨즈
// // 유닛 내부용 이펙트
// BOOL m_bTrailActivate[MAX_TRAIL];
// HANDLE m_hTrailEffect[MAX_TRAIL];
// TRAIL_PARAM m_arTrailParam[MAX_TRAIL];
// EFFECT_PARAM m_EffectParam[MAX_OBJECT_EFFECT];
// float m_fAngleZ;
//
// BOOL m_bUseExtraMatrix;
// WzMatrix m_ExtraMatrix;
// DWORD dwProjectileKey;
//};
//
////------------------------------------------------------------------------------
///**
//*/
//inline void Projectile::SetKey(DWORD dwKey)
//{
// dwProjectileKey=dwKey;
//}
//
////------------------------------------------------------------------------------
///**
//*/
//inline DWORD Projectile::GetKey()
//{
// return dwProjectileKey;
//}
//
////------------------------------------------------------------------------------
///**
//*/
//inline CWzUnitDraw * Projectile::GetUnitDraw()
//{
// return m_pUnitDraw;
//}