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

203 lines
4.6 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "uiTimeQuest.h"
#include "uiQuestMan/uiQuestMan.h"
#include "GlobalFunc.h"
#include "interfacemanager.h"
#include "QuestManager_Concrete.h"
#include "GameFramework.h"
//------------------------------------------------------------------------------
WzID uiTimeQuest::m_wzId[DLG_MAX] =
{
StrToWzID("T001"), // 퀘스트네임 DLG_QUEST_NAME,
StrToWzID("T002"), // 남은시간 DLG_REMAINING_TIME
StrToWzID("P000"), //DLG_QUEST_NAME_PICTRURE,
StrToWzID("P001"), //DLG_REMAINING_TIME_PICTRURE,
};
uiTimeQuest::uiTimeQuest(InterfaceManager *pUIMan)
:uiBase(pUIMan),
m_pTimeQuest(NULL),
m_bShowLastMin(true)
{
ZeroMemory(&m_pTxtControl,sizeof(m_pTxtControl));
}
//------------------------------------------------------------------------------
/**
*/
uiTimeQuest::~uiTimeQuest(void)
{
Release();
}
//------------------------------------------------------------------------------
/**
*/
void
uiTimeQuest::Release()
{
}
//------------------------------------------------------------------------------
/**
*/
VOID
uiTimeQuest::Init( CDrawBase * pDrawBase )
{
uiBase::Init(pDrawBase);
this->InitControls();
}
//------------------------------------------------------------------------------
/**
*/
void
uiTimeQuest::InitControls()
{
m_pTxtControl[DLG_QUEST_NAME] = static_cast<CCtrlStaticWZ *>(this->getControl(DLG_QUEST_NAME));
m_pTxtControl[DLG_REMAINING_TIME]= static_cast<CCtrlStaticWZ *>(this->getControl(DLG_REMAINING_TIME));
if (m_pTxtControl[DLG_QUEST_NAME])
{
m_pTxtControl[DLG_QUEST_NAME]->SetDiscardMessage(true);
}
CControlWZ* control_pointer = static_cast<CControlWZ*>(this->getControl(DLG_QUEST_NAME_PICTRURE));
if (control_pointer)
{
control_pointer->SetDiscardMessage(true);
}
}
//------------------------------------------------------------------------------
/**
*/
uiQuestMan *
uiTimeQuest::GetManager()
{
uiQuestMan* puiQuestMan = static_cast<uiQuestMan *>(this->GetUIMan()->GetUserInterfaceManager(UIMAN_QUEST));
return puiQuestMan;
}
//------------------------------------------------------------------------------
/**
*/
void
uiTimeQuest::OnShowWindow( BOOL val )
{
if (val)
{
_asm nop;
}
else
{
_asm nop;
}
}
//------------------------------------------------------------------------------
/** 타임퀘스트 셋팅
*/
void
uiTimeQuest::SetTimeQuest(Quest * pQuest)
{
if (NULL == m_pTimeQuest && pQuest)
{
m_bShowLastMin = true;
}
m_pTimeQuest = pQuest;
if(m_pTimeQuest)
{
if(m_pTxtControl[DLG_QUEST_NAME])
{
//퀘스명은 시작시 한번만
TCHAR szQuestName[INTERFACE_STRING_LENGTH] = {0,};
g_InterfaceManager.GetInterfaceString(m_pTimeQuest->GetQuestInfo()->GetQNCode(),szQuestName,INTERFACE_STRING_LENGTH);
GlobalFunc::SetCaptionSimple( m_pTxtControl[DLG_QUEST_NAME], szQuestName );
}
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiTimeQuest::OnUpdateSolarDialog()
{
if(!m_pTimeQuest)return;
if(m_pTimeQuest->GetRemainedTime()==0)
{
g_pQMGR_Real->OnEventQuestTime(m_pTimeQuest);
}
//닫혀야할상황들
switch(GameFramework::GetCurScene())
{
case SCENE_TYPE_CHARSELECT:
case SCENE_TYPE_LOGIN:
case SCENE_TYPE_LOBBY:
case SCENE_TYPE_NONE:
{
if(IsVisible())
{
this->ShowInterface(FALSE);
}
}
break;
}
}
//------------------------------------------------------------------------------
/** render
*/
void uiTimeQuest::OnRenderSolarDialog()
{
if(!m_pTimeQuest) return;
if(!m_pTxtControl[DLG_REMAINING_TIME]) return;
DWORD dwRemainTime = m_pTimeQuest->GetRemainedTime();
DWORD dwTime = dwRemainTime / SEC_PER_TICK;
DWORD dwTimeEx = dwRemainTime % SEC_PER_TICK;
DWORD minTick = 0;
DWORD secTick = 0;
DWORD msecTick = 0;
if(dwTime)
{
minTick = dwTime / 60;
secTick = dwTime % 60;
}
if(dwTimeEx)
msecTick = dwTimeEx/ 10;
//1분남았을때 메시지를 찍는다
if( minTick == 0 && secTick <= 59 && m_bShowLastMin)
{
if(GetManager())
{
GetManager()->QuestMessage(5387);
m_bShowLastMin = false;
}
}
TCHAR szTime[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
//남은시간:
g_InterfaceManager.GetInterfaceString(1767,szMessage,INTERFACE_STRING_LENGTH);
//00'00'00
Snprintf (szTime, INTERFACE_STRING_LENGTH-1, _T(" %02d'%02d''%02d"), minTick, secTick, msecTick);
_tcscat( szMessage , szTime );
GlobalFunc::SetCaption( m_pTxtControl[DLG_REMAINING_TIME], szMessage );
}
//------------------------------------------------------------------------------
/** msg_proc
*/
void
uiTimeQuest::MessageProc( SI_MESSAGE * pMessage )
{
//TODO: 이벤트 처리는 이곳에
return;
}