/** ¹ß»çü 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 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; //}