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

134 lines
3.2 KiB
C++

/*!
* \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 <ssq/ssqinfostruct.h>
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 );
/// 히어로 관련 인풋 처리
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<int> m_iTerrainObjIndexArray;
/// 조짐을 보이던 터레인오브젝트를 붕괴 시킬 벡터
std::vector<int> 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;