Files
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

667 lines
20 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "stdafx.h"
#include "GameTimeConstants.h"
#include "GameTimeMgr.h"
#include <Network/Packet/WrapPacket.h>
#include <Network/Packet/PacketCommand.h>
#include <Network/Packet/PacketStruct/CastlePacket.h>
#include <Castle/CastleMgr.h>
#include <Creature/CreatureManager.h>
CGameTimeMgr::CGameTimeMgr()
: m_cNowGuildTime(GameTime::GT_NORMAL),
m_cNowRealmTime(GameTime::RT_NORMAL),
m_cNowSiegeTime(GameTime::ST_NORMAL),
m_cNowEnterTime(GameTime::ET_LIMIT),
m_cNowEventTime(GameTime::EVENT_NORMAL),
m_dwOldGuildRemainSec(0),
m_dwOldRealmRemainSec(0),
m_dwOldSiegeRemainSec(0),
m_dwOldEnterRemainSec(0),
m_dwOldEventRemainSec(0)
{
}
CGameTimeMgr::~CGameTimeMgr()
{
}
CGameTimeMgr& CGameTimeMgr::GetInstance()
{
static CGameTimeMgr ms_this;
return ms_this;
}
void CGameTimeMgr::SetTimeValue(unsigned char cTimeType, unsigned char cTimeValue, unsigned char cMonth, unsigned char cDay,
unsigned char cHour, unsigned char cMinute, unsigned long dwDuration)
{
switch (cTimeType)
{
case GameTime::GUILD:
{
m_cNowGuildTime = cTimeValue;
m_GuildDetailTimeInfo = sDetailTimeInfo(cMonth, cDay, cHour, cMinute, dwDuration);
m_dwOldGuildRemainSec = GetDetailRemainSec(GameTime::GUILD);
}
break;
case GameTime::REALM:
{
m_cNowRealmTime = cTimeValue;
m_RealmDetailTimeInfo = sDetailTimeInfo(cMonth, cDay, cHour, cMinute, dwDuration);
m_dwOldRealmRemainSec = GetDetailRemainSec(GameTime::REALM);
}
break;
case GameTime::SIEGE:
{
m_cNowSiegeTime = cTimeValue;
m_SiegeDetailTimeInfo = sDetailTimeInfo(cMonth, cDay, cHour, cMinute, dwDuration);
m_dwOldSiegeRemainSec = GetDetailRemainSec(GameTime::SIEGE);
}
break;
case GameTime::NEWZONE:
{
m_cNowEnterTime = cTimeValue;
m_EnterDetailTimeInfo = sDetailTimeInfo(cMonth, cDay, cHour, cMinute, dwDuration);
m_dwOldEnterRemainSec = GetDetailRemainSec(GameTime::NEWZONE);
}
break;
case GameTime::EVENT:
{
m_cNowEventTime = cTimeValue;
m_EventDetailTimeInfo = sDetailTimeInfo(cMonth, cDay, cHour, cMinute, dwDuration);
m_dwOldEventRemainSec = GetDetailRemainSec(GameTime::EVENT);
}
break;
default: ERRLOG1(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴµ<CFB4> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>. Type : %d", cTimeType); break;
}
}
unsigned char CGameTimeMgr::GetCurrentGameTime(unsigned char cTimeType) const
{
switch (cTimeType)
{
case GameTime::GUILD: return m_cNowGuildTime; break;
case GameTime::REALM: return m_cNowRealmTime; break;
case GameTime::SIEGE: return m_cNowSiegeTime; break;
case GameTime::NEWZONE: return m_cNowEnterTime; break;
case GameTime::EVENT: return m_cNowEventTime; break;
}
ERRLOG1(g_Log, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><><EFBFBD>¸<EFBFBD> <20><><EFBFBD>µ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><DFBD>ϴ<EFBFBD>. Type : %d", cTimeType);
return 0;
}
unsigned char CGameTimeMgr::GetCurrentGuildTime() const
{
return m_cNowGuildTime;
}
unsigned char CGameTimeMgr::GetCurrentRealmTime() const
{
return m_cNowRealmTime;
}
unsigned char CGameTimeMgr::GetCurrentSiegeTime() const
{
return m_cNowSiegeTime;
}
unsigned char CGameTimeMgr::GetCurrentEnterTime() const
{
return m_cNowEnterTime;
}
unsigned char CGameTimeMgr::GetCurrentEventTime() const
{
return m_cNowEventTime;
}
bool CGameTimeMgr::SendGameTimeInfo(CSendStream& SendStream)
{
unsigned short wBufferSize = static_cast<unsigned short>(sizeof(PktGameTimeInfo)
+ sizeof(CastleSiegeInfo) * Castle::CCastleMgr::GetInstance().GetCastleNum());
char* lpBuffer = SendStream.GetBuffer(wBufferSize);
if (lpBuffer)
{
PktGameTimeInfo* lpPktGTI = reinterpret_cast<PktGameTimeInfo*>(lpBuffer);
CastleSiegeInfo* lpCastleSiegeInfo = reinterpret_cast<CastleSiegeInfo*>(lpPktGTI + 1);
unsigned char cNum = 0;
unsigned short wSize = sizeof(PktGameTimeInfo);
ZeroMemory(lpPktGTI, sizeof(PktGameTimeInfo));
Castle::CCastleMgr::GetInstance().GetCastleSiegeInfo(lpCastleSiegeInfo, cNum, wSize);
lpPktGTI->m_cType = GameTime::TYPE_CHARACTER_LOGIN;
lpPktGTI->m_wSize = wSize;
lpPktGTI->m_cCastleNum = cNum;
lpPktGTI->m_GuildTimeInfo.m_bUpdated = true;
lpPktGTI->m_RealmTimeInfo.m_bUpdated = true;
lpPktGTI->m_SiegeTimeInfo.m_bUpdated = true;
lpPktGTI->m_EventTimeInfo.m_bUpdated = true;
lpPktGTI->m_GuildTimeInfo.m_cNowGuildTime = m_cNowGuildTime;
lpPktGTI->m_RealmTimeInfo.m_cNowRealmTime = m_cNowRealmTime;
lpPktGTI->m_SiegeTimeInfo.m_cNowSiegeTime = m_cNowSiegeTime;
lpPktGTI->m_EventTimeInfo.m_cNowEventTime = m_cNowEventTime;
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::GUILD);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::REALM);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::SIEGE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::NEWZONE);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::EVENT);
return SendStream.WrapCrypt(wBufferSize, CmdGameTimeInfo, 0, PktBase::NO_SERVER_ERR);
}
return false;
}
void CGameTimeMgr::UpdateGameTimeInfo()
{
if (CheckNeedUpdate())
{
const unsigned short MAX_BUFFER_SIZE = static_cast<unsigned short>(
sizeof(PktGameTimeInfo) + sizeof(CastleSiegeInfo) * Castle::MAX_CASTLE_NUM);
char szPacket[MAX_BUFFER_SIZE] = {0, };
PktGameTimeInfo* lpPktGTI = reinterpret_cast<PktGameTimeInfo*>(szPacket);
CastleSiegeInfo* lpCastleSiegeInfo = reinterpret_cast<CastleSiegeInfo*>(lpPktGTI + 1);
unsigned char cNum = 0;
unsigned short wSize = sizeof(PktGameTimeInfo);
ZeroMemory(lpPktGTI, sizeof(PktGameTimeInfo));
Castle::CCastleMgr::GetInstance().GetCastleSiegeInfo(lpCastleSiegeInfo, cNum, wSize);
lpPktGTI->m_cType = GameTime::TYPE_UPDATE_TIME;
lpPktGTI->m_wSize = wSize;
lpPktGTI->m_cCastleNum = cNum;
lpPktGTI->m_GuildTimeInfo.m_bUpdated = true;
lpPktGTI->m_RealmTimeInfo.m_bUpdated = true;
lpPktGTI->m_SiegeTimeInfo.m_bUpdated = true;
lpPktGTI->m_EventTimeInfo.m_bUpdated = true;
lpPktGTI->m_GuildTimeInfo.m_cNowGuildTime = m_cNowGuildTime;
lpPktGTI->m_RealmTimeInfo.m_cNowRealmTime = m_cNowRealmTime;
lpPktGTI->m_SiegeTimeInfo.m_cNowSiegeTime = m_cNowSiegeTime;
lpPktGTI->m_EventTimeInfo.m_cNowEventTime = m_cNowEventTime;
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::GUILD);
lpPktGTI->m_GuildTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::GUILD);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::REALM);
lpPktGTI->m_RealmTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::REALM);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::SIEGE);
lpPktGTI->m_SiegeTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::SIEGE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::NEWZONE);
lpPktGTI->m_EnterTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::NEWZONE);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cMonth = GetDetailMonth(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cDay = GetDetailDay(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cHour = GetDetailHour(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_cMinute = GetDetailMinute(GameTime::EVENT);
lpPktGTI->m_EventTimeInfo.m_TimeInfo.m_dwTime = GetDetailRemainSec(GameTime::EVENT);
if (PacketWrap::WrapCrypt(szPacket, wSize, CmdGameTimeInfo, 0, 0))
{
CCreatureManager::GetInstance().SendAllCharacter(szPacket, wSize, CmdGameTimeInfo);
}
}
}
bool CGameTimeMgr::CheckNeedUpdate()
{
unsigned long dwGuildRemainSec = GetDetailRemainSec(GameTime::GUILD);
unsigned long dwRealmRemainSec = GetDetailRemainSec(GameTime::REALM);
unsigned long dwSiegeRemainSec = GetDetailRemainSec(GameTime::SIEGE);
unsigned long dwEnterRemainSec = GetDetailRemainSec(GameTime::NEWZONE);
unsigned long dwEventRemainSec = GetDetailRemainSec(GameTime::EVENT);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϲ<EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD> 5<>п<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if ((GameTime::GT_NORMAL == m_cNowGuildTime || GameTime::GT_GUILD_WAR == m_cNowGuildTime) &&
m_dwOldGuildRemainSec - dwGuildRemainSec >= 300)
{
m_dwOldGuildRemainSec = dwGuildRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 30<33><30><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> 30<33><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>п<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
else if ((GameTime::GT_PREPARE_START_30 == m_cNowGuildTime || GameTime::GT_PREPARE_END_30 == m_cNowGuildTime) &&
m_dwOldGuildRemainSec - dwGuildRemainSec >= 60)
{
m_dwOldGuildRemainSec = dwGuildRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
else if (GameTime::GT_PREPARE_START_5 == m_cNowGuildTime && m_dwOldGuildRemainSec - dwGuildRemainSec >= 10)
{
m_dwOldGuildRemainSec = dwGuildRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϲ<EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD> 5<>п<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if ((GameTime::RT_NORMAL == m_cNowRealmTime || GameTime::RT_REALM_WAR == m_cNowRealmTime) &&
m_dwOldRealmRemainSec - dwRealmRemainSec >= 300)
{
m_dwOldRealmRemainSec = dwRealmRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 30<33><30>, 15<31><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<>п<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ, <20><><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/* else if ((GameTime::RT_PREPARE_START_30 == m_cNowRealmTime || GameTime::RT_PREPARE_START_15 == m_cNowRealmTime) &&
m_dwOldRealmRemainSec - dwRealmRemainSec >= 60)
{
m_dwOldRealmRemainSec = dwRealmRemainSec;
return true;
}
*/ else if ((GameTime::RT_PREPARE_START_30 == m_cNowRealmTime || GameTime::RT_PREPARE_START_15 == m_cNowRealmTime || GameTime::RT_REALM_WAR_END_5 == m_cNowRealmTime) &&
m_dwOldRealmRemainSec - dwRealmRemainSec >= 60)
{
m_dwOldRealmRemainSec = dwRealmRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 10<31><30><EFBFBD><EFBFBD> 30<33>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
else if (GameTime::RT_PREPARE_START_10 == m_cNowRealmTime && m_dwOldRealmRemainSec - dwRealmRemainSec >= 30)
{
m_dwOldRealmRemainSec = dwRealmRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD> 10<31>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
else if (GameTime::RT_PREPARE_START_5 == m_cNowRealmTime && m_dwOldRealmRemainSec - dwRealmRemainSec >= 10)
{
m_dwOldRealmRemainSec = dwRealmRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϲ<EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> 5<>п<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if ((GameTime::ST_NORMAL == m_cNowSiegeTime || GameTime::ST_SIEGE_WAR == m_cNowSiegeTime ) &&
m_dwOldSiegeRemainSec - dwSiegeRemainSec >= 300)
{
m_dwOldSiegeRemainSec = dwSiegeRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
else if ((GameTime::ST_PREPARE_START_5 == m_cNowSiegeTime || GameTime::ST_PREPARE_END_5 == m_cNowSiegeTime) &&
m_dwOldSiegeRemainSec - dwSiegeRemainSec >= 10)
{
m_dwOldSiegeRemainSec = dwSiegeRemainSec;
return true;
}
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ұ<EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> 5<>п<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if ((GameTime::ET_LIMIT == m_cNowEnterTime || GameTime::ET_ALLOWENTER == m_cNowEnterTime ) &&
m_dwOldEnterRemainSec - dwEnterRemainSec >= 300)
{
m_dwOldEnterRemainSec = dwEnterRemainSec;
return true;
}
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> 5<><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10<31>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
else if ((GameTime::ET_PREPARE_START_5 == m_cNowEnterTime || GameTime::ET_PREPARE_END_5 == m_cNowEnterTime) &&
m_dwOldEnterRemainSec - dwEnterRemainSec >= 10)
{
m_dwOldEnterRemainSec = dwEnterRemainSec;
return true;
}
// <20><><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ <20>Ұ<EFBFBD> <20><><EFBFBD>¿<EFBFBD> <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> 10<31>ʿ<EFBFBD> <20>ѹ<EFBFBD><D1B9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
if ( (GameTime::EVENT_NORMAL != m_cNowEventTime) && m_dwOldEventRemainSec - dwEventRemainSec >= 10)
{
m_dwOldEventRemainSec = dwEventRemainSec;
return true;
}
return false;
}
unsigned char CGameTimeMgr::GetDetailMonth(unsigned char cType) const
{
switch (cType)
{
case GameTime::GUILD: return m_GuildDetailTimeInfo.m_cMonth;
case GameTime::REALM: return m_RealmDetailTimeInfo.m_cMonth;
case GameTime::SIEGE: return m_SiegeDetailTimeInfo.m_cMonth;
case GameTime::NEWZONE: return m_EnterDetailTimeInfo.m_cMonth;
case GameTime::EVENT: return m_EventDetailTimeInfo.m_cMonth;
}
return 0;
}
unsigned char CGameTimeMgr::GetDetailDay(unsigned char cType) const
{
switch (cType)
{
case GameTime::GUILD: return m_GuildDetailTimeInfo.m_cDay;
case GameTime::REALM: return m_RealmDetailTimeInfo.m_cDay;
case GameTime::SIEGE: return m_SiegeDetailTimeInfo.m_cDay;
case GameTime::NEWZONE: return m_EnterDetailTimeInfo.m_cDay;
case GameTime::EVENT: return m_EventDetailTimeInfo.m_cDay;
}
return 0;
}
unsigned char CGameTimeMgr::GetDetailHour(unsigned char cType) const
{
switch (cType)
{
case GameTime::GUILD: return m_GuildDetailTimeInfo.m_cHour;
case GameTime::REALM: return m_RealmDetailTimeInfo.m_cHour;
case GameTime::SIEGE: return m_SiegeDetailTimeInfo.m_cHour;
case GameTime::NEWZONE: return m_EnterDetailTimeInfo.m_cHour;
case GameTime::EVENT: return m_EventDetailTimeInfo.m_cHour;
}
return 0;
}
unsigned char CGameTimeMgr::GetDetailMinute(unsigned char cType) const
{
switch (cType)
{
case GameTime::GUILD: return m_GuildDetailTimeInfo.m_cMinute;
case GameTime::REALM: return m_RealmDetailTimeInfo.m_cMinute;
case GameTime::SIEGE: return m_SiegeDetailTimeInfo.m_cMinute;
case GameTime::NEWZONE: return m_EnterDetailTimeInfo.m_cMinute;
case GameTime::EVENT: return m_EventDetailTimeInfo.m_cMinute;
}
return 0;
}
unsigned long CGameTimeMgr::GetDetailRemainSec(unsigned char cType) const
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> üũ
bool bRequestEndTime = false;
CTime nowTime = CTime::GetCurrentTime();
CTime tempTime;
unsigned long dwDuration = 0;
switch (cType)
{
case GameTime::GUILD:
{
if (0 != m_GuildDetailTimeInfo.m_cDay)
{
tempTime = CTime(nowTime.GetYear(), m_GuildDetailTimeInfo.m_cMonth, m_GuildDetailTimeInfo.m_cDay,
m_GuildDetailTimeInfo.m_cHour, m_GuildDetailTimeInfo.m_cMinute, 0);
dwDuration = m_GuildDetailTimeInfo.m_dwDuration;
if (IsGuildWarTime())
bRequestEndTime = true;
}
else
{
return 0;
}
}
break;
case GameTime::REALM:
{
if (0 != m_RealmDetailTimeInfo.m_cDay)
{
tempTime = CTime(nowTime.GetYear(), m_RealmDetailTimeInfo.m_cMonth, m_RealmDetailTimeInfo.m_cDay,
m_RealmDetailTimeInfo.m_cHour, m_RealmDetailTimeInfo.m_cMinute, 0);
dwDuration = m_RealmDetailTimeInfo.m_dwDuration;
if (IsRealmWarTime())
bRequestEndTime = true;
}
else
{
return 0;
}
}
break;
case GameTime::SIEGE:
{
if (0 != m_SiegeDetailTimeInfo.m_cDay)
{
tempTime = CTime(nowTime.GetYear(), m_SiegeDetailTimeInfo.m_cMonth, m_SiegeDetailTimeInfo.m_cDay,
m_SiegeDetailTimeInfo.m_cHour, m_SiegeDetailTimeInfo.m_cMinute, 0);
dwDuration = m_SiegeDetailTimeInfo.m_dwDuration;
if (IsSiegeWarTime())
bRequestEndTime = true;
}
else
{
return 0;
}
}
break;
case GameTime::NEWZONE:
{
if (0 != m_EnterDetailTimeInfo.m_cDay)
{
tempTime = CTime(nowTime.GetYear(), m_EnterDetailTimeInfo.m_cMonth, m_EnterDetailTimeInfo.m_cDay,
m_EnterDetailTimeInfo.m_cHour, m_EnterDetailTimeInfo.m_cMinute, 0);
dwDuration = m_EnterDetailTimeInfo.m_dwDuration;
if (IsEnterTime())
bRequestEndTime = true;
}
else
{
return 0;
}
}
break;
case GameTime::EVENT:
{
if (0 != m_EventDetailTimeInfo.m_cDay)
{
tempTime = CTime(nowTime.GetYear(), m_EventDetailTimeInfo.m_cMonth, m_EventDetailTimeInfo.m_cDay,
m_EventDetailTimeInfo.m_cHour, m_EventDetailTimeInfo.m_cMinute, 0);
dwDuration = m_EventDetailTimeInfo.m_dwDuration;
if (IsEventTime())
bRequestEndTime = true;
}
else
{
return 0;
}
}
break;
}
CTimeSpan tempSpan(tempTime - nowTime);
if (bRequestEndTime)
{
tempSpan += dwDuration * 60;
}
if (tempSpan.GetTimeSpan() > 0)
{
return static_cast<unsigned long>(tempSpan.GetTimeSpan());
}
return 0;
}
bool CGameTimeMgr::IsGuildWarTime() const
{
switch (m_cNowGuildTime)
{
case GameTime::GT_GUILD_WAR:
case GameTime::GT_PREPARE_END_30:
return true;
default:
return false;
}
return false;
}
bool CGameTimeMgr::IsRealmWarTime() const
{
if (GameTime::RT_REALM_WAR == m_cNowRealmTime || GameTime::RT_REALM_WAR_END_5 == m_cNowRealmTime)
return true;
return false;
}
bool CGameTimeMgr::IsSiegeWarTime() const
{
if (GameTime::ST_SIEGE_WAR == m_cNowSiegeTime || GameTime::ST_PREPARE_END_5 == m_cNowSiegeTime)
{
return true;
}
return false;
}
bool CGameTimeMgr::IsEnterTime() const
{
if (GameTime::ET_ALLOWENTER == m_cNowEnterTime || GameTime::ET_PREPARE_END_5 == m_cNowEnterTime)
{
return true;
}
return false;
}
bool CGameTimeMgr::IsEventTime() const
{
if (GameTime::EVENT_NORMAL != m_cNowEventTime)
{
return true;
}
return false;
}
bool CGameTimeMgr::IsGuildWarTime(unsigned char cTime) const
{
switch (cTime)
{
case GameTime::GT_GUILD_WAR:
case GameTime::GT_PREPARE_END_30:
return true;
default:
return false;
}
return false;
}
bool CGameTimeMgr::IsRealmWarTime(unsigned char cTime) const
{
if (GameTime::RT_REALM_WAR == cTime || GameTime::RT_REALM_WAR_END_5 == cTime)
return true;
return false;
}
bool CGameTimeMgr::IsSiegeWarTime(unsigned char cTime) const
{
if (GameTime::ST_SIEGE_WAR == cTime || GameTime::ST_PREPARE_END_5 == cTime)
{
return true;
}
return false;
}
bool CGameTimeMgr::IsEnterTime(unsigned char cTime) const
{
if (GameTime::ET_ALLOWENTER== cTime || GameTime::ET_PREPARE_END_5 == cTime)
{
return true;
}
return false;
}
bool CGameTimeMgr::IsEventTime(unsigned char cTime) const
{
if (GameTime::EVENT_NORMAL != cTime)
{
return true;
}
return false;
}
bool CGameTimeMgr::IsRealmWarReadyTime() const
{
switch (m_cNowRealmTime)
{
case GameTime::RT_PREPARE_START_10:
case GameTime::RT_PREPARE_START_5:
return true;
default:
return false;
}
return false;
}
bool CGameTimeMgr::IsRealmWarReadyTime(unsigned char cTime) const
{
switch (cTime)
{
case GameTime::RT_PREPARE_START_10:
case GameTime::RT_PREPARE_START_5:
return true;
default:
return false;
}
return false;
}