/*! * \file ssqscene.h file * \brief Ÿ¶ôÇÑ »ç¿ø ¾À ÆÄÀÏ * \author ±è°æÇ¥ (lammy@webzen.co.kr) * \version 2009/01/12 ±è°æÇ¥ - doxygen command ÀÛ¼º */ #pragma once #include "scenebase.h" #include "battlescene.h" #include class TerrainObject; /*! * \class ssqscene class * \brief Ÿ¶ôÇÑ »ç¿ø ¾À °ü·Ã Ŭ·¡½º * \author ±è°æÇ¥ (lammy@webzen.co.kr) * \version 2009/01/12 ±è°æÇ¥ - doxygen command ÀÛ¼º */ class SsqScene : public BattleScene { public: /// »ý¼ºÀÚ SsqScene(void); /// ¼Ò¸êÀÚ virtual ~SsqScene(void); /// ÃʱâÈ­, ·Îµù virtual BOOL Init( void ); /// ¸ÞÀÎ °è»ê virtual BOOL Process( DWORD dwTick ); /// Á¾·á virtual void Release( void ); /// ³×Æ®¿öÅ© ÆÐŶ ó¸® virtual void ParsePacket( MSG_BASE * pMsg ); virtual void OnRecvCG_STATUS( MSG_BASE * pMsg ); /// È÷¾î·Î °ü·Ã ÀÎDz ó¸® virtual void ProcessKeyInput_Hero( DWORD dwTick ); /// ÁöÁø Á¶ÁüÀ» º¸ÀÏ Å¸ÀÏÀ» Ãß°¡ÇÑ´Ù. /*! * \param[in] index ŸÀÏ À妽º */ void AddEarthQuakeIndex( int index ); /// Á¶ÁüÀ» º¸ÀÌ´ø ŸÀÏ¿¡ ÁöÁøÀ» ÁøÇà½ÃŲ´Ù. void ProcessEarthQuake(); /// À妽º·Î ÅÍ·¹ÀÎ ¿ÀºêÁ§Æ®¸¦ ¾ò¾î¿Â´Ù /*! * \param[in] index ŸÀÏ À妽º * \return ¼º°ø TerrainObject ¸®ÅÏ * \return ½ÇÆÐ NULL ¸®ÅÏ */ TerrainObject * FindTerrainObject( int index ); /// ¹ø°³¸¦ »ý¼ºÇÑ´Ù. /*! * \param[in] pos ¹ø°³ »ý¼º À§Ä¡ */ void CreateThunderBolt( const WzVector & pos ); /// ´ë¹ÌÁö¸¦ ÀÔÀº Ç÷¹À̾îÀÇ ´ë¹ÌÁö¸¦ °è»êÇÑ´Ù. /*! * \param[in] DamageInfo ´ë¹ÌÁö °ü·Ã Á¤º¸ * \param[in] dwSkillCode ½ºÅ³ ÄÚµå */ void ProcessDamage( const DAMAGE_INFO & DamageInfo, DWORD dwSkillCode = 0 ); /// °¡¿îµ¥ µÒÀ» Áö¿î´Ù. void DeleteDoomEffect( void ); /// ·»´ýÇÏ°Ô Å¸ÀÏ Æ÷Áö¼ÇÀ» ¾ò¾î¿Â´Ù. (½Ì±Û¿ë) /*! * \return ¼º°ø WzVector */ WzVector GetRandomPosition(); /// ÅÍ·¹ÀÎ ¿ÀºêÁ§Æ®ÀÇ À妽º¸¦ Ãß°¡ÇÑ´Ù. /*! * \param[in] iIndex ÅÍ·¹ÀÎ À妽º */ void AddTerrainObjIndex( int iIndex ); /// ssq¾À¿¡¼­ Ç÷¹¾î¾î°£ °ü°è ¼³Á¤ /*! * \param[in] pObject °ü°è¸¦ ¾Ë¾Æ¿Ã Object * \param[in] bForceEnemy °­Á¦ °ø°Ý ¼³Á¤ */ virtual RELATIONKIND::TYPE GetRelationKindOfCharacter( Character* pObject, BOOL bForceEnemy ); bool is_ssq_state(); private: /// ¹ø°³¸¦ Ä¥ ½Ã°£ (½Ì±Û¿ë) DWORD m_dwThunderboltTime; /// ºØ±«¸¦ ÀÏÀ¸Å³ ½Ã°£ (½Ì±Û¿ë) DWORD m_dwEarthQuakeTime; /// µÒ ÀÌÆåÆ® ÇÚµé HANDLE m_hDoomEffect; /// µÒÀ» ¾ø¾Ö´Â ½Ã°£ üũ¿ë º¯¼ö (½Ì±Û¿ë) DWORD m_dwOverCoatingTime; /// ºØ±«ÇÒ ÅÍ·¹ÀÎ ¿ÀºêÁ§Æ® (½Ì±Û¿ë) TerrainObject * m_pTerrain; /// ÅÍ·¹ÀÎ ¿ÀºêÁ§Æ® À妽º¸¦ °ü¸®ÇÏ´Â ¹è¿­ nArray m_iTerrainObjIndexArray; /// Á¶ÁüÀ» º¸ÀÌ´ø ÅÍ·¹ÀοÀºêÁ§Æ®¸¦ ºØ±« ½Ãų º¤ÅÍ std::vector m_EarthQuakeVec; /// ºí·¯ ¿Ãµå °ª float m_fOldBlurRatio; public: /// °ÔÀÓ ½ÃÀÛ °ü·Ã ÇÔ¼ö void Func_SendPacket_(); void Func_OnRecv_(const MSG_CG_ETC_GET_BATTLE_OPEN_TIME_ACK* pMsg); bool Func_Output_with_internal_timer(TCHAR* szMessage, bool is_only_time = false); void GetSSQTimeInfo(OUT SYSTEMTIME& system_time, OUT nsSSQ::SSQTicketTimeInfo::eTM& current_state); private: void Func_CSQuery_Check(); nsSSQ::SSQTicketTimeInfo m_SSQTicketTimeInfoCtrl; BOOL m_bOldShadowVal; int m_iOldEffectLevel; }; extern SsqScene g_SsqScene;