Files
git 9cb257e7ae Add GameClients drops and keep current 1602 source work.
CN1602 is the local client. KR is the official tree with unpacked Data, System, and Sound. Packed .wpk files stay off git.
2026-08-30 23:24:31 +03:00

158 lines
4.5 KiB
C++

#include "stdafx.h"
#include "./Struct.h"
//==================================================================================================
namespace util { namespace internal {
;
struct ZoneTypeCheckNode
{
uint8_t zone_type;
bool acceptabled;
};
}}; //end of namespace
// CHANGES: f110504.2L, internal check utility
bool sMAPINFO_BASE::CheckValidMapKind() const
{
static const util::internal::ZoneTypeCheckNode kZoneTypes[] =
{
{ eZONETYPE_LOBBY , true }, // 0,
{ eZONETYPE_VILLAGE , true }, // 1,
{ eZONETYPE_CHARSELECT , true }, // 2,
{ eZONETYPE_MISSION , true }, // 3,
{ eZONETYPE_HUNTING , false }, // 4,
{ eZONETYPE_QUEST , false }, // 5,
{ eZONETYPE_PVP , true }, // 6,
{ eZONETYPE_EVENT , false }, // 7,
{ eZONETYPE_GUILD , false }, // 8,
{ eZONETYPE_SIEGE , false }, // 9,
{ eZONETYPE_FIELD , true }, // 10,
{ eZONETYPE_CHUNTING , true }, // 11,
{ eZONETYPE_TUTORIAL_FIELD , true }, // 12,
{ eZONETYPE_INSTANCE , true }, // 13,
{ eZONETYPE_DOMINATION_FIELD , true }, // 14,
{ eZONETYPE_AIRSHIP_FIELD , true }, // 15,
{ eZONETYPE_SPA_FIELD , true }, // 16,}
//-----------------------------------
//eZONETYPE_MAX: 17,
};
BOOST_STATIC_ASSERT(_countof(kZoneTypes) == eZONETYPE_MAX);
//
;;;; if (_countof(kZoneTypes) <= this->byMKind) {
SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|")
_T("Msg=index out of ranges, invalid 'MKind(%d)' of the map_code(%d) in world.txt"),
this->byMKind, this->MapCode);
return false;
}
else if (bool blocked_type = (kZoneTypes[this->byMKind].acceptabled == false)) {
SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|")
_T("Msg=invalid 'MKind(%d)' of the map_code(%d) in world.txt"),
this->byMKind, this->MapCode);
return false;
}
else if (this->byMKind == eZONETYPE_LOBBY && this->MapKind != 11001) {
return false;
}
else if (this->byMKind == eZONETYPE_CHARSELECT && (this->MapKind != 11002 && this->MapKind != 11000)) {
return false;
}
else if (this->byMKind == eZONETYPE_MISSION && this->MapCode >= MAX_MISSION_NUM)
{
SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|")
_T("Msg=invalid mission map code (%d) in world.txt|"),
this->MapCode);
return false;
}
return true;
}
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
AttendanceInfo::AttendanceInfo()
{
init(0, 0, eATTENDANCE_SUPERPOSITION, eATTENDANCE_INFO_NOT_ATTEND);
}
void AttendanceInfo::init( DWORD year, BYTE month, eATTENDANCE_TYPE type, eATTENDANCE_INFO info )
{
for (int i = 0; i < kRecordMaxCount; ++i)
{
m_info[i] = info;
}
m_month = month;
m_year = year;
m_type = type;
}
eATTENDANCE_INFO* AttendanceInfo::GetAttendance( int day )
{
if (day < 0 || kRecordMaxCount <= day)
{
return NULL;
}
return &m_info[day];
}
bool AttendanceInfo::SetAttendance( int day, eATTENDANCE_INFO info )
{
if (day < 0 || kRecordMaxCount <= day)
{
return false;
}
m_info[day] = info;
return true;
}
bool AttendanceInfo::IsEqualAttendanceInfo( int day, eATTENDANCE_INFO type )
{
eATTENDANCE_INFO* attendance_info = GetAttendance(day);
if (attendance_info != NULL && *attendance_info == type)
{
return true;
}
return false;
}
int AttendanceInfo::GetAttendanceInfoCount( eATTENDANCE_INFO type )
{
int count = 0;
for (eATTENDANCE_INFO* it = begin(); it != end(); ++it)
{
if (*it == type)
{
++count;
}
}
return count;
}
#endif // _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008283_20150511_NOTIFICATIONS_SYSTEM
void NotificationInfo::SetInfo( const TCHAR* char_name, MAPCODE map_code, DWORD time, NotificationType notification_type, SLOTCODE item_code, int option_value1 /*= 0*/ )
{
_tcsncpy(m_char_name, char_name, _countof(m_char_name));
m_map_code = map_code;
m_item_code = item_code;
m_time = time;
m_notification_type = notification_type;
m_optione_value1 = option_value1;
}
void NotificationInfo::Clear()
{
memset(m_char_name, 0, _countof(m_char_name));
m_map_code = 0;
m_item_code = 0;
m_time = 0;
m_notification_type = eNotificationNone;
m_optione_value1 = 0;
}
#endif // _NA_008283_20150511_NOTIFICATIONS_SYSTEM